计网第三章笔记

第三章 运输层

第一课时 传输层服务

1.因为传输层协议是服务于进程之间的通信,所以只在通信的端系统上才有传输层服务,中间的路由器,交换机没有传输层服务。
2.传输层将来自应用层的数据打包成报文段。报文段是传输层协议的数据单元。
3.两个主要协议UDP和TCP,用于绝大部分的应用。

第二课时 UDP

1.UDP特点:best effort,会丢包,会乱序,无连接。
2.UDP优点:无连接,节省存储开销,通信开销,对需要重复性操作的协议和应用友好。如DNS,SNMP等。也可应用于一对多通信的场景。
3.UDP报文段格式:header(64 bits)部分包含发送端口,目的端口,整个报文段的长度(不超过2^16-1 = 65535 bits),校验盒。body部分包含来自应用层的数据。
4.端口号用于使来自网络层的数据对应到各个进程。
5.校验盒用于检测数据是否出错。操作是以16bits为单位切分报文段,然后分别累加,最后将结果取反保存在校验盒里。

△第三课时 可靠数据传输

在不可靠信道里实现可靠的数据传输

1. rdt1.0版本:无丢包无比特差错。

发送端状态:
①等待上层调用,将来自上层的数据打包发送,继续等待。
接收端状态:
①等待来自下层的报文段,将来自下层的报文段解包,将数据传送给上层,回到等待状态。

2. rdt2.0版本:无丢包但有比特差错。

发送端状态:
①等待上层调用,将来自上层的数据打包发送,转为状态②。
②等待接收端发来反馈。若反馈为NAK,重新发送,仍为状态②;若反馈为ACK,回到状态①。
接收端状态:
①等待来自下层的报文段,收到后先进行校验盒检验。若无错,发送ACK,回到状态①。若有错,发送NAK,回到状态①。

3. rdt2.1版本:为了解决冗余数据包的问题。增加了序列号。引入停等协议。

发送端状态:
①等待上层发送序列号为n的数据包,打包发送,转为状态②。
②等待接收端发来反馈。若反馈为NAK n,则重新打包数据包n发送,保持状态②。若反馈为ACK n,则转为状态③。
③等待上层发送序列号为n+1的数据包,打包发送,转为状态④。
④等待接收端发来反馈。若反馈为NAK n+1,则重新打包数据包n+1发送,保持状态④。若反馈为ACK,则转为状态①。
接收端状态:
①等待来自下层的序列号为n的报文段,收到后先进行校验盒检验。若无错,发送ACK n,变为状态②。若有错,发送NAK n,回到状态①。
②等待来自下层的序列号为n+1的报文段,收到后先进行校验盒检验。若无错,发送ACK n+1,变为状态①。若有错,发送NAK n+1,回到状态②。
在rtd2.1我们可以知道由于引入了序列号。当接收方收到冗余数据包时能及时反馈给发送方,并将冗余数据包丢弃。

4. rdt2.2:只使用一种反馈,丢弃了NAK。其余同rdt2.1。
5. rdt3.0:丢包和比特差错都存在。引入定时器检测丢包存在。

发送端状态:
①等待上层发送序列号为n的数据包,打包发送,定时器开始计时。转为状态②。
②等待接收端发来反馈。若反馈为ACK n+1,则重新打包数据包n发送,保持状态②。若反馈为ACK n,则定时器停止计时,转为状态③。当没有接收到反馈,而且定时器超时,重新打包数据包n发送,定时器开始计时。保持状态②。
③等待上层发送序列号为n+1的数据包,打包发送,定时器开始计时。转为状态④。
④等待接收端发来反馈。若反馈为ACK n,则重新打包数据包n+1发送,保持状态④。若反馈为ACK n+1,则定时器停止计时,转为状态①。当没有接收到反馈,而且定时器超时,重新打包数据包n+1发送,定时器开始计时,保持状态④。
接收端状态:
①等待来自下层的序列号为n的报文段,收到后先进行校验盒检验。若无错,发送ACK n,变为状态②。若有错,发送NAK n,回到状态①。
②等待来自下层的序列号为n+1的报文段,收到后先进行校验盒检验。若无错,发送ACK n+1,变为状态①。若有错,发送NAK n+1,回到状态②。

第四课时 流水线型协议

缘由:在rdt3.0下,可以看到可靠数据传输的对带宽资源的使用效率低下,性能较差,因此有了流水线型协议。
1.流水线协议的特点:序列号范围增加,允许多个数据包同时在网络上传输。
2.典型的流水线型协议有:回退N,选择重传。

第五课时 回退N

回退N特点:
①有窗口长度的概念,窗口内为已发送未确认包,和待发送的包。窗口长度n,即允许n个未被确认的数据包同时在网络上传输,
②当收到ACK n时,即n及n以前的数据包被正确收到了。移动窗口,使序列号n+1为窗口内最小的。
③只对窗口内最小的序列号设定时器,当定时器超时后,重新发送所以已发送但为确认的包。
④乱序数据包会被直接丢弃,并且回馈最后一次收到正确的数据包编号。

第六课时 选择重传

选择重传特点:
①窗口概念同回退N
②每个数据包都有一个定时器。因此反馈为ACK n时,不同于回退n,表示序列号为n的数据包收到。未收到反馈,且该数据包定时器超时,便会重新发包。
③接收方收到乱序数据包时,会先缓存下来,等到有序时,再传输给应用层。

第七课时 TCP报文段格式

①TCP特点:1对1,可靠的,按序的,流水线型的,接收方和发送方都有缓存空间,可同时发送和接受,流量控制拥塞控制。三次握手四次挥手。
②TCP报文格式:源端口号(2字节),目的端口号(2字节),序列号(4字节),确认号(4字节)。TCP头部长度(4bits)以4字节为单位,预留6比特位,特殊6比特位。窗口大小(2字节)用于流量控制,校验盒(2字节),紧急指针(2字节)。TCP头部至少20字节
在这里插入图片描述报文段的编号就是一系列message里编号最小的那一个。
确认号就是指希望接收到的下一个包的编号。

第八课时 TCP可靠数据传输

①采用累计确认的方式
②使用单一计时器。
③重传条件:定时器超时(重传序列号最小的那个包,然后定时器重启),三个冗余ACK(快速重传,不等计时器超时)。
④从上层收到数据包后,给每个字节一个编号。报文段编号为报文段里第一个字节的编号。
传输案例

第九课时流量控制

通过调节发送端的速率,避免接收方的缓存溢出。但实际上是调节发送端的发送窗口大小。通常是反馈ACK时,将接收方缓存剩余大小,放在window size的位置,告知发送方。然后发送方将窗口大小就设置为recwindow的大小。在这里插入图片描述

第十课时 TCP连接管理

三次握手客户端发送一个SYN包,将特殊比特位SYN置1,数据部分为空,序列号为x。
服务端也发送一个SYN包,将SYN和ACK位置1,确认号为x+1,序列号为y。
客户端再回复一个ACK包,将ACK置1,确认号为y+1

四次挥手FIN比特位置1,其他同上。要说明的是,如图,在服务器方发送确认ACK后,客户端还可以接受来自服务器的数据但不可向服务器传输数据。直到之后,服务器也发送FIN包,客户端确认后,通信就此结束。

第十一课时 拥塞控制

在这里插入图片描述对比下流量控制和拥塞控制,流量控制的目的是为了不让接收方的缓存溢出;而拥塞控制的目的是为了不让网络本身溢出(也就是不让路由器缓存溢出)。为什么需要拥塞控制呢,可以看下下面的情况。
在这里插入图片描述
在这里插入图片描述第一,如图一,两个主机公用一条带宽,随着 λ i \lambda_i λi的增大, λ o \lambda_o λo的恒定在二分之一带宽。这会导致什么呢,看到图二的第二幅曲线图,由于还有其他开销的影响,当 λ i \lambda_i λi趋于二分之一带宽时,延迟会趋于无穷大。但路由器的缓存有限,因此会形成丢包。这是一种情况。

第二,在第一种丢包的情况下,又需要花费一定的开销去重传,那么实际的传输效率就大大降低了。

第三,在图一的传输路径中多加几个路由器,丢包就意味着到其中某一个路由器的时候,因路由器缓存不够数据被丢弃了,那就意味着浪费了之前路由器传输所用的资源。

这三点很好得说明了拥塞控制的必要性。

第十三课时 TCP拥塞控制机制

我们要注意的时,这是在运输层,是端到端的传输,那么如何通过端到端的传输,得知路由器的缓存情况,从而控制发包速率呢。

我们定义一个拥塞窗口,动态的调节它的值。拥塞窗口和流量控制里的窗口都在TCP数据报头部里占用同样的位置,而TCP是同时调节拥塞窗口和发送窗口的大小的,所以我们取它们之间的最小值即可。

当网络状况不好时,我们便需要调整拥塞窗口的大小。如何定义好和不好呢?正确收到一个ACK,说明网络是畅通的。定时器超时或者收到冗余ACK,我们就知道发生了丢包,说明网络状况糟糕。网络状况好就增加拥塞窗口的大小,网络状况差就减少拥塞窗口的大小。

在这里插入图片描述
拥塞窗口初始大小为1MSS,通信后,每收到一个ACK,窗口大小+1,也就是指数增长,2n。由于指数增长太快,达到设定的某个预值后,线性增长。定时器超时后,将预值设为超时时窗口大小的一半,然后将窗口大小设为1。如果发生三次冗余ACK的情况,说明网络状况有些不好,但不必将窗口重置于1。因为重置于1,再次增长,又需要时间,就会造成带宽的浪费。那么当收到三次冗余ACK时,就将窗口设为现在窗口大小的二分之一。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值