wireshark抓包实验
选择wifi网卡,并设置过滤为ICMP
打开cmd开始ping目标地址www.baidu.com,同时开始捕获
捕获的icmp数据包如下图所示:
如图所示,‘Protocol:ICMP’数据包协议为ICMP,“Type:8 Code:0”表示报文类型为诊断报文的请求测试包。
ICMP协议分析
实验主机为虚拟机kali
IP:192.168.43.66
mac: 00:0c:29:44:6e:f1
ping响应请求报文
开启wireshark捕获数据包,同时ping实验主机
抓取数据包如图所示,数据包的协议有TCP,ICMP,NBNS等
如图所示,选取该数据包:
从报文格式看出ICMP协议是TCP/IP协议族的一个子协议。
如图所示:
IP报文版本号是IPV4,
首部长度:20 bytes,
数据包总长度:60,
标示符:0x971e,
标志:0x0000,比特偏移:0,
寿命:128,上层协议:ICMP,
首部校验和:0xcba2,并且是正确的。
源IP地址:192.168.43.109
目的IP地址:192.168.43.66
类型:8 (回显请求) 代码/编码:0
校验和:0x4d51(正确的校验和)
标示符(大端顺序):1(0x0001);
标示符(小端顺序):256(0x0100);
序列号(大端顺序):10(0x000a)
序列号(小端顺序):256(0x0100)
ping相应应答报文
其中ICMP Type为0
端口不可达报文
取一个黑色的数据包
可看出Type为3,Code为3,可以看出是一个端口不可达的报文
HTTP分析
http回复报文
端口号为80,主机的源端口号为55308,此TCP报文的Sequence Number 为2721
http请求报文
此TCP报文的Sequence Number 为3722561934,Ack number为1
TCP协议分析
三次握手
第一次握手:
客户端发送一个TCP请求报文,标志为SYN(synchronous建立联机)置为1,序列号(SeqSequence number顺序号码)的相对值为0,真值为Seq.No_1=60 f3 ab c9,代表客户端请求建立连接:
第二次握手:
服务器收到请求报文后,向客户端发送确认报文,报文中SYN,ACK(acknowledgement 确认) 均置为1,确认号ack= seq.No_1+1=60 f3 ab c9+1=60 f3 ab ca,即相对值0+1=1。
新的序号seq.No_2=a2 f9 9e 81
第三次握手:
客户端收到服务器的确认报文后,要给服务器回一个确认报文,该确认报文将ACK置为1,确认号ack = seq.No_2+1 =a2 f9 9e 81+1 = a2 f9 9e 82。
新的序号seq.No_3 = seq.No_1+1 = 60 f3 ab c9+1=60 f3 ab ca
四次挥手
第一次挥手:
客户端发送一个连接释放报文给服务器,并停止发送数据,该报文段FIN置1,seq=1,seq.No_1=92 8d c9 19。
第二次挥手:
服务器收到连接释放报文段后发出确认,确认报文段ACK置1,seq=2,相对ACK.No=2确认号ack_2=seq.No_1 + 1=92 8d c9 1a。
新序号seq.No_2=a2 5f cb b3。
第三次挥手:
这时服务器发出连接释放报文段,ACK置1,FIN置1,seq=1,相对ACK.No=2(与上次相同),seq.No_3=61 48 41 e5,确认号ack_3=d0 8e fd d5。
第四次挥手:
客户端收到服务器的连接释放报文段后,回应确认报文,在确认报文中把ACK置为1,确认号ack_4=seq.No_3 +1=61 48 41 e5 + 1=61 48 41 e6,序号seq.No_4=ack_3=d0 8e fd d5。