likes
comments
collection
share

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

作者站长头像
站长
· 阅读数 31

Wirkshark_HTTP

小伙伴们好呀,这节来分享下这个 ICMP协议 和 curl 访问 http 网站时涉及到的协议。

ARP 协议补充

先补充一下上文的 ARP 协议。

80	35.374000	VMware_c0:00:08	VMware_5b:db:1a	ARP	42	Who has 192.168.200.128? Tell 192.168.200.1
81	35.374560	VMware_5b:db:1a	VMware_c0:00:08	ARP	42	192.168.200.128 is at 00:0c:29:5b:db:1a

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

MAC 地址是 6 字节,前三个是 厂商,后三个是序列化。

ICMP协议

Internet Control Message Protocol,互联网控制报文协议。ping 的时候触发。

这里直接在虚拟机上去 ping 192.168.2.187 (主机地址)

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

14	8.900476	192.168.200.128	192.168.2.187	ICMP	98	Echo (ping) request  id=0x0904, seq=1/256, ttl=64 (reply in 15)
15	8.900943	192.168.2.187	192.168.200.128	ICMP	98	Echo (ping) reply    id=0x0904, seq=1/256, ttl=128 (request in 14)

可以看到,ping 请求时,这个报文的 type 是 8,表示 Echo (ping) request。

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

应答时,这个 type 是 0 ,表示 (Echo (ping) reply)。

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

DNS 协议

域名系统,Domain Name System。

curl www.baidu.com

访问百度时,第一步就是这个 域名解析 了。

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

捕捉的包如下 👇

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

图片对应 21 的请求,可以发现 DNS 基于 UDP(User Datagram Protocol) 用户数据报协议。

同时有个 type 为 A 的类型,这个是请求 ipv4 地址的。

22 那里时 type : AAAA ,这个 ipv6 地址的。

21	14.648767	192.168.200.128	192.168.200.2	DNS	73	Standard query 0x7abe A www.baidu.com
22	14.648817	192.168.200.128	192.168.200.2	DNS	73	Standard query 0xffc7 AAAA www.baidu.com

以前搭建博客时,有个域名解析的环节,那会也要配置解析这个 A (后知后觉~)

下面看看 response 的数据 👇

24	14.683310	192.168.200.2	192.168.200.128	DNS	132	Standard query response 0x7abe A www.baidu.com CNAME www.a.shifen.com A (ipv4地址) A (ipv4地址) 
25	14.688004	192.168.200.2	192.168.200.128	DNS	156	Standard query response 0xffc7 AAAA www.baidu.com CNAME www.a.shifen.com AAAA (ipv6地址) AAAA (ipv6地址) 

CNAME 即 别名记录

长知识了:百度的别名是 www.a.shifen.com

这里也是顺利拿到了 ipv4 地址

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

吃瓜

哦嚯,无意间发现了大公司名字的另一层含义 👇

大家都是 shifen 👍

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

HTTP 协议

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

DNS 解析成功后,拿到了这个 ip 地址,这里用的 ipv4 地址去建立 TCP 连接。

三次握手后,就发送 HTTP 请求了 👇。

29	14.714278	192.168.200.128	xxx.42	HTTP	131	GET / HTTP/1.1 

Get 请求如下,这个的 User-Agent 是 curl (平时见到的都是 浏览器 标志 )

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

这个 TCP 的报文段大小是 77 ,同时 [Next Sequence Number: 78 (relative sequence number)]

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

响应 👇

从 30 这一条开始,这里 ACK = 78 刚好。

30	14.714429	ipv4	192.168.200.128	TCP	54	80 → 44626 [ACK] Seq=1 Ack=78 Win=64240 Len=0
31	14.733343	ipv4	192.168.200.128	TCP	1494	80 → 44626 [PSH, ACK] Seq=1 Ack=78 Win=64240 Len=1440 [TCP segment of a reassembled PDU]
32	14.733714	192.168.200.128	ipv4	TCP	54	44626 → 80 [ACK] Seq=78 Ack=1441 Win=31680 Len=0
33	14.733782	ipv4	192.168.200.128	HTTP	1395	HTTP/1.1 200 OK  (text/html)

主要看 31 和 33 这两条,

PSH + ACK:用于传输数据并要求接收端立即交给应用层处理。

这里数据长度超过了 MTU(Maximum Transmission Unit 最大传输单元)1500 个字节,要进行分片。

所以,31 中出现 [TCP segment of a reassembled PDU],意味着它不是完整的,只是 PDU(Protocol Data Unit 协议数据单元)的一部分。

在 33 中可以看到这个 重组TCP 的记录 👇

[2 Reassembled TCP Segments (2781 bytes): #31(1440), #33(1341)]

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

接着就是 HTTP 的内容了,和浏览器上看的差不多,就是 响应行,头,体 。就不多赘述了。

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

下面又是 TCP 四次挥手 的内容了。

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

curl 结束后,立刻去查这个 半连接队列 ,发现还在等待关闭。

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

等待 2MSL (linux 上 2MSL = 60s )后,就关闭了。

sysctl net.ipv4.tcp_fin_timeout

Wireshark 抓包分析 DNS、HTTP、ICMP 协议

最后,补充下这个 模型,看看之前介绍到的协议都在哪一层 👇

OSI 七层模型

        +-------------------------+
   7    |   Application Layer     |  DNS,HTTP,SSH,Telnet,FTP 等
        +-------------------------+
   6    |   Presentation Layer    |
        +-------------------------+
   5    |      Session Layer      |
        +-------------------------+
   4    |    Transport Layer      | (段 segement)TCP,UDP
        +-------------------------+
   3    |      Network Layer      | (包 packet)ICMP,IP
        +-------------------------+
   2    |    Data Link Layer      | (帧 frame)ARP
        +-------------------------+
   1    |    Physical Layer       |
        +-------------------------+

TCP/IP四层

与 OSI 七层模型相比,TCP/IP 四层模型将 表示层 和 会话层 合并到了 应用层 中,将 数据链路层 和 物理层 合并到了 链路层 中。

        +-------------------------+
   4    |    Application Layer    |
        +-------------------------+
   3    |    Transport Layer      |
        +-------------------------+
   2    |      Internet Layer     |
        +-------------------------+
   1    |       Link Layer        | 链路层
        +-------------------------+

结尾

本文就到这里啦,感谢您的阅读,有不对的地方也请您帮忙指正!谢谢~😋

喜欢的小伙伴们,别忘了点赞关注呀~😋 祝你有个美好的一天!😝

github.com/Java4ye 😆

转载自:https://juejin.cn/post/7370925939319078964
评论
请登录