UDP、TCP
知识点
运输层:在端系统中而非路由器中实现,为应用进程提供逻辑通信(网络层:为主机提供),将进程提供的报文转换成运输层分组(报文段),划分应用报文并包装。
主要:多路分解(送至不同进程)与多路复用(送至网络层)
UDP 是面向报文的,而 TCP 是面向字节流。
发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
发送方 TCP 对应用程序交下来的报文数据块,视为无结构的字节流(无边界约束,可分拆/合并),但维持各字节
端口号的有效范围是0~65535,大于49151的端口号为动态可分配
校验和P3
UDP
优点
(1)打包应用层传入的数据立即传递给网络层,(TCP拥塞控制)关于发送什么数据以及何时发送数据应用层控制更为精细
(2)无需连接建立
(3)无连接状态,(TCP端系统维护状态)支持更多活跃客户
(4)分组首部开支少
TCP
发送缓存
TCP与应用层之间具有发送缓存,
MSS限制-可从缓存中取出并放入报文段的数据量。MSS针对的是传输层的TCP协议。因为MSS应用的协议在数据链接层的上层,MSS会受到MTU的限制。
MTU限制了数据链接层上可以传输的数据包的大小,也因此限制了上层(网络层)的数据包大小。
例如,如果已知某局域网的MTU为1500字节,则在网络层的因特网协议(Internet Protocol, IP)里,最大的数据包大小为1500字节(包含IP协议头)。
可靠数据传输P8
流量控制
发送窗口接受窗口
将流量控制用于 TCP 数据传输的原因是防止传入数据耗尽接收方资源
拥塞控制
TCP的拥塞控制算法
理解关键在于:一个RTT(网络层概念)意味着:一次发送的所有报文段(运输层概念)ack都被接受到
慢开始:
在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个 MSS 的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以分组注入到网络的速率更加合理。
(MSS是固定值不变,但是发两个报文收到两个ack,所以这里是指数增长)
拥塞避免:
当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延 RTT 就增加一个 MSS 的大小。
(指数增)
快重传算法:发送端只要一连收到三个重复的 ACK 即可断定有分组丢失了,就应该立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时。
??快恢复算法:每收到一个冗余的ack,cwnd++。用3个ack作为一个界定超时与丢失
当原本以为丢失的报文的ack到达:阈值=cwnd的一半,进入拥塞避免阶段(cwnd设置为阈值)
超时:阈值=cwnd的一半,慢启动(cwnd设置为1)
丢失:同超时
上述是Reno版本,在早古的Tahoe算法的快恢复中
当原本以为丢失的报文的ack到达:也是进入慢启动
乘法减小:
是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入到网络中的分组数。
加法增大:
是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口 cwnd 增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
面向连接
TCP的连接与电路交换网络中的端到端的TDM/FDM电路不同,是“逻辑连接”,保存在端系统的TCP程序中。
TCP从应用的发送缓存里取出<=MSS(Maximum Segment Size)的数据
理解封装数据报的过程
数据解封装:流-帧-包-段-数据
传输层的数据叫段 网络层叫包 数据链路层叫帧 物理层叫比特流
网络层的IP协议,尽力而为服务模型,“不可靠