ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

tcp

2022-09-06 23:32:21  阅读:211  来源: 互联网

标签:缓存 窗口 重传 ACK tcp TCP 序列号


TCP头部格式:双方端口号,序列号,确认应答号,标志位(ACK,SYN,FIN),窗口大小

序列号:初始序列号为时间循环值,每加一次数据,就累加这次数据字节数,用于解决网络包乱序

确认应答号:下一次期望收到的序列号,在这之前的已经全部收到,不用再发了,用于解决丢包问题

TCP面向连接,何为连接:⽤于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket(IP与端口)、序列号和窗⼝⼤⼩称为连接。

TPC分片:TCP 的数据⼤⼩如果⼤于 MSS ⼤⼩,则会在传输层进⾏分⽚,⽬标主机收到后,也同样在传输层组装 TCP数据包,如果中途丢失了⼀个分⽚,只需要传输丢失的这个分⽚。

UDP分片:UDP 的数据⼤⼩如果⼤于 MTU ⼤⼩,则会在 IP 层进⾏分⽚,⽬标主机收到后,在 IP 层组装完数据,接着再传给传输层,但是如果中途丢了⼀个分⽚,在实现可靠传输的 UDP 时则就需要᯿传所有的数据包,这样传输效率⾮常差,所以通常 UDP 的报⽂应该⼩于 MTU。

第三次握手可以携带数据。

 

查看tcp连接状态:netstat -napt

 为什么要3次握手:

  1.三次握⼿才可以防⽌历史连接初始化连接

  2.三次握⼿才可以同步双⽅的初始序列号与应答号

为什么需要4次挥手:关闭连接时,客户端向服务端发送 FIN 时,仅仅表示客户端不再发送数据了但是还能接收数据,服务器收到客户端的 FIN 报⽂时,先回⼀个 ACK 应答报⽂,⽽服务端可能还有数据需要处理和发送,等服务端不再发送数据时,才发送 FIN 报⽂给客户端来表示同意现在关闭连接。

 

 

TCP重传:

  超时重传:超过一定时间没收到对应ACK,就重传

  快速重传:收到3次同样的ACK,就重传,但不知道传一个还是多个

  SACK(Selective Acknowledgment 选择性确认):基于快速重传,在TCP头中加入SACK,标记哪些数据收到了。

 

滑动窗口:

  窗口大小由接收方来确定,接收窗口大小约等于发送窗口大小

   3个指针(2个绝对指针,1个相对指针)

 

流量控制:

  操作系统缓存区,滑动窗口:缓存区未读数据+当前滑动窗口大小==缓存区大小==最大滑动窗口大小

  丢包问题:减少缓存导致窗口突然变小,无法接受客户端传过来的包,导致丢包,为了避免丢包,规定必须先减小窗口,再减少缓存。

  

 

拥塞控制:

   慢启动:当发送⽅每收到⼀个 ACK,拥塞窗⼝ cwnd 的⼤⼩就会加 1

   拥塞避免算法:慢启动是指数增长,到达阈值后变为线性增长

   拥塞发生:

      超时重传触发:重新变为1

      快速重传触发:折半

标签:缓存,窗口,重传,ACK,tcp,TCP,序列号
来源: https://www.cnblogs.com/sjj123/p/16663720.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有