抓包前的各种基础复习-Ethernet协议,ARP协议,IP协议,ICMP协议,UDP协议,TCP协议 – 21运维
通知: .-...

抓包前的各种基础复习-Ethernet协议,ARP协议,IP协议,ICMP协议,UDP协议,TCP协议

WireShark 21运维 4222浏览

如果要使用wireshark或其他工具抓包,那么必须对各个协议有一个深刻的理解,否则即使抓包了也无法分析和定位问题。这里通过看书,网上看视频和百度百科,写了这么一篇笔记,便于后期快速理解以及查询。

1,以太网Ethernet协议

Ethernet II, Src: BiostarM_ff:04:67 (00:30:67:ff:04:67), Dst: XiaomiCo_6e:b6:73 (64:09:80:6e:b6:73)
Destination: XiaomiCo_6e:b6:73 (64:09:80:6e:b6:73)
Address: XiaomiCo_6e:b6:73 (64:09:80:6e:b6:73)
…. ..0. …. …. …. …. = LG bit: Globally unique address (factory default)
…. …0 …. …. …. …. = IG bit: Individual address (unicast)
Source: BiostarM_ff:04:67 (00:30:67:ff:04:67)
Address: BiostarM_ff:04:67 (00:30:67:ff:04:67)
…. ..0. …. …. …. …. = LG bit: Globally unique address (factory default)
…. …0 …. …. …. …. = IG bit: Individual address (unicast)
Type: IPv4 (0x0800)

说明:

三个字段:
Destination/目的字段:标识目的通信方的MAC地址。
Source/源字段:标识发送端的MAC地址 。
Type/类型值:标志上层协议。比如这里的上层协议是IPV4协议

注:全0填充包。全f代表广播包。链路层抓包。

MAC地址:
(1)所有设备的MAC地址都是全球唯一
(2)MAC地址采用16进制标识,长度48bit,采用冒号16进制表示
(3) MAC地址前半部分被称为 OUI代码,即厂商唯一标识符。 一般代表一个公司,比如思科、华为、tplink等。所以这里会显示xiaomi的东西。

 

2,ARP协议

ARP协议:地址解析协议,用于实现IP地址到MAC地址映射(知道IP问MAC,交换机里边有一个对应的表,没有就广播,mac和设备IP有一个映射表),实现数据的封装过程。ARP协议在以太网之上,属于网络层。其中设备上也有一个arp映射(mac与IP)信息:

抓包显示那里有两种,一种是request请求包,一种是回应包reply 。这里以一个请求包为例,从上到下内容:

抓包内容详解:
Address Resolution Protocol (request) 请求包
Hardware type: Ethernet (1)  硬件类型为以太网卡
Protocol type: IPv4 (0x0800) 协议IPv4
Hardware size: 6 以太网包大小
Protocol size: 4
Opcode: request (1)  请求包
Sender MAC address: Vmware_d3:86:f1 (00:0c:29:d3:86:f1) 源地址mac
Sender IP address: 192.168.31.10 源地址IP
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00) 填充包,如果是回应包,这里是一个对应IP的mac
Target IP address: 192.168.31.1  目标IP
这里我们可以通过arp -d ping一个内网IP,抓包查看arp解析过程。

 

3,IP协议

IP协议,简称互联网协议,用户实现数据的不可靠面向无连接的通信,实现三层数据封装与IP寻址。

这里通过wireshark抓取了一个访问网站的包,具体IPv4内容如下:

 


抓包内容详解:

Internet Protocol Version 4, Src: 192.168.31.212, Dst: 59.110.244.199
0100 …. = Version: 4  ip协议版本4,以后应该会是IPv6
…. 0101 = Header Length: 20 bytes (5)   #头部信息长度,ip头部长度固定大小
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 1320   #包总大小,包含IP头部的20个字节
Identification: 0x06c7 (1735)  #标识符 包过大超过1500字节,超过就分片,MTU=1500byte。如果有分片,告知这个分片是哪个包的。
Flags: 0x02 (Don’t Fragment)  #标志符,和分片对应。MF更多位用于告知接收方是否还有分片,0没有,1有;DF不要分片位,告知路径设备不要进行分片。防止分片最后没标记无法组装。
Fragment offset: 0  #分片偏移量,用于告知接收方每个分片距离IP头部的位置,才能实现有序的重新组装。
Time to live: 64  #TTL生存时间  补充:当路由器收到一个TTL=0的数据包时,宣告此数据包死亡并丢弃。每经过一跳,TTL减一,避免Loop环路造成堵塞,消耗带宽和设备扛不住,所以设置TTL,最大255。
Protocol: TCP (6)  #协议号,标志上层协议。
Header checksum: 0x1e57 [validation disabled] #头部校验和,安全考虑(奇偶校验,md5校验)
[Header checksum status: Unverified]
Source: 192.168.31.212  #标志发送方的IP地址
Destination: 59.110.244.199 #标志接收方的IP地址
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]

 

 

4,ICMP协议

ICMP是(Internet Control Message Protocol)互联网控制信息协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
作用:控制消息是指网络通不通、主机是否可达、、网络好坏(延迟)等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。一般用于实现链路连通性好坏和链路追踪,链路差错报告。
ICMP运行在传输层协议,服务于IP协议。

抓包内容详解:

Internet Control Message Protocol
Type: 0 (Echo (ping) reply) #回显应答,还有一个是回显请求request
Code: 0
Checksum: 0x4a90 [correct]
[Checksum Status: Good]
Identifier (BE): 1 (0x0001)
Identifier (LE): 256 (0x0100)
Sequence number (BE): 2763 (0x0acb) #序列号,代表第多少个包
Sequence number (LE): 51978 (0xcb0a)
[Request frame: 6662]
[Response time: 33.485 ms] #包含了响应时间,一般都是几十或上百毫秒,内网1毫秒之内
Data (32 bytes)
Data: 6162636465666768696a6b6c6d6e6f707172737475767761…
[Length: 32]

 

5,UDP协议

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP在IP报文的协议号是17。
UDP协议全称是用户数据报协议 [,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
          UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
          与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

UDP协议包含应用层用到的dns(53),dhcp(67/68),qicq(8000),tftp(69)等。特征:数据包简单,处理速度快,实时交互。比如平时接触的域名解析、qq通讯、视频流、实时交互等。

User Datagram Protocol, Src Port: 53, Dst Port: 61566
Source Port: 53
Destination Port: 61566
Length: 107
Checksum: 0x3951 [unverified]
[Checksum Status: Unverified]
[Stream index: 206]

 

6,TCP协议

 tcp协议,传输控制协议,是tcp/ip协议栈中算法最多,功能最繁杂的协议。 平时工作中接触比较多且排查故障最多用到的。
基于TCP的应用层协议:http(80),https(443),ftp(20/21),ssh(22),telnet(23),smtp/pop (25/110)

6.1一次数据传输过程包含三个过程:
(1)TCP三次握手
(2)可靠传输 seq ack
(3)TCP四次挥手 FIN/ACK
其中每个知识点都要掌握好,这样平时才能排查网络故障、通信故障以及优化系统内核参数等。

6.2 功能

面向连接(三次握手,四次挥手)
可靠传输(经典重传、超时重传、快速重传/选择性重传)
流量控制(滑动窗口、拥塞管理)
多路复用(套接字)

6.3 原理
这里的内容比较多且比较复杂,网上资料也比较多,这里不详细记录,只是大概记录下。

 

 

 

 

总结:
(1)广播数据包不能跨网段(arp request无法发送到远端设备)
(2)多网段通信过程中,IP地址不变,担心MAC地址变。同网段通信过程中,IP和MAC信息不变,跟谁通信用谁的MAC。
(3)类型值、协议号、端口号都是用户标志上层协议,方便接收方实现数据的解封装。

 

 

转载请注明:21运维 » 抓包前的各种基础复习-Ethernet协议,ARP协议,IP协议,ICMP协议,UDP协议,TCP协议