97-ICMP 协议(端口不可达)

ICMP 端口不可达是差错报文中的一种,它的类型(type)是 3,代码(code)也是 3.

1. 差错报文首部格式


这里写图片描述
图1 差错报文首部

2. 实验

  • 打开我们之前写的 ICMP 报文接收程序

程序托管在 gitos 上:http://git.oschina.net/ivan_allen/unp

如果你已经 clone 过这个代码了,请使用 git pull 更新一下。本节程序所使用的程序路径是 unp/program/icmp/basic.

$ sudo ./icmp
  • 打开 tftp 程序


这里写图片描述
图2 使用 tftp 程序向主机 mars 端口 9999 发送请求,准备下载 temp 文件

tftp 程序使用的协议是 UDP,这里使用了面向连接的 UDP 程序。实际上,mars 主机并没有在 9999 端口有任何服务。因此这个请求会失败。


这里写图片描述
图3 icmp 报文接收程序接收到了差错报文,type=3, code=3

根据差错报文的规则, icmp 报文携带的原始 ip 数据报里的前 8 字节,应该是 UDP 数据报前 8 字节的内容,看红色框框部分,这是 UDP 数据报的目的端口号,0x270f,也就是 10 进制 9999.

3. 总结

  • 掌握差错报文格式
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值