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. 总结

  • 掌握差错报文格式

97-ICMP 协议(端口不可达)相关推荐

  1. udp端口不可达 icmp

    1,报文格式 报文如下,10.30.13.1往10.30.16.10的80端口发送了一个UDP报文,80端口其实监听的是TCP. 服务器回复了一个类型为端口不可达的ICMP,ICMP数据部分就是请求U ...

  2. 【CyberSecurityLearning 16】单臂路由与DHCP中继+ ICMP协议+VTP

    目录 一.单臂路由 单臂路由引入: 单臂路由实验演示: 单臂路由缺点: 二.ICMP协议 单臂路由练习实验:(★) 单臂路由缺点: 三.VTP(VLAN Trunking Protocol) VTP概 ...

  3. Linux笔记-iptables开放指定端口,开放ICMP协议,其他端口禁止访问

    下面实现3个规则: ①对所有的地址开放本机的tcp(80.22.10~21)端口的访问. ②运行对所有地址开放本机的基于ICMP协议的数据包访问. ③其他未允许的端口则禁止访问. #查看本机开放的端口 ...

  4. 从入门到入土:基于Python|ACK|FIN|Null|Xmas|windows|扫描|端口扫描|scapy库编写|icmp协议探测主机|对开放端口和非开放端口完成半连接扫描|全连接扫描|

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. ICMP协议(最常用的ping、tracert命令)

    ICMP(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网络 ...

  6. 实验四 ICMP 协议分析实验

    ICMP 协议介绍 ICMP(Internet Control Message Protocol)是因特网控制报文协议[RFC792]的缩写,是因特网的标准协议.ICMP允许路由器或主机报告差错情况和 ...

  7. PING的原理以及ICMP协议

    主要内容: 1.ping的原理以及工作过程 2.ICMP协议 3.ICMP的应用:ping,traceroute 1.ping的原理以及工作过程  ping的原理  ping 程序是用来探测主机到主机 ...

  8. TCP/IP详解--学习笔记(4)-ICMP协议,ping和Traceroute

    1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...

  9. 4、以太网基础知识——ICMP协议详解

    返回总目录 上一篇 下一篇 ICMP协议是一个网络层协议.  一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通:但是IP协议并不提供可靠传输.如果丢包了,IP协议并不能通知传输层是 ...

最新文章

  1. 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )
  2. 字符串MD5加密和产生一个随机密码的方法
  3. 图像处理、语音处理的应用及前沿技术_人工智能,虚拟技术,语音识别技术在我们的生活中...
  4. Python列表排序 reverse、sort、sorted 操作方法详解
  5. python简介pdf_PDFMiner首页、文档和下载 - Python PDF 解析器 - OSCHINA - 中文开源技术交流社区...
  6. Learn X in Y minutes
  7. php5.1文件包含,包含文件 - ThinkPHP 5.1 完全开发手册
  8. linux vim看最低,linux vim
  9. 性能测试(二)确定需求,执行测试
  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_5_文件存储的原理和记事本打开文本显示原理...
  11. oracle数据库expdp命令,Oracle数据库备份 expdp/impdp导出导入命令
  12. 【PHP】极速分销裂变,疯狂砍价活动
  13. 【opencv】2.图像读取、显示、输出
  14. lsdyna如何设置set中的node_list_关于如何快速调教NGINX的几点总结
  15. python和wps-基于python的docx模块处理word和WPS的docx格式文件方式
  16. 使用oschina的git服务器
  17. Linux内核之进程管理《Linux内核设计与实现》
  18. flask身份验证_Flask基于令牌的身份验证
  19. Jetpack架构组件 (一)-- Android Jetpack 简介
  20. 中考计算机知识点总结长沙,长沙市生物中考考点归纳.doc

热门文章

  1. win2003服务器允许下载.exe文件的方法
  2. NLP-二分类的应用-区分外卖评论好评/差评
  3. 【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票
  4. 网络常识,whirshark分析
  5. go开发环境搭建以及运行一个完整的beego网站项目
  6. 自律的程序员生活是什么样的?
  7. android平板忘了密码,平板电脑忘记密码怎么办
  8. kindEditor 富文本编辑器 使用介绍
  9. Shell脚本+if语句判断是下午还是中午还是早上(乱搞)
  10. 请求网站响应的文本带有乱码,原来是Content-encoding惹的祸,一文带你搞懂`Content-encoding`、`Accept-Encoding`