TCP/IP学习20180710-数据链路层-ICMP协议
1、ICMP协议
IP协议不保证数据送达。则应有协议保证数据送达。ICMP就是其中的重要协议。
ICMP:(Internet Control Messages Protocol)因特网信报控制协议
当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会。
ICMP数据包由8bit的错误类型和8bit的代码和16bit的校验和组成。(32字节)
ICMP报文分为两种:查询报文和差错报文。
2、ICMP协议应用-ping程序
ping可以说是ICMP的最著名的应用,当我们某一个网站上不去的时候。通常会ping一下这个网站。ping会回显出一些有用的信息。
ping利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。ping给出来了传送的时间和TTL的数据。
ping还给我们一个看主机到目的主机的路由的机会。这是因为,ICMP的ping请求数据报在每经过一个路由器的时候,路由器都会把自己的ip放到该数 据报中。而目的主机则会把这个ip列表复制到回应icmp数据包中发回给主机。但是,无论如何,ip头所能纪录的路由列表是非常的有限。
C:\Users\lishuotr>ping kat.cr
正在 Ping kat.cr [72.52.4.119] 具有 32 字节的数据:
来自 72.52.4.119 的回复: 字节=32 时间=208ms TTL=243
来自 72.52.4.119 的回复: 字节=32 时间=205ms TTL=243
来自 72.52.4.119 的回复: 字节=32 时间=209ms TTL=243
来自 72.52.4.119 的回复: 字节=32 时间=227ms TTL=243
72.52.4.119 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 205ms,最长 = 227ms,平均 = 212ms
3、ICMP协议应用-traceroute\tracert
Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具.
Traceroute的原理是非常非常的有意思,它受到目的主机的IP后,首先给目的主机发送一个TTL=1(TTL:time to live)的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。
C:\Users\lishuotr>tracert baidu.com
通过最多 30 个跃点跟踪
到 baidu.com [123.125.115.110] 的路由:
1 1 ms <1 毫秒 <1 毫秒 192.168.1.1 [192.168.1.1]
2 * * * 请求超时。
3 8 ms 5 ms 7 ms 124.74.37.137
4 5 ms 6 ms 8 ms 101.95.42.45
5 9 ms 9 ms 12 ms 101.95.120.174
6 28 ms 28 ms 29 ms 202.97.60.129
7 * * * 请求超时。
8 * * * 请求超时。
9 33 ms * 34 ms 219.158.5.137
10 28 ms 30 ms 29 ms 202.96.12.14
11 36 ms 30 ms 30 ms 202.106.34.98
12 * 30 ms 27 ms 202.106.43.30
13 * * * 请求超时。
14 * * * 请求超时。
15 28 ms 28 ms 28 ms 123.125.115.110
跟踪完成。
C:\Users\lishuotr>tracert rarbg.is
通过最多 30 个跃点跟踪
到 rarbg.is [185.37.100.123] 的路由:
1 26 ms <1 毫秒 4 ms 192.168.1.1 [192.168.1.1]
2 * * * 请求超时。
3 12 ms 4 ms 6 ms 124.74.37.137
4 4 ms 4 ms 7 ms 101.95.42.45
5 17 ms 5 ms 12 ms 61.152.24.14
6 5 ms 4 ms 5 ms 202.97.48.26
7 * 10 ms 4 ms 202.97.33.154
8 320 ms 317 ms 317 ms 202.97.50.38
9 317 ms 314 ms 322 ms 118.85.205.214
10 371 ms 371 ms 380 ms ae16-9.RT.NTL.KIV.UA.retn.net [87.245.232.150]
11 245 ms 234 ms 336 ms GW-BelPak.retn.net [87.245.237.22]
12 232 ms 235 ms 233 ms 91.195.120.231.hi-load.biz [91.195.120.231]
13 * * * 请求超时。
14 352 ms 348 ms 358 ms border1.russia.transit.netsaap.com [185.37.101.2]
15 361 ms 390 ms 395 ms xe-0-1.edge.romania.netsaap.com [185.37.102.2]
16 405 ms 423 ms 431 ms ae0-94.sr.ipv4.bosnia.netsaap.com [185.37.100.2]
17 446 ms 509 ms 424 ms ae0-84.sr.ipv4.bosnia.netsaap.com [185.37.100.6]
18 440 ms 477 ms 462 ms 185.37.100.123
跟踪完成。
综上,我对ICMP的理解:
ICMP:internet control message protocol,控制报文。
把控制信息进行发送的一种协议。包含:查询报文(在ping程序中使用到)、报错报文(主机不可达、路由不可达等等)。
TCP/IP学习20180710-数据链路层-ICMP协议的更多相关文章
- tcp/ip 学习(一)
TCP/IP协议是什么? TCP:Transmission Control Protocol 传输控制协议 IP:Internet Protocol 因特网协议 简单来说,TCP/IP协议就是一个 ...
- TCP/IP的三次握手协议
关于TCP/IP的三次握手协议,这篇文章中有详细的介绍,很通俗易懂,什么时候忘了,都可以过来瞧两眼,保证很快就明白了. 首先TCP/IP协议分为三个阶段:建立连接(握手阶段),数据传输阶段,连接终止阶 ...
- tcp/ip学习笔记-TCP
tcp/ip学习笔记-TCP 彭会锋 报文发送采用的是tcp_output函数,
- TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute
1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...
- TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute【转】
转自:http://blog.csdn.net/goodboy1881/article/details/670761 1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议(是一种尽力传送的协 ...
- 【TCP/IP详解 卷一:协议】第一章概论 学习笔记
第一章 概述 游览了一下,本章主要是简介OSI模型的低层(1-4层).介绍了TCP/IP协议族的相关知识. TCP/IP的分层 Application <--> TCP / UDP < ...
- TCP/IP学习笔记(3)-IP、ARP、RARP协议
这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...
- TCP/IP学习笔记(2)-数据链路层
数据链路层有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做 ...
随机推荐
- 学习小片段——springboot 错误处理
一:先看看springboot默认的错误处理机制 springboot默认会判断是否是浏览器(http请求头Accept是否含有 text/html)来选择返回html错误页面或json错误信息 原因 ...
- 日常踩坑 — 相邻元素之间的margin合并问题。
踩坑:使用v-for渲染的组件,当然图中的id已经换成class,还是没有解决这个问题,于是各种查找资料,我就不信简单的CSS问题这么难解决! v-for渲染组件级传值: <div class= ...
- c++ 第二章知识梳理
2.1.c++语言概括 2.1.1)c++的产生 一个更好的c,由c演变而来 2.1.2)c++的特点 一是尽量兼容c,二是支持面向对象的方法.更安全,且简洁高效. 2.1.3~2.1.5 多数和C相 ...
- 《xxx系统》质量属性战术
<xxx系统>质量属性战术 可用性:重新引入 用户每填写一份表单,表单查看中即时更新所有信息. 易用性:系统主动 对于下拉框的选项较多时,用户可先进行部分输入,系统进行实时检索显示与用户输 ...
- Ubuntu 的 bash和dash的区别
什么是bash ? Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh.csh.ash.bsh.ks ...
- Convolutional Neural Network Architectures for Matching Natural Language Sentences
interaction n. 互动;一起活动;合作;互相影响 capture vt.俘获;夺取;夺得;引起(注意.想像.兴趣)n.捕获;占领;捕获物;[计算机]捕捉 hence adv. 从此;因 ...
- timestamp时间格式
时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间. 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的 ...
- H5中input[type="date"]默认样式修改 伪类
- 在树莓派上的wireshark报错
QT: XKEYBOARD extension not present on the X server 我在树莓派2b下的vnc远程连接到kali-all(所谓的kali-all就是在kali官方提供 ...
- 爬取网络图片到C盘存储的PermissionError: [Errno 13] Permission denied
C盘根目录下不能拷进去文件,但可以新建文件夹的,“发生错误,操作被阻止,客户端没有所需的特权. 因为是系统目录,不要在里面拷贝文件,最好建立一个目录再放在里面. 硬要拷贝的话,可以使用管理员权限打开e ...