tcp/ip学习笔记--第7章ping、8章traceroute
参考:
https://download.****.net/download/qq_31567335/10213200
ping和traceroute都是ICMP协议的具体应用,ping命令在windows和linux上都可以使用。traceroute在windows上对应的命令是tracert, linux上如果没有安装需要使用“sudo apt-get install traceroute”命令进行安装。ping报文格式:
traceroute的工作原理就是通过从1开始增加TTL的值,当收到的包的TTL的值为1或0的时候,路由器会扔掉这个包并返回一个超时错误的ICMP报文,这个包的源ip会写这个路由器本身的,这样就可以探测路由过程中的每个路由器。同时发送一个目的端口非常大,一般来说程序不可能正在使用的端口,从而会收到一个端口不可达报文,从而得知到达了目的地。
traceroute报文格式:
发送原始ip数据报中数据的前8个字节是为了从UDP头上读出源端口,从而得出是哪个程序的包。
有一篇用c++实现ping程序的文章比较有趣。贴下链接:
http://www.cnblogs.com/ranjiewen/p/5704627.html