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

协议分层传输、TCP报头与TCP三次握手介绍

文章目录

一、协议层间的数据传输

1.应用层与传输层

1.1应用层 -> 传输层

1.1.1TCP

1.1.2UDP

1.2应用层 <- 传输层

1.2.1TCP

1.2.2UDP

2.传输层与网络层

2.1传输层 -> 网络层

2.1.1在网络层分片

2.2传输层 <- 网络层

2.2.1在网络层组片

二、TCP的报头字段

1.序列号

1.1序列号seq

1.2初始序列号ISN

1.3字节序号轴

1.3.1连接的四元组信息

1.3.1.1四元组不同:互隔发送序号可以重叠

1.3.1.2四元组相同:一致发送序号可能互扰

1.3.1.2.1措施

1.4字节编号

1.4.1报文编号

1.4.1.1有序性

1.4.1.2不适点

1.4.1.2.1编序不稳定

1.4.1.2.2存序不持久

2.确认序号

3.校验和

3.1传输层使用Internet Checksum

3.2链路层使用CRC

漏检

4.数据偏移

5.保留位

三、TCP的机制

网络上传输的错象<1>路径丢包来得缺

1.超时重传->不怕丢

网络上传输的错象<2>超时重传来得重

1.1连续超时的指数退避

网络上传输的错象<3>先发后至来得乱

2.排序去重->不怕重、不怕乱

3.确认应答

3.1捎带确认

3.2针对回复

4.TCP的三次握手

4.1握手意义

4.1.1建立连接(一套SYN+ACK一方建好)

4.1.2协商信息(一套SYN+ACK一方发好)

4.1.2.1初始序号

4.1.2.2TCP选项

4.1.3检测通信(一套SYN+ACK一方测好)

4.2握手技巧

4.2.1约定隐带

4.3握手流程

4.3.1.1客户端内核发送SYN[seq=x]

4.3.1.2服务器内核接收客户端内核发送的SYN

4.3.2.1服务器内核查看SYN的目的端口 是在监听中后 回复SYN+ACK[seq=y, ack=x+1]

4.3.2.2客户端内核接收服务器内核回复的SYN+ACK

4.3.3.1客户端内核回复ACK[ack=y+1]

4.3.3.2服务器内核接收客户端内核回复的ACK


一、协议层间的数据传输

除应用层外,到了传输层与网络层都有隔开单位地独自处理

1.应用层与传输层

1.1应用层 -> 传输层

1.1.1TCP

应用层有连续有序的字节 就可以向TCP流动传的数据TCP选择切装进每个报文里面 再分开单独处理保持应用层写入数据的流动


1.1.2UDP

应用层向UDP每波次传的数据UDP都会分别装放在每个完整的报文单位里面 分开单独处理保留应用层写入数据的边界

协议层传输数据与DatagramPacket:

应用层与UDP之间协议本质上传的是一块字节数据+地址端口等元信息,JavaAPI把它们在应用层封装成了DatagramPacket对象里面装着byte[]、address、port等成员


1.2应用层 <- 传输层

1.2.1TCP

TCP传输层每个TCP报文里面的应用层数据 堆放在无边界的字节流队列里 当前有连续有序的字节 就可向上流给应用层,应用层按量收取字节地处理


1.2.2UDP

UDP传输层每个报文里面的应用层数据每段地向上传应用层选择合并或单独都可以地处理


2.传输层与网络层

2.1传输层 -> 网络层

传输层每个报文地传网络层都会分别地装进每个IP包地 分开单独处理

2.1.1在网络层分片

如果一个传输层报文太大 超过某段链路层可承载的MTU就会把所在的这个IP包拆成多个IP分片来发送


2.2传输层 <- 网络层

网络层每个IP包地向上传传输层出里面每个报文地 分开单独处理

2.2.1在网络层组片

目的主机的IP层 会把IP分片识别地重组回原个IP包,如果某个IP分片丢失 就会放弃重组此包


二、TCP的报头字段

1.序列号

1.1序列号seq

TCP报文头部的序列号标识报文段数据部分第一个字节的编号后面数据的字节默认依次+1得序


1.2初始序列号ISN

TCP建立连接第一次握手时 客户端<->服务器连接的每一发送方向随机生成的起始seq序号,定位字节序号轴使用的起始位置,后续该连接里所有报文的seq、ack都在ISN基础上递增并以ISN为端轴表示出意义区间


1.3字节序号轴

一台主机向每个TCP连接的发送方向都有每条独立的字节序号轴,一条连接里面的每条消息 占在此连接的字节序号轴的不同区间

1.3.1连接的四元组信息

通信的四元组已经确定了哪两个主机里面的哪两个程序在通信

1.3.1.1四元组不同:互隔发送序号可以重叠

不同四元组的TCP连接 里面的消息的发送方向已经互隔 不会误达对方,它们TCP连接生成的ISN起始序号与每个报文使用的seq序列号 可以用同值 意义区间重叠


1.3.1.2四元组相同:一致发送序号可能互扰

同一四元组的先后TCP连接 里面的消息的发送方向相同,旧消息可能送往新连接让外部不同连接环境里分配的旧序号 插排进来打扰排序

1.3.1.2.1措施

(1)窗口悬殊隔离
先后TCP连接生成的ISN起始序号 差值悬殊隔离很远确保旧消息的报文序号不会落入新连接的可接收窗口被误收


(2)关闭等待消失
先连接主动关闭的一方进入TIME.WAIT不让同一四元组的消息复用直到一段时间后网络里有的旧报文自然消失


1.4字节编号

TCP按稳定持久字节编号

1.4.1报文编号
1.4.1.1有序性

TCP按报文编号排序 能使得在传输层的报文有序即外部排的报文有序,再加上报文内部排的字节有序能使得传给应用层的数据字节有序


1.4.1.2不适点
1.4.1.2.1编序不稳定

应用层给TCP传输层传输字节流时TCP可以变式切流装报文应用数据与TCP报文段编序不稳定


1.4.1.2.2存序不持久

TCP传输层给应用层传输字节流时 每个报文里面的数据字节放入字节流队列后 就没有了所在报文的边界 序号也就此消失,应用数据与TCP报文段存序不持久


2.确认序号

确认序号=接收到的最后一个字节的序号 + 1,根据确认序号:

  1. 对应字节序号轴区间 知道是哪个发去的报文 反馈的
  2. 知道此发去的报文 对方已经接收到了哪个字节
  3. 知道对方期望的 下一个收到的序号字节是哪个

3.校验和

3.1传输层使用Internet Checksum

16位为单位使用一补和求和溢出就回卷再加

3.2链路层使用CRC

漏检

校验不同报文的里面 可能会:

  • 有部分的结果小一点 而另部分的结果大一点导致最终相加的和还是相同
  • 不同结果的校验和 16bit空间不够非线性轮回存储地存成相同

4.数据偏移

TCP首部里的数据偏移字段空间占4bit 数值在5~15单位是4字节,表示TCP首部长度在20~60字节

  • 8个字段固定大小地共占20字节
  • 选项字段按4字节填充补齐变化

5.保留位

保留位是为将来的更新新增内容在协议设计时已做好了的 在空间统一扩展的兼容

用光后
以后保留位用光后做不到所有系统再能同时扩展保留位 导致TCP报文空间不同 收发无法兼容,因此:

  1. 选项字段扩展
  2. 重新解释保留位
  3. 定义换用新协议

三、TCP的机制

网络上传输的错象
<1>路径丢包来得缺

丢包主要由网络路径上出问题造成的:

  • 路由器队列满
  • 链路误码
  • 拥塞丢弃
  • 分片丢失
  • 设备故障

TCP和UDP一样概率地丢包,但TCP丢包后有恢复机制

1.超时重传->不怕丢

TCP发送端的发送缓冲区里的重传队列保留还未确认对方接收的已发送数据,出现:

  • 数据段丢失-> 接收端收不到数据
  • ACK丢失-> 接收端已收到数据
  • 网络传输路上太堵数据段到ACK 还没及时到达 -> 接收端会收到数据

就会导致发送端超过一定时间内没收到ACK确认

网络上传输的错象
<2>超时重传来得重

如果是接收端收了的数据重传数据就会重复来

1.1连续超时的指数退避

连续超时重传意味着:

  • 越小概率丢包
  • 越大概率网络拥塞/路径异常/故障

TCP会指数退避地拉长等待时间降低发送频率来对应越小的丢包概率以:

  1. 减少造成无效的重发节省资源
  2. 减缓可能的网络拥塞

网络上传输的错象
<3>先发后至来得乱

网络上传输数据的速度可变不一致先发的网络数据包可能更后才到

2.排序去重->不怕重、不怕乱

TCP的每个连接都分配有一个接收缓冲区,会对发来的TCP报文的数据按序号进行排序+去重缓存乱序段丢弃重复段


3.确认应答

TCP收到对方占有序号的内容(数据、SYN、FIN) 会把接收效果的确认序号放在ACK报文里 按相同四元组发回到同一个连接

3.1捎带确认

ACK可以捎带正好要发的数据 给作报文里的载荷一同发回,但是只是偶然去合并地 不负责作为此条消息的 是针对哪条消息回的标记


3.2针对回复

针对哪条消息回复的标记 是选择写在应用层数据里完成的


4.TCP的三次握手

4.1握手意义

4.1.1建立连接(一套SYN+ACK一方建好)

明动机确知晓通建

  1. SYN明自己有动机
  2. ACK确对方已知晓

=> 由此端通建
×2=> 两端都通建 就能打通 建立连接


建起连接时 也是已完成了的:

4.1.2协商信息(一套SYN+ACK一方发好)

SYN是 TCP协议专门为建立连接 定义的控制报文,在握手阶段里消耗一个序号发送初始序号协商选项参数

发SYN收ACK明确对方接收到交换协商信息:

4.1.2.1初始序号

此端的初始序列号 明确对方接收到后 以后对方回复的ACK单值对应端轴出的接收区间才有正确意义


4.1.2.2TCP选项

互相知道对方接收到了 发的SYN里面自端想要使用的信息地 协商TCP选项参数谈好传输的规则:

  • MSS,希望对方一次发给我的TCP数据 载荷最大多大
  • Window Scale
  • SACK许可
  • Timestamp
  • ECN

4.1.3检测通信(一套SYN+ACK一方测好)

收到ACK/SYN回复测出 通信端点的接发正常、通信道路的来去通顺


4.2握手技巧

4.2.1约定隐带

双方有共建的约定 通信时遵守就能非存储数据形式地 额外隐式带上
ACK消息双方都共建有收到消息后再回的约定,因此ACK消息里面还隐式带有刚发消息对方已收到的约定信息


4.3握手流程

客户端new socket(serverIp, serverPort)触发客户端内核开启三次握手
服务器
new ServerSocket(port)触发服务器内核开启监听该端口后 服务器内核参与三次握手

4.3.1.1客户端内核发送SYN[seq=x]

=>SYN:客户端明自己有动机、客户端向服务器发送协商信息

4.3.1.2服务器内核接收客户端内核发送的SYN

=>SYN:服务器查看客户端的协商信息、服务器测出 客户端发送能力+服务器接收能力正常and客户端->服务器的通信道路通顺


4.3.2.1服务器内核查看SYN的目的端口 是在监听中后 回复SYN+ACK[seq=y, ack=x+1]

=>SYN:服务器明自己有动机、服务器向客户端发送协商信息
->到服务器后查端口监听:说明消息是先到IP主机再查到端口程序
->ack=x+1:握手时的ACK、SYN消息的TCP传输层 是没有应用层数据包载荷的单独报头,因此SYN的seq=x 收到ACK回复的期望值ack=x+1

4.3.2.2客户端内核接收服务器内核回复的SYN+ACK

=>ACK:客户端确对方已知晓 向服务器通建连接、客户端确定协商信息 服务器收到地发好、客户端测出 客户端与服务器的发送接收能力正常and客户端<->服务器的通信道路通顺
=>SYN:客户端查看服务器的协商信息、客户端测出 服务器发送能力+客户端接收能力正常and客户端<-服务器的通信道路通顺


4.3.3.1客户端内核回复ACK[ack=y+1]

=>客户端内核创建 已与服务器建立连接的一个socket实体返回给应用层使用

4.3.3.2服务器内核接收客户端内核回复的ACK

=>ACK:服务器确对方已知晓 向客户端通建连接、服务器确定协商信息 客户端收到地发好、服务器测出 客户端与服务器的发送接收能力正常and客户端<->服务器的通信道路通顺
=>服务器内核创建 会与多个客户端建立连接的一个socket实体把连接放入socket的连接队列里 由accept方法调用转执操作系统内核api把内核里已经完成的连接取到应用层才使用

http://www.jsqmd.com/news/872002/

相关文章:

  • 5大长期记忆系统终极横评!谁是AI Agent的「最强大脑」
  • 什么是AI Agent
  • 如何用嘎嘎降AI处理哲学论文:哲学毕业论文降AI4.8元完整操作教程 - 还在做实验的师兄
  • 心理学论文降AI工具免费推荐:2026年心理学毕业论文知网维普降AI4.8元亲测完整方案
  • Android Studio 打包 React 网页项目
  • Python之anonymous包语法、参数和实际应用案例
  • 利用 TaoToken 多模型聚合能力优化 AIGC 内容生成管线
  • Windows 环境下 NVM 安装与 Node.js 版本管理完全指南
  • 如何用嘎嘎降AI处理自动化论文:自动化毕业论文降AI免费完整操作教程 - 还在做实验的师兄
  • 2026年10款论文降AIGC网站横评:从90%降至10%的靠谱之选
  • Kotlin 跨平台 SqliteNow 全平台数据持久化方案
  • 2026年东莞GEO服务商可信赖排行榜TOP5推荐 - 速递信息
  • 数学论文降AI工具免费推荐:2026年数学毕业论文降AI4.8元知网达标免费完整方案
  • TabNet: Attentive Interpretable Tabular Learning——一种具有可解释性的注意力表格学习模型
  • 航空航天论文降AI工具免费推荐:2026年航空航天毕业论文降AI知网4.8元免费99.26%完整方案 - 还在做实验的师兄
  • Jenkins 构建失败排查记录:mvn -U 把新版依赖被远程旧版覆盖
  • 2026年贵阳室内装修设计全案深度横评:从设计落地到智能家居的品质突围指南 - 优质企业观察收录
  • GDScriptDecomp:让Godot游戏逆向工程变得触手可及
  • ESP-IDF+vscode开发ESP32第十三讲——NVS
  • 华硕笔记本G-Helper显示管理全攻略:从色彩异常到专业校准的5步解决方案
  • 2026 出手闲置名表,西安添价收手表回收安全交易口碑良好 - 薛定谔的梨花猫
  • 使用Taotoken聚合API后项目月度Token消耗与延迟体感观测
  • 论文被吐槽逻辑乱?师姐安利这几个AI写作辅助网站
  • 2026 天津学历提升机构实测排行榜:成考 / 自考避坑指南,这 5 家才是真靠谱 - 商业科技观察
  • MDX-M3-Viewer终极指南:在浏览器中轻松查看魔兽争霸和星际争霸3D模型
  • 2026年贵阳中高端室内装修全案设计深度横评:从设计落地到智能交付的完整避坑指南 - 优质企业观察收录
  • [具身智能-856]:大模型,本质是就是一个执行自然语言的CPU,AI智能体就是组织自然语言让改“CPU”执行
  • 浅谈-机器人运动规划算法-在各类Robot中的落地应用
  • 2026年最新10款一人创业AI开发工具测评榜单
  • 行政管理论文降AI工具免费推荐:2026年行政管理毕业论文AIGC超标4.8元一次过知网完整指南 - 还在做实验的师兄