网络江湖上有着南北两大武林,南武林以ping为尊,据说一ping在手,天下我有,可以通过ping命令探测到到达网络江湖各个节点的连通性,深得各个江湖中工程师的爱戴。
北武林则以tracert为尊,tracert年少时喜欢过一个名叫思科的姑娘,只是后来两个人分开了,思科与其分开之后,对其念念不忘,于是创立了一个traceroute的宗门,但两者其实是一样的,同宗同源。
这一日,又到南北江湖划江而治之时,双方要进行文战,而这一战,直接将分割整个网络江湖的格局,于是各大IE,NP工程师都慕名而来,浩浩荡荡的人群占满了演武场,有相互熟络的工程师互相嘘寒问暖。
“高兄,这次比武,最前方的贵宾席只有十个IE空位,而为何这十人之中,竟有九人是新盟教育的,而剩下的那一位,也与新盟有着千丝万缕的联系,这新盟,究竟是何人?”
“李兄有所不知了,这新盟啊,是咱们网络江湖门派中,享誉南北的一个,门派成立至今已有九年有余,为我们江湖中输送了不知多少NP,IE大佬,可谓是声势滔天了。”
“这么厉害的门派,想必我是没有机会进去了,实在是个天大的遗憾。”
“李兄此言差矣,新盟可是一个面向大众,平易近人的大盟,而且门派曾经广发英雄帖,我凑巧,知道他们的一个企鹅分派,那就是765244669,而门派中,企鹅长老的id,就是2301798538,不说了不说了,ping和tracert都来了。”
演武场上,ping与tracert相对而立,两者皆是冷笑,ping说:“我是必不可少的一个工具,当管理员对网络进行诊断的时候,会经常的使用到我,我可以告诉管理员到达这个地址或者域名时,能否连通,时延多少。”
![f39f97188ebc66cba2fd07a9cc4e0b1b.png](https://i-blog.csdnimg.cn/blog_migrate/def742e2202ef6ff61fabed6579c3480.png)
Tracert说:“这点微末伎俩也不怕别人笑话,我可以跟踪路由,不仅可以查看是否可以连通,而且在测试过程中,还能查看到达每一个三层设备的路由,你这点小功能实在是不值得看。”
![ae92c4144b9d7c6cb06e1e9000c64953.png](https://i-blog.csdnimg.cn/blog_migrate/990a2bb853b38b0125d0252c9b23f69a.png)
“你们看那是谁?”正当两人争论时,人群中突然传来一阵惊呼,为首的几名IE大佬,也从椅背上离开,缓缓睁开了眼睛。
新盟IE望着那人,长相平平无奇,但是,却让他惊疑不定,试探的说:“ICMP?”
“高兄,ICMP是何物?”
“李兄,这你就有所不知了,ICMP(Internet Control Message Protocol)被称为网际控制报文协议,它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。”
“也就是说,无论是ping还是tracert,都是ICMP协议中的一个工具而已,他们都归属于ICMP,而ICMP不至于他们。”
“啊,这么厉害,那高兄,这两个工具在icmp中是如何进行区分的呢?”
![2ac0333e93616d438b660becd0d3e055.png](https://i-blog.csdnimg.cn/blog_migrate/f2a08e8af8da48b1057c21f5450b2560.png)
ICMP中,对于type和code中的数值,都有着严格的定义。
首先,ping开始工作时,会发送一个echo包,里面会有icmp·request请求,此时type字段设置为8,code值设置为0,而目的主机假如收到了这个echo包,发现这个echo包中,是type为8的ping请求,那么,他就会发送一个type为0,code为0的echo-reply包。
而默认情况下,ping包会发送4个,当源主机收到reply回复包后,会继续发送第二个echo包,此时会将序列号从0置为1。以此类推,一共八个包。
![bcd49b572a89352ad4d2ef2ef37ea460.png](https://i-blog.csdnimg.cn/blog_migrate/456e7b389d92053d6418d8440f3bfa0a.png)
而假如目的地址,ping不同,目的不可达时,此时ICMP也会返回不同的数据包。
![b41f1724620cfdbd5f2913f2dee878fc.png](https://i-blog.csdnimg.cn/blog_migrate/2bd56ec3d672a64fffd925f48cf6f8b4.png)
此时如果目的地址无法到达时,会返回一个“主机不可达”(destination unreachable)的回复包,此时,type和code会根据不同的错误回复不同的数据。
当type=3,code=0时,为网络不可达,
当type=3,code=1时,为主机不可达,
当type=3,code=2时,为协议不可达,
当type=3,code=3时,为端口不可达。
“原来如此,看来ping只是icmp协议之下的小工具啊,那tracert呢。”
Tracert就是运用了ICMP的一个规则,故意制造一些错误的场景,而以此来追踪路由。
Traceroute 的第一个作用就是故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器。Traceroute 的参数指向某个目的 IP 地址,它会发送一个 UDP 的数据包。将 TTL 设置成 1,一旦遇到一个三层设备就表示它“牺牲”了。
![ca33d9fba501379a255268bc01cf5a34.png](https://i-blog.csdnimg.cn/blog_migrate/3fe8846fa1086f850fecce748c9ec8e9.png)
如果中间的路由器不止一个,当然碰到第一个就“牺牲”。于是,返回一个 ICMP 包,也就是网络差错包,类型是时间超时。
接下来,将 TTL 设置为 2。第一关过了,第二关就“牺牲”了,那我就知道第二关有多远。如此反复,直到到达目的主机。这样,Traceroute 就拿到了所有的路由器 IP。当然,有的路由器压根不会回这个 ICMP。这也是 Traceroute 一个公网的地址,看不到中间路由的原因。
![12ecc59e41f7bb7e7e490870e8524149.png](https://i-blog.csdnimg.cn/blog_migrate/acfa6622adcaa6699a9c817a855c37ea.png)
怎么知道 UDP 有没有到达目的主机呢?Traceroute 程序会发送一份 UDP 数据报给目的主机,但它会选择一个不可能的值作为 UDP 端口号(大于 30000)。当该数据报到达时,将使目的主机的 UDP 模块产生一份“端口不可达”错误 ICMP 报文。
![ad5afd658f9cfb5c0e651ca436359316.png](https://i-blog.csdnimg.cn/blog_migrate/ee930db56992b1fc5e2059081b6967e4.png)
“原来如此,看来ICMP协议才是网络江湖中必备的一个协议啊,看来这次网络江湖比武可以告一段落了。”
ICMP默默地走到台上,ping和tracert都战战兢兢,不敢开口,摇了摇头,ICMP望着下方的数名网络工程师说道:“家事,让诸位见笑了,自此以后,ICMP当与诸位共同维护这个网络江湖,也希望诸位网络通畅,用不到我。”
台下的新盟IE起身抱拳笑道:“ICMP兄言重了,你的这两个小兄弟可是我们网络测试中的利器,平时可以用他们来检测路径,测试通断,不过共同维护也是真的,我冥冥之中有感应,这个江湖,马上就要不太平了。”
言毕,默默地望向了天空,原本蔚蓝的天空中,似乎多了一些黑色。
新盟十IE站起身来,环顾一下开口道:“接下来会有变故,我新盟既得网络江湖气运,自当为江湖殚精竭虑,此时,入我门者,不仅可得NA教程,倘若成为内门弟子,更可获得宗门福利,而若是成为真传弟子,那自当得我新盟真传,若是享受我新盟供奉,望江湖有志之士,奔走相告,共守网络这方净土。”
“话虽如此,但怎么进你新盟宗门呢?”台下有人说道。
一名长相英俊的IE纵身而起,挥手之间,一行文字出现在空中:“此篇文中有企鹅地址和长老地址,不过此时我给诸位出道题,算得出,便可获得我新盟大长老之闭关所在,算是诸位试试水如何?”
“老五你疯了?大长老临行前提到过,万万不可泄露他的所在,你这,倘若江湖中有人算得出,你岂不是进退两难?”
“无妨,我也看看这如今江湖,是否依旧是代有才人出。”一抹冷笑,噙在了英俊IE的嘴角。
00000011,
00001001,
00000111,
00000000,
00000110,
00001000,
00001001,
00000011,
00001001,
Tip:二进制与十进制,相爱相杀!
获得答案后,添加该企鹅,可领取宗门好礼!
![f8565ebb08b32cbc931fe74eed253e49.png](https://i-blog.csdnimg.cn/blog_migrate/3c41f12afbe22b1a63719fc56baba05b.jpeg)