【杂记-利用TCP协议传输数据始末详解】

一、三次握手前:

1、使用TCP协议的原因

TCP协议的目的是为了保证数据能在两端准确、连续的传输。
2、实现多设备传输的基础

TCP协议可使一个设备能同时与多个设备交互信息,它必须要保证不同传输通道之间不会产生串联或相互影响,所以TCP使用Socket数据结构来实现不同设备之间的连接。
3、Socket数据结构的作用

Socket包含两个成分:IP地址和端口号,一个设备可以对应一个IP,其中不同的传输通道用不同的端口号区分开来,于是同一个设备发送给其他不同设备的信息就不会产生混乱。
4、传输控制块TCB的产生

设备可能会产生多种数据并分发给不同的设备,为了确保数据能够正确分发:TCP使用TCB,也叫传输控制块的数据结构把发给不同设备的数据封装起来,该结构看做是信封。
5、TCB的结构

TCB数据块包含数据发送双方的Socket信息,以及装载数据的缓冲区。在两个设备要建立连接和发送数据之前,双方会分配内存建立起TCB数据块。
6、两者需做好准备

无论是客户端还是服务端,在建立连接前都需要准备好TCB数据结构。
7、客户端TCB主动打开

客户端主动向服务器表达自己想建立数据连接的请求,此时TCB状态为:Active Open(Create TCB)。
8、服务端TCB被动打开

由于服务器不知道有哪个设备想向它发起连接,因此在构建TCB模块时会默认将客户端对应的Socket数据初始化为0,服务器保持监听,等待客户端从该端口向它发起连接请求,此时TCB状态为:Passive Open(Create TCB)。
9、TCB已做好准备

双方把自己的Socket和TCB数据结构准备好后,就可以进入三次握手的过程。

二、三次握手时:

11、TCP协议终端两种数据包

一种数据包用来传输数据;一种数据包用来发送控制信息(SYN、ACK等),TCP报头中的标志位用于表明数据包是用于数据发送还是用于传输控制信息。

SYN:Synchronize,同步。

ACK:Acknowledge,确认。
12、TCP报头的标志位

当标志位中的SYN比特位启动时,表明当前数据包目的是实现双方数据状态同步。

当标志位中的ACK比特为启动时,表明数据包用于通知接收方已收到了数据。
13、为数据传输前做的准备

一是客户端通知服务器,"我想建立连接"。二是双方通知对方自己数据发送时的"初始序列号"。三是实现参数交换,把自己的有关信息发送给对方。
14、简述握手时过程

TCP三次握手只是建立连接的过程,和后续的数据传输关系不大。

客户端发送一个SYN数据包给服务端,其中包含了数据的初始序列号。

服务端收到数据包后回发一个SYN+ACK给客户端,其中包含了数据的初始序列号。

客户端收到数据包后,回发一个ACK包。

至此,握手过程结束,双方可以开始互发数据包。
15、初始序列号是随机数

为了防止由于网络波动等原因,先后接收到同一序列号导致握手异常,所以初始序列号是一个随机数,而不是每次都以1开始。
16、握手过程中的初始序列号

客户端把自己的初始化序列号放在SYN数据包中发送给服务端。

服务端收到来自客户端的数据包后,会将客户端的序列号的值加1,同时放入服务端自己的初始化序列号,回发SYN+ACK数据包。

当A收到数据后发送一个ACK数据包其中包含了B发过来的序列号加一后所得的数值
(待完成)

相关推荐
TechWayfarer9 小时前
精度极限的突破:AI与IPv6如何重塑高精度IP查询
人工智能·网络协议·tcp/ip·transformer
天行健,君子而铎9 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
深圳市快瞳科技有限公司13 小时前
宠物门禁端侧AI落地解析:画质检测、活体甄别与离线推理
网络
墨神谕15 小时前
RPC框架与HTTP REST的区别
网络协议·http·rpc
一条泥憨鱼15 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
m0_7156744315 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
大数据·网络·人工智能·网络安全
Tech探索者16 小时前
没有公网 IP、不会端口映射?用 Natfrp 轻松远程访问家中 NAS
网络协议·tcp/ip·智能路由器
HY小宝F16 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
dog25016 小时前
带宽,时延,抖动的不可能三角
网络·tcp/ip
砚凝霜17 小时前
【软考信息安全】第十六章 网络安全风险评估过程与技术方法
网络·安全·web安全