这个内容的初衷是有一次电话面试,别人问我ping的相关知识。
我: “tcp/ip协议簇,smtp协议,ping的网络攻击(官方叫做泛洪攻击)”,
错误点在于 ping是基于icmp的。
同时,tracert或者 linux下的traceroute也是基于icmp的
于是我下决心针对计算机网络的相关知识查缺补漏
实验环境是一个vmware(网络适配器NAT模式 192.168.154.133)与真机(192.168.154.1), vmware开了一个http的web服务 ,在真机上 curl / ping这两个操作 1.物理层对应的 wireshark的内容是 Frame 能看到 74bytes on wire(592bits) 这样的内容, 可见,它是 直接封装 0/1 这样的 bit的 2.数据链路层 Ethernet II 其中还包括以太网头部信息 封装 src/dst 分别是 Source 、Destination, 点开后分别都是 Address LG bit IG bit 这样的内容 LG->Global unique address IG->Individual address 3. 接下来的协议有 ARP/IPV4/IPV6 这三个协议(在第三层),arp就只有三层 其中 arp (address resolution protocol) 的 长度是 42, 第二层Ethernet II 层的destination是Broadcast,也即 ff:ff:ff:ff:ff:ff info是 Who has 192.168.154.2? Tell 192.168.154.1 4.第四层有 TCP UDP IGMP(Internet Group Management Protocol) 和 ICMPv6(Internet Control Message v6) ICMP(没有出现v6) TCP -> Transmission Control Protocol UDP -> User Datagram Protocol 其中 IGMP/ICMP/ICMPv6 仅仅只有这四层 5.第五层 ,协议太多啦, 有从没见过的基于UDP的 Dynamic Host Configuration Protocol (DHCP) (DHCP) 还分为ASK 和 Request 也是仅有5层 也有NetBIOS Datagram Service 和 Multicast Domain Name System (query) Simple Service Discovery Protocol 这几个仅有5层 还有最常见的 HTTP的get请求(仅有5层) Hypertext Transfer Protocol http的响应的第五层是[2 Reassembled TCP segments] 这是重新汇编TCP段的意思吗? 然后是Hypertext Transfer Protocol , 最后是 Line-based text data:text/html 的html内容 http请求的过程(原来web开发经常面试问到的), wireshark需要点击头部左边的No.栏或Time栏进行排序, 排序之后可以根据时间推断出整个请求响应的过程(某段时间前后均为arp协议) 其中包括(.1代表192.168.154.1) .133代表vmware的ip地址: (1) .1 - .133 SYN source port: 49716 destination port:8000 (2) .133 - .1 SYN ACK src port: 8000 dst port:49716 (3) .1 - .133 ACK (4) .1 - .133 HTTP GET /index.html HTTP/1.1 (5) .133 - .1 ACK (6) .133 - .1 PSH ACK (7) .133 - .1 HTTP HTTP/1.0 200 OK (text/html) (8) .1 - .133 ACK (9) .1 - .133 FIN ACK (10) .133 - .1 ACK 三次握手后发送请求接收响应 然后是4次挥手,而实际情况是 “还多发了一次请求"
实验保存的文件在: