点击蓝字

关注我们

因特网层协议

在DoD模型中,因特网层的作用有两个:路由选择以及提供单个到上层的网络接口。其他层的协议都没有提供与路由选择相关的功能,这个复杂而重要的任务完全由因特网层完成。因特网层的第二项职责是提供单个到上层协议的网络接口。如果没有这一层,应用程序开发人员将需要在每个应用程序中编写到各种网络接人协议的“钩子”。这不仅麻烦,还将使应用程序需要有多个版本一以太网版本、 无线版本等。为避免这个问题,IP提供了单个到上层协议的网络接口。这样,IP将和各种网络接人协议协同工作。

在网络中,并非条条道路通罗马,而是条条道路通IP,因特网层以及上层的所有协议都使用IP ,千万不要忘记这一点。在DoD模型中,所有路径都穿越IP。接下来的几节将介绍因特网层协议:

◆ 因特网协议(IP );

◆ 因特网控制消息协议( ICMP );

◆ 地址解析协议( ARP );

◆ 逆向地址解析协议( RARP );

◆ 代理ARP;

◆ 免费ARP。

1. IP

IP ( Internet Protocol, 因特网协议)就相当于因特网层,该层的其他协议都只是为它提供支持。IP掌控全局,可以说“-切尽收它眼底”,从这种意义上说,它了解所有互联的网络。它之所以能够这样,是因为网络中的所有机器都有-一个软件(逻辑)地址,这种地址称为IP地址。

IP查看每个分组的地址,然后使用路由选择表判断接下来应将分组发送到哪里,从而选择最佳路径。在DoD模型底部的网络接人层协议不像IP那样胸怀整个网络,它们只处理物理链路(本地网络)。

要标识网络中的设备,需要回答两个问题:设备位于哪个网络中?它在该网络中的ID是多少?

对于第一个问题,答案是软件(逻辑)地址(正确的街道);对于第二个问题,答案是硬件地址(正确的邮箱)。网络中的所有主机都有一个逻辑ID,称为IP地址,它属于软件(逻辑)地址,包含宝贵的编码信息,极大地简化了路由选择这种复杂的任务。( RFC 791讨论了IP。)

IP接收来自主机到主机层的数据段,并在必要时将其划分成数据报(分组)。在接收端,IP 将数据报重组成数据段。每个数据报都包含发送方和接收方的IP地址,路由器(第3层设备)收到数据报后,将根据分组的目标IP地址做出路由选择决策。

图3-7显示了IP报头,这可让你对如下方面有大概认识:每当上层发送用户数据时,IP 协议都将如何做,为将数据发送到远程网络做好准备。

IP报头包含如下字段

口 版本IP版本号。

口 报头长度报头的长度, 单位为32位字。

口 优先级和服务类型服 务类型指出应如何处理数据报。前3位为优先级位,当前称为区分服务位。

口 总长度整个分组的长度,包括报头和数据。

口 标识唯一的IP分组值,用于区分不同的数据报。

口 标志指出是否进行了分段。

口 分段偏移在分组太大,无法放人一个帧中时,提供了分段和重组功能。它还使得因特网上可有不同的MTU ( Maximum Transmission Unit,最大传输单元)。

口 存活时间生成分组时给 它指定的存活时间。如果分组到达目的地之前TTL就已到期,分组将被丟弃。这可避免IP分组因寻找目的地不断在网络中传输。

口协议上层协议的端口( TCP为端口6, UDP为端口7 )。还支持网络层协议,如ARP和ICMP (在有些分析器中,该字段称为类型字段)。稍后我们将更详细地讨论该字段。

口 报头校验和对报 头执行CRC的结果。

口 源IP地址发送方的32位IP地址。

口 目标IP地址接收方的32位IP地址。

口 选项用于网络测试、 调试、安全等。

口 数据位于选项字段后, 为上层数据。

下面是网络分析器捕获的一个P分组。注意,其中包含前面讨论的所有报头信息。

类型(Type)字段很重要,该字段通常为协议字段,但这个分析器将其视为IP Type字段。如果报头没有包含有关下一层的协议信息,IP 将不知道如何处理分组中的数据。在前面的示例中,类型字段告诉IP将数据段交给TCP。

图3-8说明了在网络层需要将分组交给上层协议时,它如何获悉传输层使用的协议。

在这个示例中,协议字段告诉IP将数据发送到TCP端口6或UDP端口17。然而,如果数据是发送给上层服务或应用程序的,将要么是UDP,要么是TCP。数据也可能是发送给因特网控制消息协议( ICMP )地址解析协议( ARP )或其他类型的网络层协议的。

表3-3列出了其他一些可能在协议字段中指定的常见协议。

注意:有关协议字段可包含的协议号完整列表,请参阅www.iana.org/assignments/protocol-numbers。

2. ICMP

ICMP ( Internet Control Message Protocol,因特网控制消息协议)运行在网络层,IP 使用它来获得多服务。ICMP是一种管理协议,为IP提供消息收发服务,其消息是以IP数据报的形式传输的。RFC 1256是一个ICMP附件,给主机提供了发现前往网关的路由的功能。

ICMP分组具有如下特征:

▶ 可向主机提供有关网络故障的信息;

▶ 封装在IP数据报中。

下面是一些与ICMP相关的常见事件和消息。

▶ 目标不可达如果路由器不能再向前转发IP 数据报,它将使用ICMP向发送方发送一条消息,以通告这种情况。例如,如图3-9所示,其中路由器Lab_B 的接口E0出现了故障。

主机A将分组发送给主机B时,Lab_B 路由器将向主机A发回一条ICMP目标不可达消息。

▶  缓冲区已满如果用于接收数据报 的路由器内存缓冲区已满,路由器将使用ICMP发送这种消息,直到拥塞解除。

▶  超过跳数/时间对于每个IP 数据报,都指定了它可穿越的最大路由器数量(跳数)。如果数据报还未达到目的地就达到了该上限,最后一台收到该数据报的路由器将把它删除。然后,该路由器将使用ICMP发送一条讣告, 让发送方知道其数据报已被删除。

▶  Ping Packet Intermet Groper ( Ping)使用ICMP回应请求和应答消息,以检查互联网络中机器的物理连接性和逻辑连接性。

▶  Traceroute Traceroute 使用ICMP超时来发现分组在互联网络中传输时经过的路径。

注意:Ping和Traceroute (也叫Trace, Microsoft Windows称之为tracert)都让你能够验证互联网络的地址配置。

下面是网络分析器捕获的一个ICMP回应请求:

注意,其中有什么异常的地方了吗?虽然ICMP运行在因特网(网络)层,它仍使用IP 来发出Ping请求,你注意到这一点了吗?在P报头中,类型字段的值为0x01,这表明数据报中的数据属于ICMP协议。别忘了,条条道路通罗马,同样,所有数据段或数据都必须通过IP传送。

!注意:在分组的数据部分,程序Ping将字母用作有效负载,且有效负载通常默认为约100B。当然,如果从Windows主机执行Ping操作,它将认为字母表在W处结束,而不使用X、Y和Z,因此到达这种字母表末尾后,将从A重新开始。你可以验证这一点。

如果你阅读了第2章有关数据链路层和各种帧的内容,将能通过前面的输出获悉使用的是哪种以太网帧。其中只显示了字段目标硬件地址、源硬件地址和以太类型( Ether-Type),而只有Ethernet_ II帧使用以太网类型字段。

在深入介绍ARP协议前,我们来看看ICMP的另- -种用途。图3-10显示了一个互联网络(它包含一台路由器,因此是互联网络)。Serverl ( 10.1.2.2)在DOS提示符模式下远程登录到10.1.1.5, 你认为Server1将收到什么样的响应呢?由于Serverl将把Telnet数据发送到默认网关(这是一台路由器 ),后者将丢弃该分组,因为其路由选择表中没有网络10.1.1.0。因此,Server1 将收到ICMP目标不可达消息。

3. ARP

ARP ( Address Resolution Protocol, 地址解析协议)根据已知的IP地址查找主机的硬件地址,其工作原理如下: IP 需要发送数据报时,它必须将目标端的硬件地址告知网络接入层协议,如以太网或无线。(上层协议已经将目标端的IP地址告诉它。)如果IP在ARP缓存中没有找到目标主机的硬件地址,它将使用ARP获悉这种信息。

作为IP的侦探,ARP这样询问本地网络:发送广播,要求有特定IP地址的机器使用其硬件地址进行应答。因此,ARP基本上是将软件(IP )地址转换为硬件地址,如目标主机的以太网网卡地址,然后通过广播获悉该地址在LAN中的位置。图3-11显示了本地网络中的ARP。

!注意:ARP将IP地址解析为以太网(MAC)地址。

下面的输出表示一个ARP广播。注意,由于不知道目标硬件地址,因此将其十六进制表示设置为全F (二进制表示全为1),这是一个硬件地址广播:

4. RARP

如果IP主机为无盘计算机,一开始它不知道自己的IP地址,但知道自己的MAC地址。无盘机器可使用如图3-12所示的RARP ( Reverse Address Resolution Protocol,逆向地址解析协议)来获悉其IP地址,这是通过发送一个分组实现的,该分组包含无盘计算机的MAC地址和一个请求(请求提供分配给该MAC地址的IP地址)。名叫RARP服务器的专用机器将对此作出响应,从而解决身份危机。RARP使用它知道的信息( 即机器的MAC地址)来获悉机器的IP地址,从而完成身份标识。

注意:RARP将以太网(MAC)地址解析为IP地址。

5.代理ARP

在网络中,我们不能给主机配置多个默认网关。请想-想,如果默认网关(路由器)发生故障,结果将如何呢?主机不能自动将数据发送给另一台路由器,而你必须重新配置主机。但代理ARP可帮助主机前往远程子网,而无需配置路由选择甚至默认网关。

使用代理ARP的优点之一是,我们可在网络中的- -台路由器上启用它,而不影响网络中其他路由器的路由选择表。然而,使用代理ARP也存在一个严重的缺陷:使用代理ARP将增加网段中的流量,而为处理所有的IP地址到MAC地址的映射,主机的ARP表比通常情况下大。默认情况下,所有思科路由器都配置了代理ARP,如果你认为自己不会使用它,应将其禁用。

有关代理ARP的最后一点是,代理ARP并非一种独立的协议,而是路由器代表其他设备(通常是PC)运行的一种服务,路由器禁止这些设备查询远程设备,虽然在这些设备看来,它们与远程设备位于同一个子网中。

这让路由器能够在响应ARP查询时提供自己的MAC地址,从而将远程IP地址解析为有效的MAC地址。

提示:如果预算允许,你应使用思科的HSRP ( Hot Standby Router Protocol,热备份路由器协议)。这意味着你必须购买多台思科设备,但很值得这样做。有关HSRP的更详细信息,请参阅思科网站。

【完】

为了方便广大网络爱好学习者一起学(聚)习(众)交(搞)流(基),特开设思科干货交流群,里面已经上传大量学习资料,欢迎广大网络工程师进群学习!

发现“分享”“赞”了吗,戳我看看吧

解析ip分组_快来看看!!!你经常忽略的TCP/IP知识点~相关推荐

  1. tcp协议的主要功能是什么_计算机网络 | 一文搞懂什么是TCP/IP协议

    什么是TCP/IP协议? 计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先发起通信,使用哪种语言进行通信,怎样结束通信等规则都需要事先确定.不同的硬件, ...

  2. cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP 协议用来找到目标主机的 Ethernet 网卡 Mac 地址,IP 则承载要发 送的消息.数据链路层可以从 ARP 得到数据的传送信息,而从 ...

  3. go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)

    前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在阿里面试的时候确实被问到了这个问题,HTTP.HTTPS.TC ...

  4. cisco 模拟器安装及交换机的基本配置实验心得_看完这份1113页的TCP/IP协议+路由与交换机,成功上岸字节跳动...

    TCP是一个巨复杂的协议,因为它要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获. 之所以想写这篇文章,目的有三个: 一个 ...

  5. ibm aix 抓包命令_在IBM AIX上模拟丢弃的TCP / IP数据包

    本文介绍: AIX内核扩展,允许来往于指定主机的指定百分比的TCP / IP数据包被随机丢弃,以模拟不利的网络状况. 加载,激活和卸载内核扩展的实用程序. C和Java™实用程序,用于监视到达目标主机 ...

  6. mpi tcp连接报错_关于WinCC与真实PLC之间的TCP/IP连接问题-工业支持中心-西门子中国...

    你在控制面板里检查一下接口参数,已使用的接口参数分配选TCP/IP->本地网卡.应用程序访问点选:MPI(WINCC) TCP/IP->本地网卡 这样就可以了. 回答者: 云山雾绕 - 中 ...

  7. 虚拟ip工具_《跟唐老师学习云网络》 - ip命令

    [小宅按] ip命令作为Linux网络控制的魔法棒,使得你可以自如的掌控网络信息.特别是netns子命令,允许你在现实世界挥动档杆,就可以操控那个虚拟出来的"网络世界"里面的各种参 ...

  8. 不同域里相同ip地址_不同的人可能具有相同的公共IP地址吗?

    不同域里相同ip地址 For the most part, all of us are used to having a unique public IP address, but what do y ...

  9. 易语言单窗口单ip教程_手游搬砖经验单窗口单IP防封黄金法则

    手游封号的原因,无非就这些,可以看看. 一,手游工作室肯定能赚钱,不赚钱谁做. 二,一定有封号,封了再起,我们能做的只是尽量减少封号和延缓封号时间. 三,模拟器多开必封,封号速度只是时间问题,一般新出 ...

最新文章

  1. iOS访问系统日历 添加提醒事件
  2. 每个人都应该了解的“机器学习”
  3. Swift 4 无限滚动轮播图(UICollectionView实现)
  4. Google与Binomial合作开源Basis Universal GPU纹理编解码器
  5. java.util.scanner sc_关于Java的Scanner的问题,菜鸟求各大神解答
  6. kmeans及模型评估指标_使用sklearn评估器构建聚类模型
  7. Soul网关源码阅读(九)插件配置加载初探
  8. 使用Docker Swarm来运行服务
  9. html5多个图片位置_图表分析中的HTML5地图需求,这款BI轻松5步就给解决了
  10. win10商店下载位置_Windows10应用商店程序下载目录在哪 怎样查看win10系统应用商店程序下载目录...
  11. cocos2d-x-3.4-025-仿霍比特人3五军之战片尾动画
  12. 串口调试常见问题和排查方法
  13. FIR滤波器设计(1)——利用matlab的fdatool工具箱设计FIR滤波器参数
  14. 锻炼!!!!最佳时间!!!!希望大家都要记得锻炼身体!!!!
  15. 自己的应用跳转到应用宝评分界面
  16. Pie-1-南丁格尔玫瑰图-中心带文字
  17. 文心一言——何妨吟啸且徐行
  18. 第14章 14.1 来自Bitly的USA.gov数据(1)
  19. python中的list 冒号用法
  20. Web 2.3.2 OpenVAS使用初探 / GVM使用入门教程(超详细)

热门文章

  1. Python+pandas+matplotlib数据分析与可视化案例(附源码)
  2. 力扣20. 有效的括号(JavaScript)
  3. 力扣26,删除重复项(JavaScript)
  4. 汽车上的一些名词缩写解释
  5. 全栈python_Pyodide:在浏览器端实现Python全栈科学计算
  6. mysql聚合函数需要groupby_sql 聚合函数和group by 联合使用
  7. mysql 动态创建事件_mysql 通过事件定时为数据库创建动态表名
  8. python 字典性质描述_卧槽!Python还有这些特性(2):奇怪的字典
  9. 编写 matlab_MATLAB的SFunction编写指导
  10. C++安全方向opensssl(三)3.1 什么是单项散列函数