计算机网络系列三 -- 网络层详解(一)

1 网络层提供的两种服务

网络层应该向运输层提供怎样的服务呢?是面向连接还是无连接呢?这个实际上是可靠交付由网络还是端系统负责的问题,在这个问题的基础上诞生了两种服务,分别为虚电路服务和数据报服务。

1.2 虚电路服务

虚电路服务与电信网相似,使用面向连接的通信方式,让网络负责可靠交付。

其原理为在通信之前先建立虚电路,以保证双方通信所需的一切网络资源。 如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。

虚电路为逻辑连接,虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真 正建立了一条物理连接。
在这里插入图片描述
使用虚电路的工作步骤:

  1. 建立连接,在分组交换中建立一条虚电路,保证通信双方的网络资源。
  2. 双方沿着已建立的虚电路发送分组。
  3. 分组的首部不需要填写完整的目的主机地址,只需填写这条虚电路的编号,因而减少了分组的开销。如果这种通信方式再使用可靠传输的网络协议,就可使所发送的分组无差错按序地到达终点,当然也不丢失、不重复。
  4. 在通信结束后,释放建立的虚电路。

1.3 数据报服务

因特网在设计上采用了和电信网完全不同的思路,可靠通信应该由端系统来保证(主机到主机)。

其思路如下:

  1. 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每个分组(也就是 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
  2. 网络层不提供服务质量的承诺。也就是说所传送的分组,可能出错、丢失、重复或失序,当然也不保证分组交付的时限。

如果需要通信可靠,应该由网络中的运输层负责可靠交付,例如差错处理、流量控制等。
在这里插入图片描述

1.4 两者之间的区别

在这里插入图片描述

2 ARP 协议

2.1 什么是 ARP 协议?

ARP,即 Address Resolution Protocol,为地址解析协议。其功能为通过目标主机的 IP 地址,查询目标主机的 MAC 地址,以保证通信的顺利进行。每台安装有 TCP/IP 协议的电脑里都有一个 ARP 缓存表,这个表里的 IP 地址与 MAC 地址是一一对应的。

2.2 为什么我们需要 ARP 协议?

在网络层我们关心的是 IP 地址,而在数据链路层我们关心的则为 MAC 地址。在网络中,通信数据包依据 OSI 模型从上往下进行数据封装,无论网络层使用何种协议,在实际网络链路中传送数据帧时我们必须使用 MAC 地址,故我们需要 ARP 协议来获取目的主机的 MAC 地址来完成数据的封装和转发。

2.3 ARP 地址解析

每一个主机都设有一个 ARP 高速缓存,里面有所在的局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。 当主机A欲向本局域网上的某个主机B发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机B的 IP 地址。如有,就可查出其对应的 MAC 地址,再将此 MAC 地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。

扫描二维码关注公众号,回复: 8612490 查看本文章

其实,通俗的说,ARP 协议实现了逻辑地址( IP 地址)到物理地址( MAC 地址)的映射。

2.4 ARP 工作原理

我们做如下假设,在同一局域网下,我们知道主机A的 IP 地址与 MAC 地址,知道主机B的 IP 地址,主机A需要与主机B通信,现在我们需要知道主机B的 MAC 地址。其步骤如下:

  1. 在发送数据的时候,主机A会在自己的 ARP 缓存表中寻找是否有目标 IP 地址,若有则直接知道主机B的 MAC 地址,将其写入帧发送即可。否则主机A会在网络上发送一个广播,向同一网段的所有主机询问主机B的 MAC 地址。
  2. 其他主机收到广播请求后,会比较自己的 IP 地址与主机A请求的 IP 地址是否相同,不相同则直接丢弃请求,相同的话就会发送一个 ARP 响应信息,把主机B的 IP 地址和 MAC 地址以单播的形式告诉主机A。

2.5 注意

ARP 是解决同一个局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的 MAC 地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。

3 ICMP 协议

3.1 什么是 ICMP 协议?

ICMP ,即 Internet Control Message Protocol,互联网控制消息协议。由于其基于 IP 协议工作,因此它也是一个网络层协议。ICMP 协议的功能为确认 IP 包是否成功到达目标地址以及通知在发送过程中 IP 包被丢弃的原因。

3.2 ICMP 消息

ICMP 消息可以分为两类:

  1. 差错报文:通知出错原因的错误消息(traceroute)
  2. 查询报文:用于诊断的查询消息(ping)

3.3 ICMP 的报文格式

ICMP 位置如下:
在这里插入图片描述
ICMP 是在 IP 数据报的内部被传输的,紧跟着 IP 报文的首部。图上的 IP 首部20字节是在 IP 报文首部不含可选部分的情况下,若 IP 首部含可选部分,则大于20字节。

ICMP 报文格式如下:
在这里插入图片描述
8位类型字段和8位代码字段共同决定一种 ICMP 报文的类型,校验和用于检验报文在传输过程中是否出现了差错。

3.4 常见的 ICMP 报文 – 相应请求

回送应答的类型字段值为0,回送请求的类型字段值为8。ping 操作包括了这两类的 ICMP 报文。具体过程如下:一台主机向一个节点发送一个类型字段值为8的 ICMP 报文,如果途中没有异常(如果没有被路由丢弃,目标不回应 ICMP 或者传输失败),则目标返回类型字段值为0的 ICMP 报文,说明这台主机存在。

4 单播、多播(组播)和广播的区别

  1. 单播:通俗的讲就是一对一。信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的。
  2. 多播:通俗的讲就是一对多。不仅可以实现一次传送所有目标节点的数据,而且也可以实现只对特定对象传送数据的目的。使用组播的经典例子就是网上视频会议,若采用单播的方式,有多少目标节点就会传送多少次,效率低,若采用广播的方式,无法区分特定数据接收对象。
  3. 广播:通俗的讲就是一对全部。广播一般只能在同一子网内传播,其 IP 地址为 255.255.255.255,该地址代表同一子网内所有的 IP 地址。

参考:1-ARP协议
网络协议 – ICMP协议(1) 报文格式
ICMP协议详解
计算机网络(4.1)网络层-网络层提供的两种服务

发布了113 篇原创文章 · 获赞 206 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Geffin/article/details/103274853