一. 传输层的作用
传输层的作用是提供端到端的服务,即程序进程之间的通讯。传输层通过端口号识别同一主机中的不同应用程序,因此,端口号也被称为程序地址。
二. 传输层的协议
想要实现端到端的通信,需要依赖两个非常重要的协议TCP(Transmission Control Protocol,传输控制协议),UDP(User Datagram Protocol,用户数据报协议)。
TCP是一个可靠的、面向连接的协议。它允许网络中两台主机之间进行无差错的信息传输。TCP还可以进行流量控制,以避免数据发送过快而发生拥塞。不过这一切对用户都是透明的。
UDP 采用无连接的方式传送数据,也就是说,发送端不关心发送的数据是否到达接收端、数据是否出错等:接收端也不会告诉发送端是否收到数据。UDP的可靠性由上层协议来保障。
TCP
TCP的特点
面向连接:应用程序在使用 TCP之前,必须先建立TCP连接。完成数据传输后,必须释放已建立的 TCP 连接。
仅支持单播传输: 每条TCP传输连接只能有两个端点(一对一),只能进行点对点的数据传输,不考虑中间网段和节点,不支持多播和广播传输方式。
高可靠性:通过TCP连接传送的数据,能够确保传输数据的正确性,不会出现丢失或乱序等情况。
全双工通信:TCP允许通信双方的程序进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用于临时存放双向通信的数据。
面向字节流:TCP采用字节流方式进行数据传输,即以字节为单位传输字节序列。
TCP首部结构

固定长度:标准首部长度为20字节,若包含选项字段,最大扩展至60字节。
源端口(16位,发送端进程随机生成)与目的端口(16位,接收端进程端口号)
标识通信两端应用进程的端口号,结合IP地址形成唯一连接标识
序号(32位)
标记报文段数据部分的第一个字节在数据流中的位置。初始序号(ISN)在建立连接时由SYN标志置1的报文确定,后续数据字节依次递增。SYN/FIN标志虽不携带数据,但消耗序号资源。
确认号(32位)
仅在ACK标志为1时有效,表示接收方期望收到的下一字节序号(即已成功接收的最后一个字节序号+1)。
首部长度(4位)
以4字节为单位,取值范围5(20字节)至15(60字节),用于定位数据起始位置。
保留位(6位)
预留未来扩展,目前还没用到。
控制标志(6位)
URG:紧急指针有效,数据需优先处理。
ACK:当ACK=1时,确认机制启用。
PSH:为1时要求接收方立即推送数据至应用层。
RST:为1时强制重置异常连接。
SYN:发起连接请求,同步序号。
FIN:为1时正常终止连接。
窗口大小(16位)
接收方通告的可用缓冲区容量(基于确认号起始),用于流量控制。默认最大65535字节,可通过窗口大小控制。
校验和(16位)
覆盖首部、数据及伪首部(含IP地址),确保端到端完整性验证。
紧急指针(16位)
仅在URG=1时有效。
选项字段(可变长度)
TCP的连接

第一次握手
客户端通过将一个含有“同步序列号(SYN)”标志位的数据段发送给服务器而开始请求连接。通过该数据段,客户端告知服务器两点:客户端希望建立连接请求,服务器应答:客户端告诉服务器使用哪个序列号作为数据传输时数据段的起始号。
第二次握手
服务器用一个带有“确认应答(ACK)”和“同步序列号(SYN)”标志位的数据段响应客户端。
它也有两个目的:发送 ACK 通知客户端收到了数据段:通知客户端,服务器的起始序列号是多少。
第三次握手
客户端再次发送一个数据段,确认收到了服务器的数据段,并可以开始传送实际数据,
TCP的连接终止

第一次
服务器向客户端发送FIN和 ACK位置1的 TCP报文段:服务器首先发送一个带有 FIN 标志和 ACK 标志的 TCP报文段给客户端,表示服务器已完成数据传输,请求断开连接。
第二次
客户端向服务器返回 ACK 位置1的 TCP 报文段;客户端收到服务器发送的断开请求后,向服务器发送一个确认报文段,其中包含ACK标志,表示客户端已收到服务器的断开请求,并同意断开连接。
第三次
客户端向服务器发送 FIN 和 ACK 位置1的 TCP 报文段:客户端发送一个带有 FIN 标志和ACK 标志的 TCP 报文段给服务器,表示客户端也希望断开连接。
第四次
服务器向客户端返回 ACK 位置1的TCP 报文段:服务器收到客户端的断开请求后,向客户端发送一个确认报文段,其中包含 ACK 标志,表示服务器已收到客户端的断开请求,并且同意断开连接。
基于TCP的应用
UDP
UDP的特点
无连接:进行数据传输之前不需要先建立连接,也没有各种重传机制,拥塞控制和流量控制,因此传输速度很快,消耗很低,延迟小,数据传输效率高。
支持单播、多播、广播:UDP 不仅支持一对一的传输方式,还支持一对多、多对多、多对一的传输方式,换言之,UDP 提供了单播、多播、广播的功能。
不可靠:只负责数据的发送,不关心数据是否送达,没有确认机制,主机收到数据也不会有响应。
面向报文:TCP 是面向字节传输的,而 UDP是面向报文传输的,对于应用层交下来的报文段不进行拆分合并,直接保留原有报文段的边界,然后添加UDP的首部就交付给网络层。
无拥塞控制:UDP没有拥塞控制机制,网络出现的拥塞不会使源主机的发送速率降低。
UDP的首部结构

源端口号:标识数据发送端的进程,和TCP的端口号类似。
目标端口号:标识数据接收端的进程,和TCP的端口号类似
UDP 长度:指出 UDP的总长度,为首部加上数据。
校验和:完成对 UDP数据的差错检验,它的计算与TCP校验和类似。这是 UDP提供的唯一可靠机制。
三. TCP与UDP的区别

本人是初学者,如有错误的地方请谅解并告知
###本文为作者的笔记分享###

2228


被折叠的 条评论
为什么被折叠?



