【计算机网络基础 四】网络层(中)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 【计算机网络基础 四】网络层(中)

地址解析协议ARP

己经知道了一个机器(主机或路由器)的IP地址,需要找出其相应的硬件地址。地址解析协议ARP就是用来解决这样的问题的,由于是IP协议使用了ARP协议,因此通常就把ARP协议划归网络层。但ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址

场景举例:主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;注意,需要是同一局域网内的解析当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

  1. 根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址
  2. 如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
  3. 主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
  4. 主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
  5. 当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

需要注意的是:ARP是广播发送,ARP响应是单播发送的

ARP欺骗

地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。

跨局域网ARP

ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。那么不同局域网的通讯是如何做到的呢,

  • 连接不同局域网的设备(主机或路由器)有多个IP,只要主机或路由器要和一个网络上的另一个己知IP地址的主机或路由器进行通信,ARP协议就会自动地把这个IP地址解析为链路层所需要的硬件地址。从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。

为什么要用ARP

既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,那么为什么我们还要使用抽象的IP地址,而不直接使用硬件地址进行通信?这样似乎可以免除使用ARP。

  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但IP编址把这个复杂问题解决了。

因此,在虚拟的IP网络上用IP地址进行通信给广大的计算机用户带来很大的方便

逆地址解析协议RARP

逆地址解析协议,即RARP,功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。

RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。RARP协议工作流程:

  1. 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址
  2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址
  3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用
  4. 如果不存在,RARP服务器对此不做任何的响应
  5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

应用场景较少,可以不关注。

IP数据报

IP数据报的主要格式如下图所示:

一个IP数据报由首部数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。下面介绍首部各字段的意义。IP数据报首部的固定部分中的各字段

  • 版本,占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于以后要使用的IPv6(即版本6的IP协议)
  • 首部长度,长度占4位,可表示的最大十进制数值是15。表明IP数据报的首部长度。最小值0101(5),最大值1111(15),单位是32字(4字节)。
  • 区分服务,占8位,用来获得更好的服务。在一般的情况下都不使用这个字段。
  • 总长度,总长度字段为16位,表明首部和数据之和的长度,单位为字节。在数据链路层blog中提到,在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU 。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层所规定的MTU值。例如,最常用的以太网就规定其MTU值是1500字节。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。在进行分片时(见后面的“片偏移”字段),数据报首部中的“总长度”字段是指分片后的每一个分片的首部长度与该分片的数据长度的总和
  • 标识,占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
  • 标志,占3位,但目前只有两位有意义。标志字段中的最低位记为MF (More Fragment)。MF=1即表示后面“还有分片”的数据报。MF = 0表示这己是若千数据报片中的最后一个。标志字段中间的一位记为DF (Don’t Fragment),意思是“不能分片”。只有当DF = 0时才允许分片
  • 片偏移,占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍
  • 生存时间,占8位,生存时间字段常用的英文缩写是TTL (Time To Live),表明这是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在互联网中兜圈子(例如从路由器R1,转发到R2,再转发到R3,然后又转发到R1),因而白白消耗网络资源。TTL的意义是指明数据报在互联网中至多可经过多少个路由器 TTL值就减小到零,就会被转发路由器丢弃。
  • 协议,占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。常用的一些协议和相应的协议字段值如下:
  • 首部检验和, 占16位.这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。为了进一步减小计算检验和的工作量,IP首部的检验和不采用复杂的CRC检验码而采用一种简单的计算方法
  • 源地址 占32位。
  • 目的地址 占32位。

IP数据报首部的可变部分,IP数据报首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施,

IP数据报分组转发算法

分组转发是指在互联网络中路由器转发IP分组的物理传输过程与数据报转发机制。根据分组的目的IP地址与源IP地址是否属于同一个子网可分为直接转发和间接转发在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址,下一跳地址),在互联网上转发分组时,是从一个路由器转发到下一个路由器

在IP数据报的首部中没有地方可以用来指明“下一跳路由器的IP地址”。在IP数据报的首部写上的IP地址是源IP地址和目的IP地址,而没有中间经过的路由器的IP地址。那么待转发的数据报又怎样能够找到下一跳路由器呢?

  • 当路由器收到一个待转发的数据报,在从路由表得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成硬件地址(必须使用ARP),并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器

分组转发算法归纳:

划分子网和构造超网

上面所讨论的是IP层怎样根据路由表的内容进行分组转发,而没有涉及到路由表一开始是如何建立的以及路由表中的内容应如何进行更新。但是在进一步讨论路由选择之前,我们还要先介绍划分子网和构造超网这两个非常重要的概念。

划分子网

从两级IP地址到三级IP地址,在早期,原来的两级IP地址的设计不够合理。

  • 第一,IP地址空间的利用率有时很低。有的单位申请到了一个B类地址网络,但所连接的主机数并不多,可是又不愿意申请一个足够使用的C类地址,理由是考虑到今后可能的发展。
  • 第二,给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
  • 第三,两级IP地址不够灵活。有时情况紧急,一个单位需要在新的地点马上开通一个新的网络。但是在申请到一个新的IP地址之前,新增加的网络是不可能连接到互联网上工作的。

为解决上述问题,从1985年起在IP地址中又增加了一个“子网号字段”,使两级IP地址变成为三级IP地址,它能够较好地解决上述问题,并且使用起来也很灵活。这种做法叫做划分子网(subnetting) [RFC 950]。或子网寻址或子网路由选择 。划分子网己成为互联网的正式标准协议。划分子网是通过借用IP地址的若干位主机位来充当子网地址从而将原网络划分为若干子网而实现的。划分子网的思路如下:

  • 划分子网时,随着子网地址借用主机位数的增多,子网的数目随之增加,而每个子网中的可用主机数逐渐减少。

子网划分举例

以C类网络为例,原有8位主机位,2的8次方即256个主机地址,默认子网掩码255.255.255.0

  • 借用1位主机位,产生2个子网,每个子网有126个主机地址
  • 借用2位主机位,产生4个子网,每个子网有62个主机地址

每个网中,第一个IP地址(即主机部分全部为0的IP)和最后一个IP(即主机部分全部为1的IP)不能分配给主机使用,所以每个子网的可用IP地址数为总IP地址数量减2;根据子网ID借用的主机位数,我们可以计算出划分的子网数、掩码、每个子网主机数。

若子网占用7位主机位时,主机位只剩一位,无论设为0还是1,都意味着主机位是全0或全1。由于主机位全0表示本网络,全1留作广播地址,这时子网实际没有可用主机地址,所以主机位至少应保留2位

相关文章
|
3月前
|
监控 网络协议 安全
|
1月前
|
缓存 监控 网络协议
计算机网络的常用的网络通信命令(Windows)
本文介绍了网络技术中常用的命令,如ping用于检测网络连通性,ipconfig查看TCP/IP配置,netstat监控网络状态,arp显示和修改ARP缓存,at安排任务执行,tracert追踪路由,以及nbtstat获取NetBIOS信息。
28 1
|
28天前
|
安全 区块链 数据库
|
1月前
|
网络协议 网络架构
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
【第三期】计算机网络常识/网络分层模型与数据包封装传输过程
43 0
|
3月前
|
存储 网络协议 安全
计算机网络-网络层
计算机网络-网络层
|
3月前
|
网络协议 Java 关系型数据库
16 Java网络编程(计算机网络+网络模型OSI/TCP/IP+通信协议等)
16 Java网络编程(计算机网络+网络模型OSI/TCP/IP+通信协议等)
83 2
|
3月前
|
安全 网络协议 网络安全
|
5月前
|
网络协议 Apache 网络架构
计算机网络学习记录 网络的大概认识 Day1(下)
计算机网络学习记录 网络的大概认识 Day1(下)
32 2
|
5月前
|
存储 数据处理 网络架构
计算机网络学习记录 网络的大概认识 Day1(上)
计算机网络学习记录 网络的大概认识 Day1(上)
32 1