传输层定义
传输层是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。由于一个主机同时运行多个进程,因此传输层具有有复用和分用功能。传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控制、分段/重组和差错控制来保证数据传输的可靠性。传输层的一些协议是面向链接的,这就意味着传输层能保持对分段的跟踪,并且重传那些失败的分段。
传输层包含两个协议(UDP、TCP),这篇文章主要围绕着TCP、UDP来讲。
TCP面向连接协议
在需要(如内存不足)时,通过API通知TCP协
TCP是一种面向连接,可靠的传输层协议,先进行TCP三次握手,在传递应用数据,可以提供确认ACK,流量控制功能(Windows 滑动窗口)
常见TCP应用:(端口号是用来区分不同的网络服务)
- FTP 端口号:20 21
- Http 端口号:80
- Https 端口号:443
- Telnet端口号:21
- SMTP 端口号:25
- POP3 端口号:110
适用场景:TCP适合于可靠性要求较高的应用,如WEB、邮件等。
报文格式:
- TCP数据段由TCP Header(头部)和TCP Data(数据)组成。TCP最多可以有60个字节的头部,如果没有Options字段,正常的长度是20字节。
- 16位窗口大小:表示接收端期望通过单次确认而收到的数据的大小,由于该字段为16位,所以窗口的大小的最大值65545字节,该机制通常用来进行数据流量控制。
- 滑动窗口的流控特性:
- TCP的滑动窗口是动态的,应用根据自身的处理变化,通过本端TCP接收窗口大小控制来对-对端的发送窗口流量控制。应用程序在需要(如内存不足)时,通过API通知TCP协议栈缩小TCP的接收窗口,然后TCP协议栈在下个段发送是包含新的窗口大小通知给对端,对端按通知的窗口来改变发送窗口,以此达到减缓发送速率的目的。
TCP建立连接过程(三次握手):
TCP断开连接过程(四次握手):
UDP用户数据报协议
UDP是一种面向无连接,不可靠的传输层协议,报文简单占用小8byte,所以传输小、效率高,适用于视频等大流量应用,对可靠性要求不高的应用
常见应用:
- DNS 端口53;
- SNMP 端口161;
- DHCP 端口68;
- TFTP 端口69;
- RIP 端口512;
报文格式:报文中不包含确认机制
适用场景:
- UDP适合于实时数据传输,如语音和视频通信
- 相比于TCP,UDP的传输效率更高、开销更小,但是无法保障数据传输的可靠性。而是需要上传应用协议自身提供可靠性保证(如RIP需要通过30S周期更新来保证)
数据转发过程
数据转发过程分为本地转发(同网段)和远程转发(跨网段)两种,而两者的数据转发原理是基本一样的,都是遵循TCP/IP协议簇。
数据封装过程:
数据从高层向低层转发的过程称之为封装;
数据解封装过程:
数据从底层向高层转的过程称之为解封装;