运输层

每层封装数据

在这里插入图片描述

网络层与运输层之间的关系:网络层提供主机之间通讯,而运输层提供主机进程之间的通讯.
多路复用:将运输层报文字段中的数据交付给正确的套接字的工作
多路分解:在数据块上封装首部信息从而生成报文段,然后将报文段发送网络.

UDP

特点

仅提供多路复用和分解功能
无需建立连接
无连接状态
分组开销小
与TCP比较,因为没有拥塞控制机制,所以能及时传送数据,且分组开销比TCP小而且无需记录连接状态,所以能承受更大的并发,缺点是不保证能到达.可在应用层添加超时重试解决

报文结构

在这里插入图片描述
长度=数据长度+首部数据长度
校验和:用来校验当UDP报文运输到目的过程中,是否数据发生改变.
发送方对所有16位bite的和(若溢出则回卷)进行反码运算得出.

可靠数据传输

停等协议

停等协议就是处于nck~ack状态不在发送新的数据,这样就保证了顺序传递.
在这里插入图片描述

1: 假设连接是可靠的

在这里插入图片描述

2:当连接为不可靠时

通过校验和,接收反馈,重传解决不可靠问题
在这里插入图片描述
在这里插入图片描述
存在问题:发送方不知道接收方是否正确接收了上一个发送的数据

3:通过序号解决顺序传递问题

每个分组发送时,添加序号,1比特存储序号即可
在这里插入图片描述
在这里插入图片描述
存在问题
第一:当发送端接收到同一个分组的多个ack,无法确定接收方有没有正确接收到跟在被确定多次的分组后面的分组
第二:nck多余

4:去掉nck,解决顺序问题

在这里插入图片描述
在这里插入图片描述

5:丢包解决,超时重试

在这里插入图片描述

执行流程

在这里插入图片描述
在这里插入图片描述
这种分组序号不停01交替,也称之为比特交替协议

流水可靠数据传输协议

与停等操作的对比
在这里插入图片描述
在这里插入图片描述
单位时间和吞吐提升三倍.
对比停等协议,有如下改变
在这里插入图片描述
序号可看做一个环,若分组序号比特位可看做k,则序号范围为[0,2^k-1]

解决差错恢复方法

回退N步

GBN协议也称为滑动窗口协议
允许发送多个分组,不许等待确认,但未确认分组不得超过N个.
优点:支持流量控制.
在这里插入图片描述

基于GBN协议的扩展FSM

在这里插入图片描述

在这里插入图片描述

响应过程

在这里插入图片描述
存在问题,当1000未接收,1000之后的数据都要丢失重试.

选择重传

仅重传那些怀疑有问题的分组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

执行流程

流程

存在问题

当接收窗口过大,无法确定接收的是一个新分组还是重传
在这里插入图片描述

在这里插入图片描述
窗口长度<=序号空间1/2即可,
原理
假设序号空间0~3,窗口=3
A发送012给B
B移动到301
B响应A中断
A重试012
则B01覆盖.
也就是说当B第一次接收到数据,第二次移动的位置不能和第一次有重叠.
也就是2
窗口长度<=序号空间
这里的范围就是2*窗口长度<=4
窗口空间<=2
则B当前为23,接收01完美避过覆盖.

总结

在这里插入图片描述
依旧存在问题,序号x分组出现,但是接收方和发送方窗口不包含x.解决办法,确保任何发送的序号x不在网络中出现,给x设置存活时间.

TCP

注意在第三次握手时,可发送数据.
在这里插入图片描述
发送接收过程
在这里插入图片描述

报文段结构

最大报文段长度(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将快速重传
在这里插入图片描述

TCP与选择重传和回退N步的不同

选择重传是没有收到响应的,发送
回退N步是没有接收响应,没接收响应后面分组重传.
与TCP的不用,TCP采用部分GBN,接收方只维护未被确认的最小序号,和下一个字节要发送的字节序号,但是不同的是,当假设N超时时,仅发送N报文,与选择重传不同的是,接收到N~Z报文,不会响应每个报文,而是响应被确认的最小序号

流量控制

每一条TCP连接,主机都设置了接收缓存,相关联的应用程序从缓存中读取数据,当发送的数据速度超过接收方的取出数据速度,直至接收方接收缓存溢出,为了避免这种情况,提供流量控制服务,主要是利用发送方的控制窗口控制速度.
控制窗口=接收方的应用程序从缓存中读出的最后一个数据编号-
从网络中到达的并放入接收方缓存的数据流中的最后一个字节编号

在这里插入图片描述
当接收方窗口为0时,发送方继续发送一个字节的报文段,等待接收方清空缓存,返回一个非0的接收窗口给发送方.

连接过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TCP拥塞控制

拥塞窗口(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种方式

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值