【计算机网络】 模块二:网络层协议

发布于:2023-01-19 ⋅ 阅读:(325) ⋅ 点赞:(0)

网络层的IP 协议目前主要有两个版本 IPv4 IPv6

IPV4

IP 协议

在这里插入图片描述

  • IP 协议(Internet Protocol)是一个处于垄断地位的网络层协议。 IPv4 就是 IP 协议的第 4 个版本, 是目前互联网的主要网络层协议。IPv4 为传输层提供 Host-To-Host 的能力,IPv4 需要底层数据链路层 的支持。
  • IP 协议并不负责数据的可靠性。传输数据时,数据被切分成一个个数据封包。IP 协议上层的传输层协议 会对数据进行一次拆分,IP 协议还会进一步进行拆分。进行两次拆分是为了适配底层的设备。可靠性:保证数据无损地到达目的地。可靠性是 IP 协议上方的 Host-To-Host 协 议保证的
  • IP 协议可能会遇到下面这几个问题:
    • 封包损坏(数据传输过程中被损坏);
    • 丢包(数据发送过程中丢失);
    • 重发(数据被重发,比如中间设备通过 2 个路径传递数据);
    • 乱序(到达目的地时数据和发送数据不一致)。
  • 对于网络层来说,需要解决延迟 吞吐量 丢包率 方面的问题

IP 协议的工作原理

IP 协议接收 IP 协议上方的 Host-To-Host 协议传来的数据,然后进行拆分,在每个切片增加协议头,最后 IP 协议通过寻址 和路由能力最终把封包送达目的地。

  • 分片(Fragmentation): 分片就是把数据切分成片。 IP 协议通过它下层的局域网(链路层)协议传输数据,因此需要适配底层传 输网络的传输能力。数据太大通常就不适合底层网络传输,这就需要把大的数据切片。 当然也可能选择不切片,IP 协议提供了一个能力就是把封包标记为不切片,当底层网络看到不切片的封包,又没有能力 传输的时候,就会丢弃这个封包。你要注意,在网络环境中往往存在多条路径,一条路径断了,说不定 其他路径可以连通。
  • 增加协议头(IP Header):切片完成之后,IP 协议会为每个切片(数据封包 Datagram)增加一个协议头。在这里插入图片描述
  • 最重要的是原地址和目标地址。IPv4 的地址是 4 组 8 位的数字,总共是 32 位。
  • Type Of Service 服务的类型,是为了响应不同的用户诉求,用来选择延迟、吞吐量和丢包率之间 的关系。
  • IHL(Internet Header Length)用来描述 IP 协议头的大小。所以 IP 协议头的大小是可变的。IHL 只有 4 位,最大值 1111 = 15。最大是 15 个双字(15*4 字节 = 60 字节)。
  • Total Length 定义报文(封包 Datagram)的长度。
  • Identification(报文的 ID),发送方分配,代表顺序。 Fragment offset 描述要不要分包(拆分),以及如何拆分。
  • Time To Live 描述封包存活的时间。因此每个 IP 封包发送出去后,就开始销毁倒计时。如果倒计 时为 0,就会销毁。比如中间的路由器看到一个 TTL 为 0 的封包,就直接丢弃。
  • Protocol 是描述上层的协议,比如 TCP = 6,UDP = 17。 Options 代表可选项。
  • Checksum 用来检验封包的正确性,

延迟、吞吐量、丢包率

  • IPv4 协议中提供了一个叫作 Type of Service(服务类型)的字段。这个字段是为了在延 迟、吞吐量和丢包率三者间选择。
  • 延迟(latency):指的是 1 bit 的数据从网络的一个终端传送到另一个终端需要的时间。这个时间包括在发送端准备发 送的时间、排队发送的时间、发送数据的时间、数据传输的时间等。
  • 吞吐量(Throughput):指单位时间内可以传输的平均数据量。比如用 bit/s 作为单位,就是 bps。吞吐量和延迟没有联系,比如延迟很高的网络,有可能吞吐量很高。可以类比成水管很大流速很慢,对比水管很细流速很快,这两种情况,最终流量可以是相等的。
  • 丢包率(Packet loss ):指发送出去的封包没有到达目的地的比例。 在最大流速确定的网络中,丢表率会直接影响吞吐 量。
  • 还有一个追求就是低成本

寻址(Addressing)

在这里插入图片描述

  • IPv4 协议的寻 址过程是逐级寻址
  • IPV4地址: 4 个 8 位(Octet)排列而成,总共可以编址 43 亿个地址,4 组数字用.分开,实际上在内存和传 输过程中,就是直接用 32 位。

在这里插入图片描述

  • 寻址过程:
    在这里插入图片描述

路由(Routing)

  • 在寻址过程中,数据总是存于某个局域网中。如果目的地在局域网中,就可以直接定位到设备了。如果 目的地不在局域网中,这个时候,就需再去往其他网络。

在这里插入图片描述

  • 由于网络和网络间是网关在连接,因此如果目的地 IP 不在局域网中,就需要为 IP 封包选择通往下一个 网络的路径,其实就是选择其中一个网关。如果一个网络和多个网络接壤,那自然需要多个网关了。如图,路由器在选择 IP 封包下一个应该是去往哪个 Gateway(网关)?
  • 目前IP地址为14.215.177.3,如果你要去往 14.0.0.0 网络,IP 地址 14.215.177.38 先要和 255.0.0.0 进行位运算,然 后再查表,看到 14.0.0.0,得知去往 Gateway 的网卡(IFace)是 16.12.1.1。

IPv6

IPv4 和 IPv6 相似点

比如一个 TCP 段 (Segment),然后将 TCP 段再次切片做成一个个的 IPv6 封包(Datagram or Packet),再调用底层 局域网能力(数据链路层)传输数据。具体的过程如下图所示:
在这里插入图片描述

  • IPv6 的工作原理和 IPv4 类似,分成切片(Segmentation)、增加封包头、路由(寻址)这样几个阶段 去工作。IPv6 同样接收上方主机到主机(Host-to-Host)协议传递来的数据.
  • 作为网络层协议的 IPv6,最核心的能力是确保数据可以从发送主机到达接收主机

IPv6 地址

  • IPv4 的地址是 4 个 8 位(octet),总共 32 位。 IPv6 的地址是 8 个 16 位(hextet),总共 128 位。IPv6 的地址用:分割,如0123:4567:89ab:cdef:0123:4567:89ab:cdef(完全态),总共 8 个 16 位的数字,通 常用 16 进制表示。
    在这里插入图片描述
  • 简写的方式。比如: 0123:4567:0000:0000:0123:4567:0000:cdef 可以省略前 64 字节的0000:0000简写为: 0123:4567::0123:4567:0000:cdef。::只能出现一次,相当于省略了若干组0000。
    在这里插入图片描述

IPv6 的寻址

四种类型寻址类型:

全局单播寻址

  • (和 IPv4 地址作用差不多,在互联网中通过地址查找一个设备,简单来说,单播就 是 1 对 1);
    在这里插入图片描述
    在这里插入图片描述
  • IPv6 地址太多,因此不再需要子网掩码,而是直接将 IPv6 的地址分区即可。
    在实现全局单播时,IPv6 地址通常分成 3 个部分:
  • 站点前缀(Site Prefix)48bit,一般是由 ISP(Internet Service Providor,运营商)或者RIR (Regional Internet Registry, 地区性互联网注册机构),RIR 将 IP 地址分配给运营商;
  • 子网号(Subnet ID),16bit,用于站点内部区分子网;
  • 接口号(Interface ID), 64bit,用于站点内部区分设备。
  • 因此 IPv6 也是一个树状结构,站点前缀需要一定资质,子网号和接口号内部定义。IPv6 的寻址过程就 是先通过站点前缀找到站点,然后追踪子网,再找到接口(也就是设备的网卡)。

本地单播

在这里插入图片描述

  • IPv4 里的一个内部网络,要求地址必须以fe80开头,类似我们 IPv4 中127开头 的地址);
  • 本地单播地址必须以fe80开头,后面 64 位的 0,然后接上 54 位的设备编号。上 图中的 Interface 可以理解成网络接口,其实就是网卡。

分组多播(Group Multicast)

  • 类似今天我们说的广播,将消息发送给多个接收者;
  • IPv6 中设计了分组多播,来实现广播的能力。当 IP 地址以 8 个 1 开头,也就是ff00开头,后面会跟上 一个分组的编号时,就是在进行分组多播。

任意播(Anycast)

  • 本质是将消息发送给多个接收方,并选择一条最优的路径。这样说有点抽象,接下来我具体解 释一下。
  • 比如说在一个网络中有多个授时服务,这些授时服务都共享了一个任播地址。当一个客户端想要获取时间,就可以将请求发送到这个任播地址。客户端的请求扩散出去后,可能会找到授时服务中的一个或者多个,但是距离最近的往往会先被发现。这个时候,客户端就使用它第一次收到的授时信息修正自己的时间。

IPv6 和 IPv4 的兼容

情况 1:IPv4 网络和 IPv6 网络通信

在这里插入图片描述

  • 1、客户端通过 DNS64 服务器查询 AAAA 记录。DNS64 是国际互联网工程任务组(IETF)提供的一种 解决 IPv4 和 IPv6 兼容问题的 DNS 服务。这个 DNS 查询服务会把 IPv4 地址和 IPv6 地址同时返回。
  1. DNS64 服务器返回含 IPv4 地址的 AAAA 记录。
  2. 客户端将对应的 IPv4 地址请求发送给一个 NAT64 路由器 4. 由这个 NAT64 路由器将 IPv6 地址转换为 IPv4 地址,从而访问 IPv4 网络,并收集结果。 5. 消息返回到客户端。

情况 2:两个 IPv6 网络被 IPv4 隔离

在这里插入图片描述

  • 隧道的本质就是在两个 IPv6 的网络出口网关处,实现一段地址转换的程序。

局域网

  • 广域网是由很多的局域网组成的,比如公司网络、家庭网络、校园网络等。

内部网络和外部网络

在这里插入图片描述

  • 广域网是由很多的局域网组成的,比如公司网络、家庭网络、校园网络等。
  • 交换机(链路层交换机):通常工作在链路层;而路由器通常也具有交换机的能力,工作在网络层和链路层。
  • 光纤是一种透明的导光介质,多束光可以在一个介质中并行传播,不仅信号容量大,重量轻,并行度高 而且传播距离远,不能弯曲,因此办公室里用来连接交换机和个人电脑的线路肯定不能是光 纤,光线通常都用于主干网络

局域网数据交换(MAC 地址)

  • 设备间通信的本质其实是设备拥有的网络接口(网卡)间的通信。为了区 别每个网络接口,互联网工程任务组(IETF)要求每个设备拥有一个唯一的编号,这个就是 MAC 地 址。
  • 更改地址 IP会改变 , 但是MAC并不会改变。
  • 在一个局域网中,我们不可以将消息从一个接口(网卡)发送到 另一个接口(网卡),而是要通过交换机(进行数据交互).
  • 数据的发送方,将自己的 MAC 地址、目的地 MAC 地址,以及数据作为一个分组(Packet) 也称作 Frame 或者封包,发送给交换机。交换机再根据目的地 MAC 地址,将数据转发到目的地的网络接口(网卡)。
  • 这个分组或者 Frame,是不是 IP 协议的分组呢?——不是,这里提到的是链路层的数据交换,它支持 IP 协议工作,是网络层的底层。所以,如果 IP 协议要传输数据,就要将数 据转换成为链路层的分组,然后才可以在链路层传输。
  • Maximun Transmission Unit,最大传输单元,意思是链路层网络允许的 最大传输数据分组的大小。因此 IP 协议要根据 MTU 拆分封包。
  • MSS(Maximun Segment Size,最大段大小) TCP 段,或 者称为 TCP 分组(TCP Packet)的最大大小。MSS 是传输层概念,MTU 是链路层概念。
  • 因为 TCP 解决的是广域网 的问题,MTU 是一个链路层的概念,要知道不同网络 MTU 是不同的,所以二者不可能产生关联

地址解析协议 (ARP)

  • 在一个网络接口向另一个网 络接口发送数据的时候,至少要提供这样 3 个字段:
    • 1.源 MAC 地址 2. 目标 MAC 地址 3. 数据
      
  • 网络接口 得到目标接口的MAC过程 :一个中间服务帮助根据 IP 地址找到 MAC 地址——这就是地址解析协议(Address Resolution Protocol,ARP)。
  • 发送接口会发送一个 广播查询给到交换机,交换机将查询转发给所有接口。
    在这里插入图片描述
  • 如果某个接口发现自己就是对方要查询的接口,则会将自己的 MAC 地址回传。接下来,会在交换机和 发送接口的 ARP 表中,增加一个缓存条目。 不在需要广播查询了.这个过程和 DNS 非常相似,采用的是逐级缓存的设计减少 ARP 请求
    在这里插入图片描述
  • 发送接口先查询本地的 ARP 表,如果本地没有数据,然后广播 ARP 查询。ARP 表是一种缓存,也要考虑缓存 的设计。
  • 家用的路由器,也具备交换机的功能。但是当 ARP 表很大的时候,就需要专门的、能够承载 大量网络接口的交换设备。

连接内网

  • 公司内部有多个子网。这个时候一个子网如果要访问另一个子网,就需要通过路由器。
    在这里插入图片描述

连接外网(网络地址转换技术,NAT)

  • IPv4 协议因为存在网络地址耗尽的问题,不能为一个公司提供足够的地址,因此内网 IP 可能会和外网重复。
    在这里插入图片描述
  • NAT 技术转换的是 IP 地址,私有 IP 通过 NAT 转换为公网 IP 发送到服务器。服务器的响应,通过 NAT 转换为私有 IP,返回给客户端。通过这种方式,就解决了内网和外网的通信问题

小结

  • 链路层发送数据靠的是 MAC 地址,MAC 地址就好像人的身份证一样。局域网中,数据不可 能从一个终端直达另一个终端,而是必须经过交换机交换。交换机也叫作链路层交换机,它的工作就是 不断接收数据,然后转发数据。通常意义上,交换机不具有路由功能,路由器往往具有交换功能
  • 已知 IP 地址,找到 MAC 地址的协议,叫作地址解析协议
  • 网络和网络的衔接,必须有路由器(或者等价的设备)。一个网络的设备不能直接发送链路层分组给另 一个网络的设备,而是需要通过 IP 协议让路由器转发。

实战工具 : Wireshark 看文档

思考题

路由和寻址的区别是什么?

  • 寻址(Addressing)就是通过地址找设备。在 IPv4 协议中,寻址找到的是一个设备所在的位置。
  • 路由(Routing)本质是路径的选择。必须能够理解地址,也就是需要借助寻址的能力。要通过寻址找到最终的设备,又 要借助路由在每个节点选择数据传输的线路。因此,路由和寻址,是相辅相成的关系。

下面这几个地址 127.0.0.1, localhost, 0.0.0.0 有什么不同?

  • 127.0.0.1是本地回环地址(loopback),发送到 loopback 的数据会被转发到本地应用。
  • localhost 指代的是本地计算机,用于访问绑定在 loopback 上的服务。localhost 是一个主机名,不仅仅可以指向 IPv4 的本地回环地址,也可以指向 IPv6 的本地回环地址 [::1]。
  • 0.0.0.0是一个特殊目的 IP 地址,称作不可路由 IP 地址,它的用途会被特殊规定。通常情况下,当我 们把一个服务绑定到0.0.0.0,相当于把服务绑定到任意的 IP 地址。比如一台服务器上有多个网卡, 不同网卡连接不同的网络,如果服务绑定到 0.0.0.0 就可以保证服务在多个 IP 地址上都可以用。

Tunnel 技术是什么?

【解析】Tunnel 就是隧道,在两个网络之间,用隧道连接,位于两个网络中的设备通信,都可以使用这个隧道。隧道 是两个网络间用程序定义的一种通道。具体来说,如果两个 IPv6 网络被 IPv4 分隔开,那么两个 IPv6 网 络的出口处(和 IPv4 网络的网关处)就可以用程序(或硬件)实现一个隧道,方便两个网络中设备的通信。

总结下 IPv6 和 IPv4 究竟有哪些区别?

  • IPv6 和 IPv4 最核心的区别是地址空间大小不同。 IPv6 用 128 位地址,解决了 IP 地址耗尽问 题。因为地址空间大小不同,它们对地址的定义,对路由寻址策略都有显著的差异。
  • 在路由寻址策略上,IPv6 消除了设备间地址冲突的问题,改变了划分子网的方式。在 IPv4 网络中,一 个局域网往往会共享一个公网 IP,因此需要 NAT 协议和外网连接。
  • 划分子网,IPv4 地址少,需要子网掩码来处理划分子网。IPv6 有充足的地址,因此不需要局域 网共享外网 IP。也正因为 IPv6 地址多,可以直接将 IPv6 地址划分成站点、子网、设备,每个段都有充 足的 IP 地址。
  • IP地址的分配方式: IPv4 网络中设备分配 IP 地址的方式是中心化的,由 DHCP(动态主机协议)为局域网中的设备分配 IP 地址。而在 IPv6 网络中,因为 IP 地址很少发生冲 突,可以由设备自己申请自己的 IP 地址。
  • IPv6 中任何一个节点都可以是一个组播节点,节点可以通过向周围节点类似打探 消息的方式,发现更多的节点,叫作邻居发现(ND)。

网络地址转换协议是如何工作的?

解析】网络地址解析协议(NAT)解决的是内外网通信的问题。NAT 通常发生在内网和外网衔接的路 由器中,由路由器中的 NAT 模块提供网络地址转换能力。从设计上看,NAT 最核心的能力,就是能够 将内网中某个 IP 地址映射到外网 IP,然后再把数据发送给外网的服务器。当服务器返回数据的时候, NAT 又能够准确地判断外网服务器的数据返回给哪个内网 IP。

**实现: **

  • NAT 需要作为一个中间层替换 IP 地址。 发送的时候,NAT 替换源 IP 地址(也就是将内网 IP 替换 为出口 IP);接收的时候,NAT 替换目标 IP 地址(也就是将出口 IP 替换回内网 IP 地址)。
  • 发送的时候,NAT 要为每 个替换的内网 IP 地址分配不同的端口,确保出口 IP 地址+ 端口的唯一性,这样当服务器返回数据 的时候,就可以根据出口 IP 地址 + 端口找到内网 IP

IPv6 协议还需要 NAT 吗?

虽然IPv6解决了IP耗尽的问题,但是 IPv6 网络还没有完全普及。尽管很多公司已经支持自己的互联网产品可以使用 IPv6 访问,但是公司内部员工使用的内部网络还是 IPv4。如果要连接 IPv6 和 IPv4 网络,仍然需要 NAT 协议(NAT64),这个协议可以让多个 IPv6 的设备共享一个 IPv4 的公网地址。

在这里插入图片描述

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到