传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP ( Transmission Control Protocol)和用户数据包协议UDP(User Datagram Protocol)。
一、TCP (Transmission Control Protocol)
TCP位于TCP/IP模型的传输层,它是一种面向连接的端到端协议。TCP作为传输控制协议可以为主机提供可靠的数据传输。
TCP端口号
端口号用来区分不同的网络服务。
TCP允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口,每对端口号、 源和目标IP地址的组合唯一地标识了一个会话。
端口分为知名端口和动态端口。
有些网络服务会使用固定的端口,这类端口称为知名端口,端口号范围为0-1023。如FTP、HTTP、Telnet, SNMP服务均使用知名端口。
动态端口号范围从1024到65535,这些端口号一般不固定分配给某个服务。
TCP报文头部
源端口: 数据发送方的端口号。
目的端口: 数据接受方的端口号。
序列号:本数据报文中的的第一个字节的序列号。
确认号:希望收到的下一个数据报文中的第一个字节的序号。
URG:值为1时表示次报文段中有需要紧急处理。
ACK:值为1时确认号有效,值为0时确认号无效。
PSH:值为1时有 DATA数据传输。
RST:值为1时表示TCP连接存在严重的错误,需要重新进行连接。
SYN:值为1表示这是一个连接请求或连接接受报文。
FIN: 值为1表示要发送的数据报已经发送完毕,需要断开连接。
窗口字段:TCP连接的一端根据缓存空间的大小来确定自己接受窗口的大小,限制发送放的窗口上限。
检验和:用来检验首部和数据两部分的正确性。
紧急指针字段:本报文紧急数据的最后一个字节的序号。
二、UDP (User Datagram Protocol)
UDP是一种面向无连接的传输层协议,传输可靠性没有保证。
当应用程序对传输的可靠性要求不高,但是对传输速度和延退要求较高时,可以用UDP协议来替代TCP协议在传输层控制数据的转发。UDP将数据从源端发送到目的端时,无需事先建立连接。UDP采用了简单、易操作的机制在应用程序间传输数据,没有使用TCP中的确认技术或滑动窗口机制,因此UDP不能保证数据传输的可靠性,也无法避免接收到重复数据的情况。
UDP报文头部
UDP头部仅占8字节,传输数据时没有确认机制。
UDP适合于实时数据传输,如语音和视频通信。相比于TCP,UDP的传输 效率更高、开稍更小,但是无法保障数据传输的可靠性。
源端口: 数据发送方的端口号。
目的端口: 数据接受方的端口号。
UDP长度:UDP报文的字节长度(包括首部和数据)。
UDP校验和: 检验UDP首部和数据部分的正确性。