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

网站制作.com语言新东方英语线下培训学校

网站制作.com语言,新东方英语线下培训学校,空间登录,旅游商城网站订单处理目录 一. TCP协议 二. 确定应答 三. 超时重传 一. TCP协议 1)端口号 源端口号:发送方端口号目的端口号:接收方端口号 16位(2字节)端口号,可以表示的范围(0~65535) 源端口和目的…

目录

一. TCP协议

二. 确定应答

三. 超时重传


一. TCP协议

1)端口号 

  • 源端口号:发送方端口号
  • 目的端口号:接收方端口号
  •  16位(2字节)端口号,可以表示的范围(0~65535)

 源端口和目的端口:表示数据从哪个进程来,到哪个进程去

2)序号/确认序号

  • TCP将每个字节的数据都进行了编号即为序列号。
  • 序号:标识数据包中第一个字节的序号,用于数据排序和可靠传输
  • 确认序号:接收方期望收到的下一个字节的序号

3)首部长度

  •  这里的首部长度指的是报头长度
  •  TCP报头中前20个字节(无选项部分)是固定长度,这里的选项部分可有可无
  •  这里的单位是4个字节,可以表示的大小是60个字节(4*15)

4)保留位

  •  在学习UDP协议的时候,UDP的长度受限于2个字节,如果想要进行扩展,就只能改变报头结构,但是改变结构,就会出现不兼容问题
  • TCP这里使用保留位的机制(占位行为我现在用不到,不代表我以后用不到),如果后面需要扩展,只需要修改保留位就可以实现

5)窗口大小

  •  接收方告诉发送方当前可接收的数据量(单位:字节),用于流量控制
  • 窗口大小的调整是动态的 

6)校验和

  •  校验TCP报头和数据部分的完整性,检测传输错误。
  • 和UDP相同,使用算法,通过对比数据来进行检验

7)紧急指针

  •  仅在URG=1时有效,指示紧急数据的末尾位置

8)选项

  • 可选的TCP头部选项,用于扩展TCP功能。

9)标志位

 TCP最核心的部件

  • URG(Urgent):表示是否包含紧急数据。
  • ACK(Acknowledgment):表示确认号是否有效。
  • PSH(Push):表示是否立即推送。
  • RST(Reset):表示连接是否复位。携带RST标识的称为复位报文段。
  • SYN(Synchronize):表示同步请求/应答。携带SYN标识的称为同步报文段
  • FIN(Finish):表示传输结束。携带FIN标识的为结束报文段。
  • TCP的6位标志位默认为0,当返回相应的报文时,会把该报文位设置位1。

二. 确定应答

 确认应答

 TCP用于保证可靠性,最核心的机制——确认应答

在网络通信过程中,谁也无法100%保证,接收方一定可以收到数据

 这里的可靠性,是指发送方可以知道接收方有没有收到数据


如何判断发送成功?

  • 发送方发送数据,如果接收方收到数据,就会返回一个应答消息
  • 发送方收到了应答消息,则表示数据发送成功

如果发送方一次性发送多条数据,则很有可能会出现后发先至的情况

后发先至

上述就是一个后发先至的情况,先发送的数据最后达到,这样会导致理解发生变化


为什么会出现后发先至的情况?

  • 在网络传输中,大部分都是依靠多个路由器/交换机进行转发信号,很少通过一根网线进行通信
  • 在中间的网络传输中,从发送方到接收方传输的过程中,走的路径可能不同
  • 点路径畅通,有的路径某一时刻传输数据多,造成堵塞情况(堵车),最终导致数据到达的时间有差异

通过引入序号和确认序号,解决后发先至的问题,


 引入序号

  •  就是通过引入序号,可以明确数据收到的顺序
  •  接收方和发送方都希望读取的数据顺序正确,顺序发生错误对逻辑处理会产生影响

 TCP传输数据不是一条一条传输的,TCP传输的单位是字节,TCP的序号和确认序位都是字节

  •  发送方的报头中的序号是起始序号,告诉接收方这段数据是从哪里开始的
  • 载荷中的单位也是字节,每一个字节对应一个序号,载荷中的字节是连续的

确认报文 (ACK)

应答报文:只有报头,没有载荷

  • 接收方每次收到数据都会返回一个应答报文,在应答报文中,使用确认序号返回一个字节
  • 确认序号:接收到的最后一个字节数加1 

如何区分应答报文?  

  • 看标志位 
  • ACK 为 0 表示不是应答报文
  • ACK 为 1 表示是应答报文

确认序号含义:1.这个序号之前的字节都收到了,2.接下来从这个序号开始发送数据


  • 在接收方这里存在一个缓冲区(类似优先级队列),以序号为优先级参考依据
  • 引入这样的机制,可以保证接收的数据都是有序的 

三. 超时重传

在传输的过程中,可能会发生数据丢失现象,这里分为两种发送数据丢失和ACK丢失 

  •  如果发送数据丢失,接收方没有收到,肯定不会返回ack报文
  • 如果接收方收到数据,但是返回的ack报文丢失

 为什么会发生丢包?

 在网络传输的过程中,某个路由器/交换机,突然负载量很高,短时间处理大量数据,超过了负荷,那么多余的部分就会被设备丢弃


发送数据丢失

  •  解决方案很简单,就是再发送一次
  • 这里发送方会等待一定的时间间隔,如果还没有接收到ack报文,则会重新发送一次

ACK报文丢失 

  •  接收方再次发送数据,接收方发现这个数据重复会直接丢弃,然后返回一次ACK应答报文

 无论是数据丢了还是ack报文丢了,发送方是无法区分的,发送方只会再发送一次

接收方会有一个缓冲区,用来接收数据,当数据到达缓冲区,接收方首先会在缓冲区检查,这个元素是否存在或者曾经存在过,如果存在或者存在过,则直接丢弃掉这个数据,确保这个数据不会读取两次


 如何发现重复数据?

 依靠序号

  • 拿着接收方发来的数据,跟缓冲区中的所有序号进行对比,如果有一样的,表示这个数据存在,直接丢弃
  • 这里跟所有的序号对比,一定是从序号小的开始(将缓冲区看成带有优先级的阻塞队列
  • 如果经过对比没有发现这个序号,那么查看最后一次读到的序号
  • 如果读到的最后一个序号是200,那么表示200之前的数据都已经收到了,传来的序号如果比200小,则表示已经收到了这个数据

超时重传,并不是无限次进行重传,也有一定的策略

  • 重传次数有上限,如果多次重传,依旧没有用,则会重置连接,如果重置失败,则放弃连接
  • 重传的时间阈值,会逐渐变大,次数越多,等待的时间越久(频率越低)

如果重传了很多次,依旧没有收到ack应答,说明网络出现了很严重的故障,重传的意义也不大,还不如休息,节省cpu资源 


 点赞的宝子今晚自动触发「躺赢锦鲤」buff! 

http://www.dtcms.com/wzjs/354353.html

相关文章:

  • 有域名之后怎么做网站上海营销公司
  • 外贸展示网站多少钱网络媒体发稿平台
  • 制作企业网站与app有什么不同2020 惠州seo服务
  • 香港做批发的网站有哪些天津百度搜索排名优化
  • java和PHP做网站哪个好6seo百度站长工具
  • 发帖推广平台湖南网站建设seo
  • 兄弟们有没有没封的网站二十条优化措施全文
  • 长春网站建设找新生科技seo优化中商品权重主要由什么决定
  • 合肥怎么做网站域名被墙查询检测
  • 网站建设主题重庆百度推广优化
  • 郑州网站制作公司排名百度导航下载2021最新版
  • 做网站用的主机多少合适seo优化推广技巧
  • 互联网网站建设月总结优化大师破解版app
  • 做pc端网站行业现状百度广告太多
  • 韩国有哪些专业做汽车的网站?宁波seo关键词优化教程
  • 免费游戏推广平台网站优化人员通常会将目标关键词放在网站首页中的
  • 做网站建设公司宁波seo服务快速推广
  • 河南国基建设集团有限公司网站搜外网
  • 一键生成100个原创视频关键词优化上海
  • 濮阳机械设备企业网站建设制作网站大概多少钱
  • 深圳装修设计生产厂家seo点击工具帮你火21星热情
  • 动态网站开发教程网页开发教程
  • 长沙做网站美工的公司市场营销公司
  • 大连门户网站开发职业技能培训网
  • wordpress 分类主题品牌网络seo方案外包
  • 2021成人自考官网上海seo顾问推推蛙
  • 网络下载的网站模板能直接上传到虚拟主机十大广告投放平台
  • 网站建设亿金手指科杰希爱力双效片用后感受
  • 推荐个临汾做网站的品牌营销策划公司
  • wordpress 响应式产品展示站做好网络推广的技巧