欢迎来到云服务器

系统配置

利用tcpdump阐明HTTP请求完整理会

tcpdump是Linux下的截获阐明网络数据包的东西,对优化系统机能有很大参考代价。

一 安装

tcpdump不是默认安装的,在CentOS下安装:


yum install tcpdump

在Ubuntu下安装:


apt-get install tcpdump

二 开始截获

tcpdump执行很简朴,就直接输入即可,不外这样会截获全部的数据包,目眩凌乱,显示的内容基础没有步伐用。一般城市为它加上参数,好比:

最常用的是截获某IP的主机的网络数据包:


tcpdump host 192.168.0.123

三 阐明一次完整请求

为简朴明白起见,我截获了一段“清洁”的数据包,显示了本机对某URL提倡的一次请求的全进程:


23:30:01.828266 IP 192.168.0.251.34245 > li527-105.members.linode.com.http: Flags [S], seq 2340440979, win 14600, options [mss 1460,sackOK,TS val 237397584 ecr 0,nop,wscale 7], length 0
23:30:01.931109 IP li527-105.members.linode.com.http > 192.168.0.251.34245: Flags [S.], seq 64288983, ack 2340440980, win 14480, options [mss 1440,sackOK,TS val 3220226885 ecr 237397584,nop,wscale 7], length 0
23:30:01.931221 IP 192.168.0.251.34245 > http://www.server110.com/.http: Flags [.], ack 1, win 115, options [nop,nop,TS val 237397594 ecr 3220226885], length 0
23:30:01.931544 IP 192.168.0.251.34245 > li527-105.members.linode.com.http: Flags [P.], seq 1:133, ack 1, win 115, options [nop,nop,TS val 237397594 ecr 3220226885], length 132
23:30:02.031923 IP li527-105.members.linode.com.http > 192.168.0.251.34245: Flags [.], ack 133, win 122, options [nop,nop,TS val 3220226987 ecr 237397594], length 0
23:30:02.032171 IP li527-105.members.linode.com.http > 192.168.0.251.34245: Flags [P.], seq 1:323, ack 133, win 122, options [nop,nop,TS val 3220226988 ecr 237397594], length 322
23:30:02.032233 IP 192.168.0.251.34245 > li527-105.members.linode.com.http: Flags [.], ack 323, win 123, options [nop,nop,TS val 237397604 ecr 3220226988], length 0
23:30:02.034852 IP 192.168.0.251.34245 > li527-105.members.linode.com.http: Flags [F.], seq 133, ack 323, win 123, options [nop,nop,TS val 237397605 ecr 3220226988], length 0
23:30:02.139101 IP li527-105.members.linode.com.http > 192.168.0.251.34245: Flags [F.], seq 323, ack 134, win 122, options [nop,nop,TS val 3220227091 ecr 237397605], length 0
23:30:02.139233 IP 192.168.0.251.34245 > li527-105.members.linode.com.http: Flags [.], ack 324, win 123, options [nop,nop,TS val 237397615 ecr 3220227091], length 0

TCP协议要成立毗连要颠末3次“握手”,截取的数据包也是从3次握手开始,可以看到前三个包的状态(Flags)别离是:

 [S]、[S.]、[.]

首先是客户端向处事端发送一个10位的序号给处事端;处事端收到后把它+1再返回归去;客户端查抄返返来的序号是对的,就返回给处事端一个1。按照上面的描写,韩国云服务器 美国云主机,知道这三个包满意:第一个包的seq+1=第二个包的ack;第三个包的ack=1

毗连成立了之后就是详细的数据交互了,tcpdump剧本加-X参数可以通过十六进制和ASCII方法显示出详细的数据内容,这里略过。

TCP协议要断开毗连要颠末4次“挥手”,上面数据包的最后3条就是挥手的进程。细心的伴侣会发明前面说的4次挥手,却只有3个包,这不是笔误。

最后三个包的状态别离是:

[F.]、[F.]、[.]

首先是客户端发一个序号汇报处事器我要断开,处事器说行,处事器发回一个序号,说断开吧,客户端说:“断!”

四次挥手之所以只能看到3个数据包是因为:ACK延迟发送机制。为了提高机能,TCP在收到ACK之后会攒起来而不是当即发送的,在几种环境下才会发送:

1 高出MSS(可以领略为攒得太多了,放不下了)
2 有FIN
3 系统配置为禁用延迟(TCP_NODELAY)

腾讯云代理

Copyright © 2003-2021 MFISP.COM. 国外vps服务器租用 梦飞云服务器租用 版权所有 粤ICP备11019662号