IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 传输控制协议TCP详解:TCP报文段,连接,可靠传输,流量控制和拥塞控制 -> 正文阅读

[网络协议]传输控制协议TCP详解:TCP报文段,连接,可靠传输,流量控制和拥塞控制

一、TCP报文段的首部格式

413d7078b24148808643437ad22e75a9.png

  1. 源端口目的端口各占2字节,分别填源端口号和目的端口号;
  2. ?序号报文段序号):占4字节(0~232-1),表示本报文段发送的第一个字节的序号(TCP连接中传送的字节流中每一个字节都按顺序编号)。如本报文段序号为21,携带100字节的数据即最后一个字节的序号为120,则下一个报文段的序号为121;
  3. 确认号:占4字节,期望收到的对方下一个报文段的序号。如已确认收到带100字节数据的序号为21的报文段,则在发送的确认报文中,将确认号置为121。
  4. 数据偏移:占4位,TCP报文段的首部长度,以4字节为计算单位。最大15能表示60字节,固定首部长度20字节,所以选项最多40字节。
  5. 保留位暂无定义,为0;
  6. URG紧急:URG=1时,表示紧急指针字段有效:告诉该报文段有紧急信息,发送方的TCP就将紧急数据插入到本报文段数据的最前面,配合紧急指针字段使用;
  7. ACK确认:ACK=1时,确认号字段才有效。TCP规定,在建立连接后传送的所有报文ACK都置1;
  8. PSH推送:发送方希望快速得到响应时将PSH置1,接收方TCP收到PSH置1的报文后,立即交付接收应用进程,而不是等到缓冲区满;
  9. RST复位:置1表示出现严重错误需要立即释放连接并重新建立,还表示拒绝一个非法报文或拒绝打开一个连接;
  10. SYN同步:在建立连接时用来同步序号,置1表示这是一个请求连接或同意连接报文;
  11. FIN终止:用来释放连接,置1表示数据传输完毕,请求释放连接;
  12. 窗口:占2字节,表示自己的接收数据缓存空间还剩的字节数:明确指出现在允许对方发送的数据量;
  13. 校验和:占2字节,包括首部和数据以及伪首部(同UDP,包含源IP,目的IP,类型协议和长度,只是计算时加入,既不向上递也不向下传,接收时数据从所在IP分组中提取)每16位求和取反,校验时同样计算比对;
  14. 紧急指针:占2字节,仅在URG=1时有效,指出紧急数据末尾在报文中的位置,在窗口为0时紧急数据仍可发送;
  15. 选项:长度可变,最长为40字节。如MSS选项(每个TCP报文段中数据字段的最大长度:避免因数据过短利用率低,过长分片重组开销大),窗口扩大选项(窗口字段16位表示的64K字节不足以使用时),时间戳选项(用来计算往返时间TTL和防止序号绕回:区分新报文段和迟到很久的报文段)和选择确认选项等。

二、TCP的连接

1、连接建立:采用客户/服务器模式,主动发起连接的应用程序为客户。

?718e776c19ce4cb2a8a9d2beb7006720.png

  1. ?A和B的TCP服务进程首先创建传输控制块TCB(存储每个链接的重要东西:如TCP连接表,发送和接收缓存的指针,指向重传队列的指针,当前的发送和接收队列等);
  2. A向B发送请求连接报文段:SYN置1同时为自己选择一个初始序号seq=x;
  3. B同意连接后发送确认SYN和ACK置1同时为自己选择一个初始序号seq=y,确认号ack=x+1(规定SYN=1的报文不携带数据,但是会消耗一个序号);
  4. A收到B的确认后向B发送确认:ACK确认位置1,序号seq=x+1,确认号ack=y+1(若A没有再次发送确认,即没有第三次握手,则A发送的无效请求(超时到达被重发的请求)再次到达B时B会建立新的连接,但A并没发出请求会造成资源浪费);
  5. 保活计时器:为防止客户主动建立连接后故障,服务器持续等待的情况,服务器每收到一次客户的数据就重设保活计时器。

2、数据传送

  • 数据传送:若A先向B传送数据,序号seq=x+1,确认号ack=y+1(规定确认报文可以携带数据,但是不携带数据时不消耗序号),A和B处于已连接状态ACK始终置1。

3、连接释放:四次挥手

88ec8ef0449841fa9d5abdca9d82f68a.png

  1. ?A先向B发送释放连接报文FIN置1,序号seq=u=A发送的前一个报文数据最后一个字节+1,并进入终止等待1状态;
  2. B收到后发送确认,ACK置1,序号seq=v=B发送的前一个报文数据最后一个字节+1,确认号ack=u+1(FIN=1的报文不携带数据,大消耗1个序号),B进入关闭等待状态,此时A向B的连接已单向断开(A不能再向B传数据),A进入终止等待状态2;
  3. B若还有数据则可继续传送,传送完后向A发送释放连接报文FIN置1,序号seq=w=B发送的前一个报文数据最后一个字节+1,确认号ack=u+1(ACK=1的报文可携带数据,不携带数据时不消耗序号),B进入最后等待状态;
  4. A收到连接释放报文后发送确认:ACK置1,seq=u+1,ack=w+1(FIN=1的报文不携带数据但消耗一个序号),A进入时间等待状态等待2MSL最长报文段寿命):为保证最后一个确认报文到达B;之后才真正断开连接并清除连接持续时间内产生的所有报文段:使下一个新连接中不会出现已失效的旧连接。

三、可靠传输之停止等待协议(自动重传请求ARQ):每发送一个分组后等待收到确认再发送下一个分组

TCP往下的网络层提供的是不可靠的数据连接,所以,TCP必须采取适当有效的措施使得两个传输层之间的通信变得可靠:不产生差错,发送方发送数据速度和接收方接收速度匹配。

19b3fc6198a240f488d1e9cce3dc0752.jpg

  • A在每发送完一次分组后应保留分组副本直到收到确认再清除;
  • ?超时计时器的重传时间应比数据在分组传输的平均往返时间长一些;
  • 信道利用率不高:大部分时间都在等待确认。
  • 以上称自动重传请求ARQ:重传的请求是自动的,接收方不需要请求发送方重传某个出错的分组。

四、可靠传输之滑动窗口协议:流水线发送,而不需要一个个等待确认

ea6b7f756e1b49edbc548bbf6ac65662.png

1、连续ARQ协议(回退N协议GBN)

  • 假设窗口大小为5:在窗口中的5个分组都可以连续发出去,而不需要一个个等待确认;
  • 接收方累计确认:对按顺序到达的最后一个分组发送确认。如上图d,接收方发送确认序号为3,即对方希望下个报文的序号是3,表示3之前的报文都按顺序到达了;
  • 发送方每收到一个确认就将窗口向前滑动,如上图从c到d滑动到2以后的位置;
  • 出现丢失:如上图d,发送方只收到前3个分组的确认,后两个无法直到,于是对后两个分组都进行重传(即使4号已经正确到达而3还在路上)所以又叫做回退N协议。在通信线路质量不好时,连续ARQ协议会带来负面影响。

2、选择重传协议SR

  • ?

五、TCP流量控制

六、TCP拥塞控制

?

?

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:53:47  更:2022-10-22 21:53:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 3:31:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码