diff --git a/notes/计算机网络.md b/notes/计算机网络.md index 20b9e5f8..699bcfde 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -527,20 +527,24 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。它采用路 ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 -

+

ICMP 报文分为差错报告报文和询问报文。 -

+

## 分组网间探测 PING PING 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。 -PING 的过程: +Ping 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报。 -1. PING 同一个网段的主机:查找目的主机的 MAC 地址,然后直接交付。如果无法查找到 MAC 地址,就要进行一次 ARP 请求。 -2. PING 不同网段的主机:发送到网关让其进行转发。同样要发送到网关也需要通过查找网关的 MAC 地址,根据 MAC 地址进行转发。 +Ping 的过程: + +1. 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,但 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文; +2. 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTl 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。 +3. 不断执行这样的步骤,知道最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。 +4. 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。 ## IP 多播 diff --git a/pics/aa29cc88-7256-4399-8c7f-3cf4a6489559.png b/pics/aa29cc88-7256-4399-8c7f-3cf4a6489559.png new file mode 100644 index 00000000..9b93237e Binary files /dev/null and b/pics/aa29cc88-7256-4399-8c7f-3cf4a6489559.png differ diff --git a/pics/e3124763-f75e-46c3-ba82-341e6c98d862.jpg b/pics/e3124763-f75e-46c3-ba82-341e6c98d862.jpg new file mode 100644 index 00000000..80643657 Binary files /dev/null and b/pics/e3124763-f75e-46c3-ba82-341e6c98d862.jpg differ