【杂记-利用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发过来的序列号加一后所得的数值
(待完成)

相关推荐
小松学前端2 小时前
第六章 7.0 LinkList
java·开发语言·网络
城南vision2 小时前
计算机网络——TCP篇
网络·tcp/ip·计算机网络
Ciderw2 小时前
块存储、文件存储和对象存储详细介绍
网络·数据库·nvme·对象存储·存储·块存储·文件存储
石牌桥网管2 小时前
OpenSSL 生成根证书、中间证书和网站证书
网络协议·https·openssl
Tony聊跨境3 小时前
独立站SEO类型及优化:来检查这些方面你有没有落下
网络·人工智能·tcp/ip·ip
2403_875736874 小时前
道品科技智慧农业中的自动气象检测站
网络·人工智能·智慧城市
Tassel_YUE6 小时前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化
Diamond技术流6 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
Spring_java_gg6 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全