Ping baidu过程中使用了ICMP协议

ICMP(Internet Control Message Protocol,互联网控制消息协议)是网络层的一个核心协议,主要负责在IP主机、路由器之间传递控制消息。这些控制消息用于诊断网络问题、管理网络设备等。ICMP协议的主要功能包括错误报告,当IP数据报无法到达目的地时,路由器或目的主机会向源主机发送ICMP错误报告报文,告知出错的原因。

以Ping为例,ICMP的工作流程可以这样理解:Ping命令通过发送ICMP回送请求报文(Echo Request)到目标主机,目标主机收到请求后,会发送一个回送应答报文(Echo Reply)。Ping会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。这个过程本质上是ICMP数据包的发送与解析流程。

ICMP报文格式主要分为两种报文:一类是通知出错原因,另一类是用于诊断查询。在Ping操作中,使用的是ICMP回显请求和应答报文。ICMP回显请求报文(类型值为8)用于检查特定节点的IPv4连接以排查网络问题,而节点发送回显答复消息响应ICMP回显消息(类型值为0)

如图No 42  192.168.76.18给出请求,在info处(reply in43)告知对方响应时No应该给43。

157.148.69.74响应时,告知对方,响应的是NO 42的请求。

通过序号确认请求和回复。

解析

以NO42数据包为例

报文结构:
  1. 帧信息(Frame):

    • 显示了数据包的总长度(74字节)和捕获长度(592位,即74字节)。
  2. 数据链路层(Ethernet II):

    • 源MAC地址(Src): Intel_a8:b8:5d (c0:3c:59:a8:b8:5d)
    • 目标MAC地址(Dst): 3e:d1:d2:ce:e3:98
  3. 网络层(Internet Protocol Version 4, IPv4):

    • 版本(Version): 4,表示这是一个IPv4数据包。
    • 头部长度(Header Length): 20字节。
    • 总长度(Total Length): 60字节,包括头部和数据。
    • 标识符(Identification): 0x29ec (10732),用于数据包的重组。
    • 生存时间(Time to Live, TTL): 128,表示数据包在网络中可以经过的最大路由器数量。
    • 协议(Protocol): ICMP (1),表示这是一个ICMP数据包。
    • 源IP地址(Src): 192.168.76.18
    • 目标IP地址(Dst): 157.148.69.74
  4. 传输层(Internet Control Message Protocol, ICMP):

    • 类型(Type): 8,表示这是一个Echo(ping)请求。
    • 代码(Code): 0,对于Echo请求,代码通常为0。
    • 校验和(Checksum): 0x4d56 [correct],用于错误检查。
    • 标识符(Identifier): 1 (0x0001),用于匹配请求和回复。
    • 序列号(Sequence Number): 5 (0x0005),用于标识发送的Ping请求的顺序。
    • 数据(Data): 32字节,通常包含用于测试的填充数据。
  5. 数据(Data):

    • 显示了ICMP数据包的数据部分,这里是32字节的填充数据,用于测试网络连接。
详解

帧信息(Frame Information)

帧编号(Frame Number):42

帧长度(Frame Length):74字节(592位)

捕获长度(Capture Length):74字节(592位)

到达时间(Arrival Time):显示了数据包被捕获的具体时间。

以太网信息(Ethernet II)

源MAC地址(Src):Intel_a8:b8:5d (c0:3c:59:a8:b8:5d)

目标MAC地址(Dst):3e:d1:d2:ce:e3:98

IP协议信息(Internet Protocol Version 4)

源IP地址(Src):192.168.76.18

目标IP地址(Dst):157.148.69.74

版本(Version):4

头部长度(Header Length):20字节

总长度(Total Length):60字节

标识符(Identification):0x29ce (10732)

生存时间(Time to Live, TTL):128

协议(Protocol):ICMP (1)

ICMP协议信息(Internet Control Message Protocol)

类型(Type):8(Echo request,即Ping请求)

代码(Code):0

校验和(Checksum):0x0d56(正确)校验和是一个错误检测机制,用于确保ICMP消息在传输过程中没有被损坏。如果校验和显示为[correct],这意味着收到的数据包在到达目的地时是完整的。

标识符(Identifier):1280 (0x0500) 可以帮助区分不同的Ping会话或请求。

序列号(Sequence Number):5 (0x0005)

序列号(Sequence Number)

序列号用于标识发送的Ping请求的顺序。它也是一个16位的数字,通常从0开始递增。序列号可以帮助发送方识别收到的回复是否对应于特定的请求。

“seq=5/1280”

        

大端序(BE: Big Endian):5 (0x0005),表示序列号在大端序格式下的值。大端序是一种字节序,其中最重要的字节存储在最低的内存地址。

        小端序(LE: Little Endian):1280 (0x0500),表示序列号在小端序格式下的值。小端序是另一种字节序,其中最低有效字节存储在最低的内存地址。

请求帧

响应帧(Response frame)

        

        43,这表示与此请求对应的ICMP回复(Echo Reply)数据包的帧编号。

数据(Data)

ICMP Echo Request数据包通常包含一些填充数据,这些数据没有特定的含义,主要用于测试网络连接。在Ping操作中,这些数据可以是任意的,但通常包含可读的ASCII字符,如连续的字母或数字。

这里显示了ICMP数据包的数据部分,共有32字节。

数据内容以十六进制格式显示:616263646566676869706a6b6c6d6e6f707172737475767778797a...,这通常是为了测试而填充的模式,可以转换为ASCII字符表示为"abcdefghijklmnopqrstuvwxyzabcdefgh"。

问题0:seq是什么?有什么用?

答:序列号(seq)是一个重要的参数,它用于标识发送的ICMP回声请求消息的顺序,确保回复能够与请求正确匹配。

问题1:为什么要有数据包编号,为什么是“reply in 42”、“reply in 46”、“reply in 53”、“reply in 56”?

答:在Wireshark抓包中,“reply in 42”、“reply in 46”、“reply in 53”、“reply in 56”这样的标记表示的是数据包的回复关系。这些数字对应于数据包列表中的编号,表明某个数据包是对之前某个编号数据包的回复。数据包编号是Wireshark为了方便用户追踪和识别数据包而自动分配的,它按照捕获顺序递增

问题2:为什么要发四次请求?

答:发送四次请求是为了进行网络连通性测试。Ping命令通常发送一系列数据包到目标地址,然后等待回复。通过比较发送和接收的数据包,可以计算出往返时间(RTT),从而评估网络延迟。发送多个数据包还可以帮助识别网络中的潜在问题,比如丢包率。

问题3:每个请求都有一个特定的标识符起什么作用?

答:每个请求都有一个特定的标识符(在这个例子中是id=0x0001),这个标识符用于区分不同的Ping会话。当网络设备或主机收到ICMP Echo请求时,它会使用相同的标识符来发送回复。这样,发送方就可以将回复与相应的请求匹配起来,确保数据的完整性和准确性。标识符还有助于在网络中区分来自不同源的Ping请求,尤其是在多播或广播场景中

问题4:这里ttl是什么有什么用处?

答:TTL(Time to Live,生存时间)是一个网络术语,用于限制IP数据包在计算机网络中的存在时间。TTL的主要作用是避免IP包在网络中的无限循环和收发,节省了网络资源,并能使IP包的发送者能收到告警消息。每当数据包经过一个路由器时,其TTL值就会被减一。当TTL值减少到0时,路由器会丢弃该数据包,并向数据包的发送者发送一个ICMP消息,告知跃点数超限。

  • TTL=128:这通常是一个初始的TTL值,表示数据包在发送时被设置为可以经过128个路由器。这个值是发送方(在这种情况下是192.168.76.18)的系统默认设置。

  • TTL=63:当数据包从157.148.69.74回复到192.168.76.18时,TTL值为63。这表明在数据包从157.148.69.74返回的过程中,它已经经过了一些路由器,TTL值从初始值(可能是128或更高)减到了63。这可以用于推断网络路径中的路由器数量。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐