2、TCP和UDP
简介
- TCP(transmission Control Protocol):是一种通信标准,它使应用程序和计算设备能够在网络上交换消息。它的设计目的是在互联网上发送数据包,并确保数据和信息在网络上的成功传递。
- UDP(the User Datagram Protocol):是一种跨Internet的通信协议,特别用于时间敏感的传输,如视频播放或DNS查找。它通过在数据传输之前不正式建立连接来加快通信速度。
TCP
- TCP是面向连接(虚连接)的传输层协议。
- 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
- TCP提供可靠交付的服务,无差错、不丢失、不重复、按需到达。
- TCP提供全双工通信(发送缓存,接收缓存)。
- TCP面向字节流,TCP把应用程序交下来的数据看成仅仅是一连串的无结构字节流。
报文段首部格式:
- 源端口(2B)
- 目的端口(2B)
- 序号(4B):在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本表文段所发送的第一个字节的序号。
- 确认号(4B):期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1位置的所有数据都已正确收到。
- 数据偏移(4bit):首部长度,TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B为单位,即一个数值是4B。
- 控制位(6bit)
- 紧急位URG:URG=1时,表明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用再缓存里排队,配合紧急指针字段使用。
- 确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
- 推送位PSH:PSH=1时,接收方尽快交付应用进程,不用再等到缓存存满再向上交付。
- 复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
- 同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。
- 终止位:FIN=1时,表明此报文段发送发数据已发完,要求释放链接。
- 窗口(2B):指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
- 检验和(2B):检验首部+数据,检验时要加上12B伪首部,第四个字段为6(TCP为6,UDP为17)。
- 紧急指针(2B):URG=1时才有意义,指出本报文段中紧急数据的字节数。
- 选项(可变长度):最大报文段长度MSS、窗口扩大、时间戳、选择确认......
- 填充(保证4B的整数倍)
连接建立
TCP连接管理
TCP连接传输三个阶段:连接建立--->数据传送--->连接释放
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。
建立连接过程(三次握手)
- 客户端发送连接请求报文段,无应用层数据。SYN=1, seq=x(随机)
- 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。SYN=1, ACK=1, seq=y(随机), ack=x+1
- 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。SYN=0, ACK=1, seq=x+1, ack=y+1
连接释放过程(四次挥手)
- 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。FIN=1,seq=u
- 服务器端回送一个确认报文段,客户到服务器这个方向的连接释放了。ACK=1, seq=v, ack=u+1
- 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。FIN=1, ACK=1, seq=w, ack=u+1
- 客户端回送一个确认报文段,在等到实践等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。ACK=1, seq=u+1, ack=w+1
可靠传输
TCP可靠传输的机制:校验;序号;确认;重传。
- 超时重传:TCP咋发送方在规定时间内没收到确认就要重传已发送的报文段。TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
- 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。连续收到3个对于某序号小的报文段的确认,则认为其丢失,重传报文段(快速重传)。
流量控制
流量控制:让发送方慢点,要让接收方来得及接收。
TCP利用滑动窗口机制实现流量控制。
在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口大小,即接收窗口rwnd,发送方的发送窗口的大小=min(接收窗口rwnd, 拥塞窗口cwnd)。
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器 。若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。
拥塞控制
出现拥塞的条件:对资源需求的综合>可用资源。
四种算法:慢开始、拥塞避免、快重传、快恢复。
假定:
- 数据单方向传递,而另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度,发送窗口 = Min{接收窗口rwnd, 拥塞窗口cwnd}

UDP
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP的主要特点:
- UDP是无连接的,减少开销和发送数据之前的时延。
- UDP使用最大努力交付,即不保证可靠交付。
- UDP是面向报文的,适合一次性传输是少量数据的网络应用。
- UDP无拥塞控制,适合很多实时应用。
- UDP首部开销小,为8B(16位源端口号,16位目的端口号,16位UDP长度,16位UDP校验和),TCP为20B。
请添加图片描述
参考
【王道计算机考研 计算机网络】 https://www.bilibili.com/video/BV19E411D78Q/?p=140&share_source=copy_web&vd_source=a2b60e3364b59c2f5872cb3058666cae