2026/4/14 13:06:06
网站建设
项目流程
网站制作公司拟,wordpress主题更新无法创建目录,夏天做啥网站能致富,餐饮门户网站 方案怎么做这个过程包括 TCP 三次握手、HTTP 请求/响应 和 TCP 四次挥手。
我们使用以下命令来捕获与 httpbin.org 网站进行的一次简单 HTTP 交互#xff1a;
sudo tcpdump -i any -n -s0 host httpbin.org
然后#xff0c;在另一个终端使用 curl 发送一个请求#xff1a;
curl ht…这个过程包括TCP 三次握手、HTTP 请求/响应和TCP 四次挥手。我们使用以下命令来捕获与httpbin.org网站进行的一次简单 HTTP 交互sudo tcpdump -i any -n -s0 host httpbin.org然后在另一个终端使用curl发送一个请求curl http://httpbin.org/get以下是捕获到的数据包序列的详细解读。为了清晰起见我对输出进行了精简和注释并模拟了完整的流程。完整的 HTTP 请求 tcpdump 输出样例与解读阶段一TCP 三次握手 (Establishing the Connection)客户端192.168.1.100需要先与服务器54.xxx.xxx.xxx建立可靠的 TCP 连接。1. [Client - Server] SYN Packet13:37:01.123456 IP 192.168.1.100.58234 54.xxx.xxx.xxx.80: Flags [S], seq 3920617153, win 64240, options [mss 1460,sackOK,TS val 100 ecr 0,nop,wscale 7], length 0解读客户端发送一个SYN(S) 包到服务器的 80 端口。seq是一个随机生成的初始序列号ISN。这是在说“你好我想建立连接我的初始序列号是 3920617153。”2. [Server - Client] SYN-ACK Packet13:37:01.234567 IP 54.xxx.xxx.xxx.80 192.168.1.100.58234: Flags [S.], seq 1982746241, ack 3920617154, win 65535, options [mss 1440,sackOK,TS val 200 ecr 100,nop,wscale 9], length 0解读服务器回应一个SYN-ACK(S.) 包。它确认了客户端的 SYNack 3920617154即客户端的 ISN 1同时也发送了自己的 SYN 和初始序列号 (seq 1982746241)。这是在说“收到你的请求了我同意建立连接我的初始序列号是 1982746241。”3. [Client - Server] ACK Packet13:37:01.345678 IP 192.168.1.100.58234 54.xxx.xxx.xxx.80: Flags [.], ack 1982746242, win 502, options [nop,nop,TS val 101 ecr 200], length 0解读客户端发送一个ACK(.) 包确认服务器的 SYNack 1982746242即服务器的 ISN 1。至此TCP 三次握手完成连接建立。这是在说“收到你的同意了连接已建立我们可以开始传输数据了。”阶段二HTTP 请求与响应 (Data Transfer)连接建立后客户端开始发送 HTTP 请求。4. [Client - Server] HTTP GET Request (PSH-ACK)13:37:01.456789 IP 192.168.1.100.58234 54.xxx.xxx.xxx.80: Flags [P.], seq 3920617154:3920617251, ack 1982746242, win 502, options [nop,nop,TS val 102 ecr 200], length 97解读客户端发送一个PSH-ACK(P.) 包。PSH标志表示数据需要被立刻推送给应用层HTTP服务器。length 97表明这个包携带了 97 字节的应用层数据即我们的 HTTP 请求。HTTP数据内容可使用tcpdump -A查看GET /get HTTP/1.1Host: httpbin.orgUser-Agent: curl/8.8.0Accept:/5. [Server - Client] ACK for the Request13:37:01.567890 IP 54.xxx.xxx.xxx.80 192.168.1.100.58234: Flags [.], ack 3920617251, win 1440, options [nop,nop,TS val 201 ecr 102], length 0解读服务器发送一个ACK(.) 包确认已收到客户端的完整 HTTP 请求ack 3920617251是客户端下一个期待的序列号。6. [Server - Client] HTTP Response (PSH-ACK)13:37:01.678901 IP 54.xxx.xxx.xxx.80 192.168.1.100.58234: Flags [P.], seq 1982746242:1982746685, ack 3920617251, win 1440, options [nop,nop,TS val 202 ecr 102], length 443解读服务器处理请求后发回 HTTP 响应。同样使用了PSH-ACK标志length 443表示这个响应数据包有 443 字节。HTTP数据内容可使用tcpdump -A查看HTTP/1.1 200 OKDate: Tue, 25 Jan 2026 13:37:01 GMTContent-Type: application/json… (其他头部){“args”: {},“headers”: {“Accept”: “/”,“Host”: “httpbin.org”,“User-Agent”: “curl/8.8.0”},“url”: “http://httpbin.org/get”}7. [Client - Server] ACK for the Response13:37:01.789012 IP 192.168.1.100.58234 54.xxx.xxx.xxx.80: Flags [.], ack 1982746685, win 501, options [nop,nop,TS val 103 ecr 202], length 0解读客户端发送一个ACK(.) 包确认已收到服务器的 HTTP 响应。阶段三TCP 四次挥手 (Terminating the Connection)数据交换完成后连接被关闭。curl默认使用 HTTP/1.1通常会发起Connection: close。8. [Client - Server] FIN-ACK Packet13:37:01.890123 IP 192.168.1.100.58234 54.xxx.xxx.xxx.80: Flags [F.], seq 3920617251, ack 1982746685, win 501, options [nop,nop,TS val 104 ecr 202], length 0解读客户端发送一个FIN-ACK(F.) 包表示它已经完成了数据发送希望关闭连接。9. [Server - Client] ACK for the FIN13:37:02.001234 IP 54.xxx.xxx.xxx.80 192.168.1.100.58234: Flags [.], ack 3920617252, win 1440, options [nop,nop,TS val 203 ecr 104], length 0解读服务器确认客户端的 FIN 包。10. [Server - Client] FIN-ACK Packet13:37:02.112345 IP 54.xxx.xxx.xxx.80 192.168.1.100.58234: Flags [F.], seq 1982746685, ack 3920617252, win 1440, options [nop,nop,TS val 204 ecr 104], length 0解读服务器也发送一个FIN-ACK包表示它也准备关闭连接。11. [Client - Server] Final ACK13:37:02.223456 IP 192.168.1.100.58234 54.xxx.xxx.xxx.80: Flags [.], ack 1982746686, win 501, options [nop,nop,TS val 105 ecr 204], length 0解读客户端发送最后一个ACK包确认服务器的 FIN 包。至此TCP 连接完全关闭。总结这个流程完美展示了一个完整 HTTP 事务的底层 TCP/IP 通信过程连接建立3个包 (SYN - SYN-ACK - ACK)数据传输4个包 (HTTP请求 - ACK - HTTP响应 - ACK)连接终止4个包 (FIN - ACK - FIN - ACK)总包数11个在实际捕获中你可能会看到更多ACK包因为 TCP 会持续确认收到的数据或者数据包被分片传输。但这个样例清晰地展示了核心的、最精简的流程。