主页> seo培训> 【seo培训】TCP三次握手建立连接的过程

【seo培训】TCP三次握手建立连接的过程

北京seo 2022-02-24 18:10 seo培训 70次

TCP 是面向连接的协议,所以每次发出的请求都需要对方进行确认。TCP 客户端与 TCP 服务器在通信之前需要完成三次握手才能建立连接。

下面详细讲解三次握手的过程。 第 1 次握手 第 1 次握手建立连接时,客户端向服务器发送 SYN 报文(SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认,如图所示。

【seo培训】TCP三次握手建立连接的过程

第 2 次握手 第 2 次握手实际上是分两部分来完成的,即 SYN+ACK(请求和确认)报文。

服务器收到了客户端的请求,向客户端回复一个确认信息(ACK=x+1)。

服务器再向客户端发送一个 SYN 包(SEQ=y)建立连接的请求,此时服务器进入 SYN_RECV 状态,如图所示。

【seo培训】TCP三次握手建立连接的过程

第 3 次握手 第 3 次握手,是客户端收到服务器的回复(SYN+ACK 报文)。此时,客户端也要向服务器发送确认包(ACK)。此包发送完毕客户端和服务器进入 ESTABLISHED 状态,完成 3 次握手,如图所示。

【seo培训】TCP三次握手建立连接的过程

SEQ 表示请求序列号,ACK 表示确认序列号,SYN 和 ACK 为标志位。 分析握手过程中字段的变化 我们知道每一次握手时,TCP 报文中标志位的值是不同的。为了更好地分析 3 次握手时每个标志位的变化,下面以抓包方式分析每个数据包的信息。

【实例】使用 Wireshark 捕获 TCP 连接数据包并进行分析。

1) 捕获到 3 次握手包,如图所示。

【seo培训】TCP三次握手建立连接的过程

图中,第 22 个数据包的源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.131。

在 Transmission Control Protocol 中可以看到,Flags 为 SYN,并且值设置为 1,表示该数据包是主机 192.168.59.135 向主机 192.168.59.131 发起的请求,希望建立 TCP 连接。

Sequence number 表示请求序列号 EQ,值为 0,是由主机 192.168.59.135 随机生成的。

2) 选择第 23 个数据包进行查看,如图所示。

【seo培训】TCP三次握手建立连接的过程

该数据包源 IP 地址为 192.168.59.131,目标 IP 地址为 192.168.59.135。

在 Transmission Control Protocol 中可以看到,Flags 为(SYN,ACK),并且将 SYN 置为 1,表示该数据包是主机 192.168.59.131 用来回复主机 192.168.59.135 发送的 TCP 连接请求。

Acknowledgment number 表示 ACK,值为 1。该值是回复主机 192.168.59.135 发来的连接请求 SEQ,因此在 SEQ 的基础上加 1,以代表确认。

Sequence number 值为 0,该值是由主机 192.168.59.131 生成的,是向主机 192.168.59.135 发送的 SYN,表示同意该主机发来的连接请求。

3) 选择第 24 个数据包进行查看,如图所示。

【seo培训】TCP三次握手建立连接的过程

 

源 IP 地址为 192.168.59.135,目标 IP 地址为 192.168.59.131。

在 Transmission Control Protocol 中可以看到,Flags 为 ACK。表示该数据包是主机 192.168.59.135 对主机 192.168.59.131 发来的同意连接数据包后做出的确认回复。

Acknowledgment number 的值为 1,该值是在主机 192.168.59.131 发来的 SEQ 的基础上加 1 得到的。

Sequence number 的值为 1,表示收到主机 192.168.59.131 发来的同意连接数据包后,再次向该主机发送连接请求,表示要连接了。 构造 TCP 三次握手数据包 客户端与服务器通过 3 次握手建立连接,实际上是端口与端口之间的连接。用户可以伪造 3 次握手包,连接指定的端口,或者使用未启用的端口回复连接,以误导连接者,使其认为已经正确连接了端口。构造 3 次握手包需要使用 netwox 工具中编号为 42 的模块。

【实例】已知主机 A 的 IP 地址为 192.168.59.131,端口 443 处于开放状态。主机 B 的 IP 地址为 192.168.59.135,端口 8080 处于开放状态。通过主机 A 连接主机 B,构造 3 次握手。

1) 在主机 A 上构造第 1 次握手包,连接主机 B 的 8080 端口,执行命令如下:

root@daxueba:~# netwox 42 -x -s 192.168.59.131 -d 192.168.59.135 -S 443 -D 8080 -n 2

输出信息如下: IP______________________________________________________________. |version| ihl | tos | totlen | |___4___|___5___ |____0x00=0_____ |___________0x0028=40___________ | | id |r|D|M| offsetfrag | |____________0x2262=8802________|0|0|0|________0x0000=0_________ | | ttl | protocol | checksum | |_____0x80=128___|______0x06=6____|____________ 0x2013__________ | | source | |__________________________192.168.59.131_________________________ | | destination | |__________________________192.168.59.135_________________________ | TCP_____________________________________________________________. | source port | destination port | |____________0x01BB=443__________ |__________0x1F90=8080__________ | | seqnum | |_____________________ 0xA97F8D14=2843708692_____________________ | | acknum | |_________________________0x00000000=0__________________________ | | doff | r | r | r | r | C | E | U | A | P | R | S | F| window | |_ 5_| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0|______0x05DC=1500______| | checksum | urgptr | |___________0x59CC=22988___________|__________0x0000=0__________ | 上述输出信息的 IP 部分为 IP 数据报字段。其中,源 IP 地址为 192.168.59.131,目标 IP 地址为 192.168.59.135。TCP 部分为 TCP 数据报字段。其中,源端口为 443,目标端口为 8080,并且 S 的值为 1,表示 SYN 值为 1。

2) 通过抓包验证的确构造了第 1 次握手包。捕获的数据包如图所示。

本文标题:【seo培训】TCP三次握手建立连接的过程

本文地址:http://www.gzxdxh.com/seopx/65604.html

Tags:

网站分类
标签列表