计算机网络学习笔记(六)---网络层与IP协议

        IP是TCP/IP协议族中的核心协议。所有TCP、 UDP、 ICMP和IGMP数据都通过IP数据报传输。 IP提供了一种尽力而为、无连接的数据报交付服务。 “尽力而为”的含义是不保证IP数据报能成功到达目的地,它不对自已尝试交付的数据报提供保证。当某些错误发生时,例如一台路由器临时用尽缓冲区, IP提供一个简单的错误处理方法:丢弃一些数据(通常是最后到达的数据报)。任何可靠性必须由上层(例如TCP)提供。IPv4和IPv6都使用这种尽力而为的基本交付模式。
        “无连接”意味着IP不维护网络单元(即路由器)中数据报相关的任何链接状态信息,每个数据报独立于其他数据报来处理。这也意味着IP数据报可不按顺序交付。如果一个源主机向同一目的地发送两个连续的数据报(第一个为A,第二个为B),每个数据报可以独立路由,通过不同路径,并且B可能在A之前到达。 IP数据报也可能发生其他问题:它们可能在传输过程中被复制,可能改变内容从而导致错误。此外, IP之上的一些协议(通常是TCP)需要处理这些潜在问题,以便为应用提供无差错的交付。
使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。与 IP 协议配套使用的还有几个协议:
  • 地址解析协议 ARP(Address Resolution Protocol)
  • 网际控制报文协议 ICMP(Internet Control Message Protocol)
  • 网际组管理协议 IGMP(Internet Group Management Protocol)

一、IP数据报结构

IPv4

IPv6

 

正常的IPv4头部大小为20字节,除非存在选项。 IPv6头部长度是它的两倍,但没有任何选项。它可以有扩展头部可提供类似的功能。
  • 版本 : 有 4(IPv4)和 6(IPv6)两个值;
  • 首部长度(IHL) : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为固定部分长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
  • 服务类型字段 : 分为两部分,前6位被称为区分服务字段(DS字段),后2位是显式拥塞通知(ECN)字段或指示位。这些字段被用于数据报转发时的特殊处理。
  • 总长度 : 包括首部长度和数据部分长度。
  • 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
  • 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
  • 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
  • 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
  • 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。

二、IP地址

IP地址由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的。

IP 地址 ::= {< 网络号 >, < 主机号 >}

 通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。

IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}

要使用子网须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。外部网络看不到子网的存在。

 上图是一个B类地址被“划分子网”的例子。假设Intemet中的一个站点已被分配一个B类网络号。后16位现在可以由站点的网络管理员接需分配。在这个例子, 8位被选定为子网号,剩下8位为主机号。这个特殊配置允许站点支持256个子网,每个子网最多可包含254台主机(当前每个子网的第一个和最后一个地址无效,即从整个分配范围中除去第一个和最后一个地址)。只有划分子网的网络中的主机和路由器知道子网结构。在需要进行子网寻址之前, Intemet其他部分仍将它作为站点相关的地址来看待。下显示了如何工作。

三、地址解析协议 ARP

网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。在通信过程中IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。ARP 实现由 IP 地址得到 MAC 地址。

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。

img

 

四、网际控制报文协议 ICMP

 IP协议本身没有为终端系统提供直接的方法来发现那些发往目的地址失败的IP数据包或获取诊断信息(例如,哪些路由器在沿途中被使用了或使用一种方法来估计往返时间)。为了解决这些不足,将一个特殊的Intemet控制报文协议与IP结合使用,以便提供与IP协议层配置和IP数据包处置相关的诊断和控制信息。 ICMP确切地说既不是一个网络层协议,也不是一个传输层协议,而是位于两者之间。

ICMP负责传递可能需要注意的差错和控制报文。 ICMP报文通常是由IP层本身、上层的传输协议(例如TCP或者UDP),或用户应用触发执行的。它表明了某些类别的故障和配置信息。ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会,封装在 IP 数据报中。

 

 

ICMP报文

CMP报文可分为两大类:有关IP数据报传递的ICMP报文(称为差错报文(errormessage)),以及有关
信息采集和配置的ICMP报文(称为查询(query)或者信息类报文(informational message) )。

img

相关应用

1. Ping

Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

2. Traceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。

Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。

  • 源主机向目的主机发送一连串的 IP 数据报。第一个数据报 P1 的生存时间 TTL 设置为 1,当 P1 到达路径上的第一个路由器 R1 时,R1 收下它并把 TTL 减 1,此时 TTL 等于 0,R1 就把 P1 丢弃,并向源主机发送一个 ICMP 时间超过差错报告报文;
  • 源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达 R1,R1 收下后把 TTL 减 1 再转发给 R2,R2 收下后也把 TTL 减 1,由于此时 TTL 等于 0,R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报文。
  • 不断执行这样的步骤,直到最后一个数据报刚刚到达目的主机,主机不转发数据报,也不把 TTL 值减 1。但是因为数据报封装的是无法交付的 UDP,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
  • 之后源主机知道了到达目的主机所经过的路由器 IP 地址以及到达每个路由器的往返时间。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值