tcp/ip-Wireshark抓包查看三次握手

我们以请求http://xxx.xxx.com首页为例,

1 捕获http

捕获选项-开始捕获

 

添加一个显示过滤器,只显示http请求

 

我们请求下面链接

http://xxx.xxx.com/

2 查看捕获结果

 

我们选中第一条GET / HTTP/1.1,右键-追踪流-tcp,查看tcp层

3 三次握手

上面除了标红的三个tcp请求外,还有一些深底的请求,说明如下:

TCP Out_of_Order的原因分析:

一般来说是网络拥塞,导致顺序包抵达时间不同,延时太长,或者包丢失,需要重新组合数据单元,因为他们可能是由不同的路径到达你的电脑上面。

TCP Retransmission原因分析:

很明显是上面的超时引发的数据重传。

TCP dup ack XXX#X原因分析:

就是重复应答#前的表示报文到哪个序号丢失,#后面的是表示第几次丢失。

tcp previous segment not captured原因分析

意思就是报文没有捕捉到,出现报文的丢失。

3.1 第一次握手

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接

3.2 第二次握手

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的Sequence Number + 1

3.3 第三次握手

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来Sequence Number+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

4 补充分析

首先需要说明,tcp协议传输的是类似这种01011010的序列,计算机中按照字节统计,每8位一个字节。而我们看到的类似7e b0等这种是16进制表示,人类只认识字符,所以下图右下部分显示的是ASCII码。

选中http协议,可以看到下面的http报文

 

 

 

我们单独查看请求行,可以看到请求行后面跟着一个0x0d 0xoa,对照ASCII码为CRLF回车换行健。也就是说请求行和请求头之间有一个空行。

我们再看http报文的最后面

 

有连续两个回车换行。说明请求报文结束,没有请求体

我们再选中tcp层,下面就显示tcp头,里面包含了源端口,目的端口等信息。由于部分二进制串比如SeqNumRaw超过了ASCII吗的范围,故有些字符显示不出来。也有些控制字符同样显示不出来。

 

Tcp报文最大长度65535字节

再往上看,我们可以看到ip协议头,在这里有源ip,目的ip等信息。

数据链路报文头

整个帧,

interface_id网卡的uuid

frame.number帧序列号

其中网卡id和我们系统查询到的一致

 

报文大小和帧大小

Tcp报文最大支持65535字节,

物理帧大小(MTU)由网络设备(比如网卡)决定,由于采用的标准不同,所以各个网络设备的MTU也不同,一般普遍1500字节

当tcp报文经过ip层、数据链路层到达物理层时,网卡发送之前会再次分隔成帧发送出去。到达目的网卡时又重新组装成tcp报文。

posted @ 2022-01-07 20:44  zhenjingcool  阅读(407)  评论(0编辑  收藏  举报