当前位置: 首页 > news >正文

计网复习知识(16)传输层及其协议功能

目录

考研大纲

1.传输层概述

端口号

有连接/无连接传输

可靠/不可靠传输

2.UDP协议

2.1 udp数据报

2.2 udp检验

3.TCP协议

3.1 TCP协议的框架梳理

3.2 TCP报文段****

3.3 三次握手与四次挥手

三次握手

四次挥手

3.4 可靠传输与流量控制

流量控制:滑动窗口机制

可靠传输:确认机制,超时重传与快重传机制

3.5 拥塞控制

拥塞控制介绍

慢开始和拥塞避免算法

快重传与快恢复算法


考研大纲

1.传输层概述

端口号

有连接/无连接传输

可靠/不可靠传输


2.UDP协议

UDP是无连接,不可靠的,不支持拥塞控制,适用于即时性的场景,如直播等

UDP接收的是应用层完整的报文,因此说udp是面向报文的

2.1 udp数据报

UDP数据报理论最大长度为65535B,但受限于IP数据报的长度,所以实际上最大不能超过65515B

UDP数据报示例

总结


2.2 udp检验

首先介绍一个校验方法。发送方取每16bit数据的二进制进行相加(注意“高位回卷”),加完的结果取反,得到同样二进制数的16bit检验和。把原数据和检验和一起发送。那么接收方判断数据是否正确就是同样进行原数据每16bit相加,最后和校验和相加,如果全为1代表正确。

介绍完上面的校验方式,那么就来看看udp校验,其实也是这样的方式。

发送方:

接收方:

真题:


3.TCP协议

3.1 TCP协议的框架梳理

三次握手四次挥手的整体流程

TCP有最大段长限制,同时TCP可以分段,而不像UDP要求传输完整报文,因此TCP也称面向字节流

3.2 TCP报文段****

都是重点

ACK只有在握手阶段的第一次握手为0,之后的全为1.

起始序号不一定从0开始,如下图,可以从500开始

确认号ack-seq:按照教材定义,表示期望接收的下一个序列号是多少

确认后示例,如下图,当接收方已经成功接受了1号和2号这2个报文段,那么他可以返回的ack-seq = 2500,表示2500之前的字节都成功接收了,期望接收的下一个序列号从2500开始

数据偏移:其实就是TCP首部的长度;跟IP数据报的首部是一样的,回忆一下,418:首总偏,ip数据报的首部也是X 4B。

SYN只有在握手1和握手2时 == 1,表示请求连接和连接接受

FIN只有在挥手1和挥手3时 == 1,表示数据发送完毕,要求释放连接

示例

窗口字段

示例,例如主机B的TCP协议给进程2分配的接收缓冲区为2500B,现在他已经接收了1和2这两个报文段了,剩500B,那么返回的rcvwnd=500

校验和字段

选项字段和MSS


3.3 三次握手与四次挥手

三次握手

三次握手中的字段变化

注意下边左右连接的区别,主要是在握手3,握手3是可以不携带数据的

真题,题目求的是握手2服务端要发送的TCP段的值,SYN =1在握手1和2中,所以这里是SYN =1;ACK只在握手1里为0,所以这里ACK = 1;seq是服务器自己设置要发送的起始字节,随便都可以的,这里不能用来判断;ack = 11220+1=11221,这里能确定。所以选c

三次握手中TCP状态变化

三次握手中连接耗时


四次挥手

字段的变化

tcp状态变化

连接耗时计算

真题,就是上图算连接耗时,客户端进入close的时间= 1倍RTT + 2MSL = 50 + 1600 =1650,服务器进入close的时间 = 1.5倍RTT = 75。


3.4 可靠传输与流量控制

可靠传输在数据链路层也有,二者有很多相似之处。数据链路层是以帧为单位进行重传确认,而TCP是以TCP段进行重传确认。流量控制同样在数据链路层也有,也是滑动窗口机制。

流量控制:滑动窗口机制

确认号与接收窗口的大小会在TCP首部中。

发送窗口不能超过自己的发送缓冲区;也不能大于对方的接受窗口。

扩展:一个端口可以建立多个TCP连接


可靠传输:确认机制,超时重传与快重传机制

可靠传输依靠确认机制和重传机制实现,确认机制就是接收方返回ACK段。重传机制有超时重传与快重传,这二者的差别在于接收方是返回确认ACK段的时机,因为确认机制返回ACK的时机是“推迟确认”,快重传会让确认机制变为“立即确认”。

累计确认

捎带确认

超时重传场景:

情况1:客户端发出的报文段丢失

情况2:服务器返回的ACK段丢失

快重传机制

下面是推迟确认下的重传的场景,当发送方连续发送的4个报文段中有报文段丢了,那么由于推迟确认,最后发送方要重发一堆的报文段,这会导致浪费,毕竟只是丢失了其中某个报文段,没必要重传一堆报文段。

推迟后发送一个ACK如下

发送方接收到ACK后调整自己的窗口,可以看到23,24,25已经在之前发送了而且他们的计时器还没超时,所以这时候是得等待超时才能重发的。

而快重传就是来解决这种问题,每收到一个报文段就立即返回确认。如果发送方收到三个冗余确认号相同的ACK,就立即重传对应的报文段。按照图示,应当是收到1+3个确认后相同的ACK。

真题


3.5 拥塞控制

拥塞控制介绍

考题中假设接收方采用的确认机制都是“立即确认”。

引发超时重传--因为默认考题中的接收方采用的是“立即确认”,那么发出的报文未能按时收到ACK就表明网络拥塞严重了。

引发快重传--接收方“立即确认”能够按时发送冗余ACK给发送方,说明发送方有报文丢失,但网络情况没那么严重,因为发送方还能按时收到多个冗余ACK触发快重传。

上图中发送窗口的上限制 看做等于 拥塞窗口,也就是默认接收窗口一直大于拥塞窗口的情况。

慢开始和拥塞避免算法

按照上图和下图理解,很透彻。

慢开始阶段拥塞窗口(即发送窗口)是指数型增长,当到达阈值后每次只能+1。当发生超时重传(网络拥塞严重)就恢复慢开始(拥塞窗口重置为1,同时将阈值设为 此前的窗口值/2)。如此反复。

真题

注意:发送窗口 = min(拥塞窗口,接收窗口),题目中的乙的16KB接收缓存就是接收窗口,不被取走意味着接收窗口只会越来越小。


快重传与快恢复算法

我们说快重传是网络不那么拥塞的情况。快重传触发时阈值与拥塞窗口相等,等于发生时的拥塞窗口的一半,因此同样触发了拥塞避免(一次只能加1个拥塞窗口)。注意:拥塞窗口最小要大于等于2。

http://www.xdnf.cn/news/1034947.html

相关文章:

  • 贝塞尔曲线:优雅的数学艺术
  • C# 解析 URL URI 中的参数
  • OpenWrt | 解决NTFS格式的硬盘意外断电之后无法再次挂载的问题
  • 轻量免安装 透明背景图标一键提取,系统文件图标随取随用
  • NGINX 四层共享内存区同步模块实战 `ngx_stream_zone_sync_module`
  • qml显示svg矢量图形
  • FreeRTOS的低功耗Tickless模式
  • RLHF调参实战手册:实用Trick、现象排查与解决思路(持续更新)
  • 动态BGP服务器的用途都有什么?
  • Softhub软件下载站实战开发(二):项目基础框架搭建
  • 萌系盲盒陷维权风暴,Dreams委托David律所已立案,速避雷
  • 历史数据分析——贵州茅台
  • LeetCode[106]从中序和后序遍历序列构造二叉树
  • Sngine 4.0.4海外社交平台PHP源码 – 多语言支持短视频和博客订阅(源码下载)
  • [学习] 多项滤波器在信号插值和抽取中的应用:原理、实现与仿真(完整仿真代码)
  • 使用Three.js创建炫酷的3D玻璃质感动态效果
  • 大小端的区别
  • MiniCPM4端侧AI模型
  • 机器学习算法_支持向量机
  • 图数据库(TuGraph)
  • DataX 框架学习笔记
  • GDI 区域检测与边框宽度的关系
  • 实习记录1
  • ImportError: DLL load failed while importing win32api: 找不到指定的模块
  • 18.vue.js的scoped样式隔离?原理和使用?(1)
  • 在线五子棋
  • 【Docker基础】Docker核心概念:命名空间(Namespace)与资源隔离联系
  • 从0开始学习R语言--Day23--稳健回归
  • 电路问题处理:SGMII链路中的AC耦合电容摆放位置
  • 轮廓 裂缝修复 轮廓修复 填补孔洞 源代码