大家好,又见面了,我是你们的朋友全栈君。
2018年4月11日 11:41:29更新
工具 | 发包 | 触发点 | 结局 |
---|---|---|---|
traceroute | 初始发udp包 | ttl递增,icmp每一跳报ttl超时 | udp端口不可达 |
tracert | 初始发icmp request包 | 触发点: ttl递增,icmp超时 | icmp echo reply |
注: 触发点都是根据ttl超时来检测
参考
项 | traceroute | tracert |
---|---|---|
使用协议 | udp 2种icmp(ttl 端口不可达) | 仅2种icmp(ttl icmp reply) |
最终判别 | 端口不可达 | ICMP Echo Reply |
探测包都有唯一的标识号 | UDP数据包使用递增的目标端口号(33434) | ICMP使用seq识别 |
traceroute原理:UDP icmp(icmp ttl超时/icmp端口不可达) tcp&udp扫描原理
代码语言:javascript复制1. 从源地址发出一个UDP探测包到目的地址,并将TTL设置为1;
2. 到达路由器时,将TTL减1;
3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
4. 当源地址收到该ICMP包时,显示这一跳路由信息;
5. 重复1~5,并每次设置TTL加1;
6. 直至目标地址收到探测数据包,并返回端口不可达通知(ICMP Port Unreachable);
7. 当源地址收到ICMP Port Unreachable包时停止traceroute。
注:
1, UDP目标端口从33434开始,一次递增
2, TTL从1开始,依次递增
3, 每个探针发3次.
tracert原理
代码语言:javascript复制1. 从源地址发出一个ICMP请求回显(ICMP Echo Request)数据包到目的地址,并将TTL设置为1;
2. 到达路由器时,将TTL减1;
3. 当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
4. 当源地址收到该ICMP包时,显示这一跳路由信息;
5. 重复1~5,并每次设置TTL加1;
6. 直至目标地址收到探测数据包,并返回ICMP回应答复(ICMPEcho Reply);
7. 当源地址收到ICMP Echo Reply包时停止tracert。
traceroute实验拓扑
tracert实验
参考
附: icmp ttl超时
当访问到对端中途设备,发现ttl不够用的时候,中途设备随即返回一个icmp 报文 ttl不可达.
特点: 可见,这类icmp不是成双出现的, 它和ping的icmp一来一去不一样.
TTL可以理解为数据包的寿命
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193249.html原文链接:https://javaforall.cn