前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java 网络编程】TCP 传输机制 ( 数据拆分 | 排序 | 顺序发送 | 顺序组装 | 超时重发 )

【Java 网络编程】TCP 传输机制 ( 数据拆分 | 排序 | 顺序发送 | 顺序组装 | 超时重发 )

作者头像
韩曙亮
发布2023-03-27 17:04:08
6630
发布2023-03-27 17:04:08
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

I TCP 传输过程

1. TCP 传输过程 : 排序 , 顺序发送 , 顺序组装 ;

  • 排序 : TCP 发送数据时 , 会将数据拆分成不同的片段 , 并对这些片段进行排序 ;
  • 顺序发送 : 将排序好的数据片段顺序发送 ;
  • 顺序组装 : 在接收端按照顺序将数据片段组装成原数据 ;

2. 超时重发机制 : 如果某个数据片没有到达 , 或者送达时间超时 , 接收方会将相关信息反馈给发送方 , 发送方需要将该数据片重新发送 ;

3. 拆分数据作用 ( 节省流量 ) : 当数据没有送达或者超时 , 是需要重新发送数据的 , 如果不拆分数据 , 将一整包数据整体发送 , 如果发送失败 , 需要重新发送整个数据 , 这样就非常浪费流量 ;

4. 数据重发机制 : 服务器端收到客户端发送的数据时 , 其会定时向客户端发送服务器端已经收到的数据 , 如果客户端没有收到服务器端反馈的某条数据已经送达 , 客户端就会认为该数据没有送达 , 客户端重新将该数据重新发送一遍 ;

II TCP 传输示例

1. A 向 B 发送 5 个数据包 :

  • ① 发送第一帧数据 ( 完成 ) : 首先将第一帧数据发送给 B , B 收到 1 数据 , 将收到 1 数据反馈给 A , 表明已经收到了第一帧数据 ;
  • ② 发送第二帧数据 ( 反馈信息未送达 ) : 发送第二帧数据 , 接收方收到了 2 数据 , 但是反馈信息没能发送给 A ;
  • ③ 发送第三帧数据 ( 没有送达 B ) : 发送的第三帧数据没有发送到 B , 中途丢包了 ;
  • ④ 发送第四帧数据 ( 反馈信息未送达 ) : 第四帧数据送达 B , 但是 B 的反馈信息没有送达 A ;
  • ⑤ 发送第五帧数据 ( 完成 ) : 第五帧数据发送到 B , B 的反馈信息也送到了 A ;

2. 重发数据 : 其中第三帧数据没有送达 , 时钟超时 , B 将相关信息发送到 A , A 重发第三帧数据 ;

在这里插入图片描述
在这里插入图片描述
III TCP 传输特殊情况处理

1. 发送过程中没有按顺序到达 : 被拆分的数据包是按照排好的顺序发送到接收端的 , 但是由于网络原因 , 可能到达接收方不是原来的顺序 , 接收方会重新进行排序 ;

2. 丢包情况处理 : 如果发送端在超时时间内没有收到接收端的某个包的反馈信息 , 就会认为该包没有送达 , 在超时后 , 会重新发送该包数据 ;

3. 连接断开情况处理 : 如果连接传输中途断开 , 需要进行重连 , 重连后再次发送数据 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
    • I TCP 传输过程
      • II TCP 传输示例
        • III TCP 传输特殊情况处理
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档