网络层与运输层之间的关系:网络层提供主机之间通讯,而运输层提供主机进程之间的通讯.
多路复用:将运输层报文字段中的数据交付给正确的套接字的工作
多路分解:在数据块上封装首部信息从而生成报文段,然后将报文段发送网络.
仅提供多路复用和分解功能
无需建立连接
无连接状态
分组开销小
与TCP比较,因为没有拥塞控制机制,所以能及时传送数据,且分组开销比TCP小而且无需记录连接状态,所以能承受更大的并发,缺点是不保证能到达.可在应用层添加超时重试解决
长度=数据长度+首部数据长度
校验和:用来校验当UDP报文运输到目的过程中,是否数据发生改变.
发送方对所有16位bite的和(若溢出则回卷)进行反码运算得出.
停等协议就是处于nck~ack状态不在发送新的数据,这样就保证了顺序传递.
通过校验和,接收反馈,重传解决不可靠问题
存在问题:发送方不知道接收方是否正确接收了上一个发送的数据
每个分组发送时,添加序号,1比特存储序号即可
存在问题
第一:当发送端接收到同一个分组的多个ack,无法确定接收方有没有正确接收到跟在被确定多次的分组后面的分组
第二:nck多余
与停等操作的对比
单位时间和吞吐提升三倍.
对比停等协议,有如下改变
序号可看做一个环,若分组序号比特位可看做k,则序号范围为[0,2^k-1]
GBN协议也称为滑动窗口协议
允许发送多个分组,不许等待确认,但未确认分组不得超过N个.
优点:支持流量控制.
存在问题,当1000未接收,1000之后的数据都要丢失重试.
窗口长度<=序号空间1/2即可,
原理
假设序号空间0~3,窗口=3
A发送012给B
B移动到301
B响应A中断
A重试012
则B01覆盖.
也就是说当B第一次接收到数据,第二次移动的位置不能和第一次有重叠.
也就是2窗口长度<=序号空间
这里的范围就是2*窗口长度<=4
窗口空间<=2
依旧存在问题,序号x分组出现,但是接收方和发送方窗口不包含x.解决办法,确保任何发送的序号x不在网络中出现,给x设置存活时间.
最大报文段长度(MSS)=最大链路层帧长度(MTU)-TCP/IP首部长度
序号和确认号
序号建立在传送字节流上,主机中的TCP会隐式的对数据流中的每个字节编号,连接双方都可以随意设置序号
假设数据流有500,000字节组成,MSS为1000字节,则TCP将为数据流构建500报文段,从序号0开始.第二个序号为1000
确认号:主机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号
如主机A收到主机B包含字节0~535和900-1000的报文段,主机A会发送确认号为536的报文段,期望主机B发送下一个确认号为536的报文段.
因为TCP确认该流中至第一个丢失字节为止的字节,所以TCP提供累积确认
超时定时器延长过期时间一倍,这样能间接减少网络拥塞,但是带来了更多的延时.
TCP发送方收到3个冗余ACK,则说明已被确认三次的冗余ACK后的报文段丢失,TCP将快速重传
选择重传是没有收到响应的,发送
回退N步是没有接收响应,没接收响应后面分组重传.
与TCP的不用,TCP采用部分GBN,接收方只维护未被确认的最小序号,和下一个字节要发送的字节序号,但是不同的是,当假设N超时时,仅发送N报文,与选择重传不同的是,接收到N~Z报文,不会响应每个报文,而是响应被确认的最小序号
每一条TCP连接,主机都设置了接收缓存,相关联的应用程序从缓存中读取数据,当发送的数据速度超过接收方的取出数据速度,直至接收方接收缓存溢出,为了避免这种情况,提供流量控制服务,主要是利用发送方的控制窗口控制速度.
控制窗口=接收方的应用程序从缓存中读出的最后一个数据编号-
从网络中到达的并放入接收方缓存的数据流中的最后一个字节编号
当接收方窗口为0时,发送方继续发送一个字节的报文段,等待接收方清空缓存,返回一个非0的接收窗口给发送方.
拥塞窗口(cwnd):限制对一个TCP发送方能向网络中发送流量的速率
当拥塞的时候,会造成丢包或者延时过长情况,延时过长意味着发送方会超时,丢包意味着接收方发送三次ACK.也就是说当发送方接收到3次ACK和超时就判定拥塞.
即保证最大速率发送,也能保证不造成网络拥塞
当正常接收ack,则增加拥塞窗口
当出现丢包,减少拥塞窗口
乐观判断路径无拥塞,增加传输速率,当速率变慢,则减少速率.然后再次探测.
分别进入三个阶段
慢启动
拥塞避免
快速恢复
如何执行?
第一次cwnd设置1个mss,当ack,设置2个mss,之后呈指数增长.
何时停止?
1:发现丢包
ssthresh(慢启动阀值)设置为cwnd/2
cwnd重置1
重启慢启动
2:cwnd>=ssthresh
结束慢启动,进入拥塞避免模式
3:检测3个ACK,进入快速重传并进入快速恢复
1:分组到达速率越接近链路容量时,延时越大
2:出现缓存溢出,发送方必须重传.
3:发送方遇到大的延时,当进行重传时,可能会因为链路有一个待发送的分组,从而造成不必要的分组副本发送.
4:当分组由于阻塞被丢弃,则从发送方到整个阻塞丢弃的链路空间就被浪费了.
1:端到端拥塞控制,TCP报文段丢失(超时或三次ACK)被认为拥塞,从而通过减少窗口长度控制
2:网络辅助的拥塞控制,通过路由器发送输出链路上支持的传输速率.如下图,2种方式