3.1-3.6: 3.4,3.5
3.1概述
1.运输层协议为运行在不同主机上的应用进程提供了逻辑通信功能,网络层提供了主机之间的逻辑通信
2.运输层协议只工作在端系统中,运输层协议将来自进程的应用报文移动到网络边缘
3多路复用和多路分解:.将主机间交付扩展到进程间交付
4.运输层提供的服务
1)UDP提供的服务:进程到进程间的数据交付和差错检查(两种最低限度的运输层服务),UDP流量不可调节,UDP发送方可根据其意愿以任何速率发送数据
2)TCP提供的服务:除以上外还有可靠数据传输(通过流量控制、序号、确认和定时器)、拥塞控制
3.2多路复用和多路分解
1)多路复用(向下):(从源主机的套接字)收集数据、(附加首部)封装成报文段、(将报文段)传递到网络层
多路分解(向上):接收报文段、(检查字段:目的端口号)标识出套接字、将报文段定向到套接字
2)UDP套接字:二元组,目的IP地址+目的端口号
TCP套接字:四元组,源IP地址+源端口号+目的IP地址+目的端口号
3.3 UDP
1.UDP报文段:首部(源端口号+目的端口号+长度+校验和)+数据
1)长度字段:整个UDP报文段的长度(首部8B+数据)
2)校验和:检查首部和数据部分
发送方首先把全零放入校验和字段并添加伪首部,然后把UDP数据报视为许多16位的字串接起来。若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾填入一个全零字节(但此字节不发送)。然后按二进制反码计算出这些16位字的和,将此和的二进制反码写入校验和字段,并发送。
并发送。接收方把收到的UDP 数据报加上伪首部(如果不为偶数个字节,那么还需要补上全零字节)后,按二进制反码求这些16位字的和。当无差错时其结果应为全1,否则就表明有差错出现,接收方就应该丢弃这个UDP数据报。
*3.4可靠传输
SW(停止等待)
GBN(回退N帧)
SR(选择重传)
*3.5 TCP(传输控制协议)
1.数据偏移字段:TCP首部长度
2. TCP把连接作为最基本的抽象,每条TCP连接有两个端点,TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。TCP连接的端口即为套接字(Socket)或插口,每条TCP 连接唯一地被通信的两个端点(即两个套接字)确定。
3.服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。
4.TCP不能多播、广播(TCP连接总是点对点的)
5.最大报文长度MSS:要保证MSS+TCP/IP首部(通常40字节)不大于MTU(最大传输单元)
以太网和PPP链路层协议:MTU为1500字节,因此MSS的典型值为1460字节
MSS是指报文段里应用层数据的最大长度(也就是TCP报文段的数据部分),不包括TCP首部!
这里的报文长度不同于UDP首部中的长度字段,UDP首部长度是加上UDP首部8比特的总长度
3.6 拥塞控制
TCP发送方的”丢包事件“:要么出现超时,要么收到来自接收方的3个冗余ACK
TCP拥塞控制算法
1.慢启动
cwnd从1开始,指数增长
2.拥塞避免
cwnd从ssthresh开始,线性增长
3.快速恢复
ssthresh=cwnd*0.5
cwnd=ssthresh(+3?)
TCP Reno:超时后慢启动,收到3个冗余ACK后快速回复
TCP Tahoe:都使用慢启动
注*:慢启动阶段cwnd不能超过ssthresh,例如t轮回cwnd=8,ssthresh=12,那么t+1轮回cwnd=12(而不是16),t+2轮回cwnd=13
参考: