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

【JavaEE初阶】网络原理——TCP处理先发后至问题

引入序号后,接收方就可以根据编号对数据进行排序

处理先发后至

TCP需要处理后发先至的情况,要先确保应用程序通过socket api 读到的数据顺序是正确的

  • 即使出现后发先至的情况,TCP也要给我处理掉,确保代码里读到的数据(InputStream,read)和发送方写入的数据顺序一致(OutputStream,write)

问题:是从载荷开始编号的吗?

  • 是的,TCP报头不参与编号
  • 序号和确认序号 都是针对载荷的

TCP编号示意图

TCP在接收方这边会安排“接收缓冲区”

  • 接收缓冲区是一段 操作系统内核里的内存
  • 通过网卡读到的数据,会先放到接收缓冲区里,后续代码调用read时,从缓冲区里拿数据

TCP数据包在在接收缓冲区里“排队”

  • 网络有“后发先至”的特点,
  • 有了缓冲区,即使编号靠后的数据包先到了接收方这边,也要按编号排好队
  • 序号小的在前面,序号大的在后面
  • 如果是后面的数据先到,read会继续阻塞,不会开始读数据
  • 确保前面的数据都到了,且都排好队了,read才会解除阻塞

缓冲区示意图

把字节流想象成车队,

  • 一个车队是N个TCP请求,每辆车是一个TCP请求
  • 这N个TCP请求,可能共同表示的是一个应用层数据包
  • 也可能是M个应用层数据包
  • 就看你应用层协议怎么定了
  • TCP不关心应用层咋搞,它只关心 我要传多少个字节?

写代码时,用TCP或UDP的区别:

  • 基于TCP协议写代码的时候,完全不必担心数据顺序的问题,这样代码写起来就方便了
  • 如果是基于UDP协议,要程序员自己实现拆包组包,就要考虑顺序,要自己实现排序逻辑

这一篇给上一篇收了个尾

下一节我们讲TCP核心机制二——超时重传

END✿✿ヽ(°▽°)ノ✿

http://www.dtcms.com/a/541714.html

相关文章:

  • 广州有名的网站建设公司无锡网站建设制作设计
  • 解锁 Playwright 自动化测试:一篇教程入门WebUI自动化测试【入门级】
  • 如何做一个公司网站高校档案馆网站建设
  • wordpress 网站特效找做cad彩拼的网站
  • 多态性:让程序更加灵活与可扩展!
  • 混杂设备驱动
  • 【SpringMVC】Spring MVC 核心全解析:从 MVC 思想到 Web 交互(请求、响应、参数传递全实践)
  • 最专业的手机网站建设磐安建设局网站
  • 做英文行程的网站上海迪士尼乐园官网
  • SAM2学习笔记
  • 基于dcmtk的dicom工具 第十一章 加载dicom文件多帧图数据
  • 建网站多少钱一平方电工证免考拿证
  • 桌面开发,在线%可视化,招聘系统demo,基于python,matplotlib,request,爬虫,数据库无
  • 护照识别接口-高效智能的OCR身份核验新体验-OCR文字识别API
  • 性能测试 | 性能测试工具JMeter直连数据库和逻辑控制器的使用
  • 建站 报价专业网站开发制作公司
  • 手机版网站如何做直接进网站的浏览器
  • 网站建设总结与心得体会颍州网站建设
  • 引力概念中的混乱点:传统物理学与张祥前统一场论对比
  • 通管局报审通关秘籍:网约车平台网络安全防护与保障能力报告
  • 郑州市建设网站wordpress 加斜杠
  • 正规网站建设公司一般要多少钱建设银行面试经验网站
  • [ssh]系统重装后,如何重新设置window免密登录远程linux服务器
  • 网站模板预览与编辑器旅游网站简介
  • 网站建设ppt百度文库注册公司地址可以用家庭地址
  • 学习一下kernel6.12中sugov_iowait_apply的函数逻辑
  • 北京网站开发报价做搜狗网站优化首页软
  • node.js网站开发十大购物网站排行榜
  • ProcDump 学习笔记(6.14):在调试器中查看转储(WinDbg / Visual Studio 快速上手)
  • 正规网站建设报价网站建设案例精粹 电子书