网络层(IP)

发布于:2025-02-27 ⋅ 阅读:(18) ⋅ 点赞:(0)

基本概念

在这里插入图片描述

  • 子网和局域网是一个概念
  • 主机: 配有 IP 地址, 也能进行路由控制的设备;
  • 路由器: 即配有 IP 地址, 又能进行路由控制;
  • 节点: 路由器和主机的统称。

背景

  1. 两主机并不是直接连接的,路径选择问题?为什么? 由网络层(IP)解决
  2. 怎么把数据交给路由器,怎么办? 这是局域网通信的问题,两主机是直连的,在同一个子网中,由数据链路层解决

深入理解IP

  • 公网IP在全球具有唯一性。
  • IP,比如 192.168.72.1,这是点分十进制的
  • IP地址 = 目的网络 + 目的主机号

重谈TCP和UDP

  • IP解决的核心问题是主机距离变长
    在这里插入图片描述

网络层报头

在这里插入图片描述

  • 4位首部长度:跟TCP报头中的一样
  • 16位总长度:报文的大小

  • 如何解包?封包?
    解包:固定的20字节,然后根据4位首部长度+16为总长度来解包
    封包:根据格式封包就可以了

  • 8位协议:表示上层协议类型(UDP,TCP…)

  • 如何分用?
    根据8位协议,就可以知道交给上层的哪个协议。


  • TTL(生存时间):报文的生存时间,每经过一个路由器都会 - -,可以防止报文在环路中一直滞留,占用资源的情况。

网段划分

  • 是什么?为什么?怎么办?

是什么?

  • 有了目的IP是不够的,网路是被** 精心设计 (子网划分)**的
    被谁设计的? 网路服务提供商

在这里插入图片描述

  • 路由器有两个IP,路由器的主机号大都为1
  • 子网是有网络号的(比如xxx.xxx.xxx.0)
    在这里插入图片描述
  • 子网内的IP地址,都是从哪里来的?谁给的?
    路由器有构建子网的能力
  • IP = 目标网络号+目标主机号
  • IP报文被转发:
    1. 根据目标网络,将报文转发到目标网络
    2. 转发到目标网络后,将报文在内网进行转发

为什么?

在这里插入图片描述

  • 主机A将数据发送给主机B,但如何找到主机B?
  1. 线性遍历全球的主机,效率很低
  2. 主机A知道主机B的IP,将主机B的IP与主机A的网络号进行比较不相等,将数据交给路由器,路由器根据报文中目的IP查路由表,确定了主机B的网络,将报文交给相应的路由器,最后进行内网转发交给主机B。
  • 第二种方式效率高—>本质是查找—>本质是淘汰(淘汰效率高)
  • 在进入目标子网之前,不关心主机号—>报文在进行转发过程中,在进入目标网络之前,路由器只关心网络号,之后就是内网转发
  • 在进行路上路由时,路由的基本单位是网络
  • 总结,根据上面知道了为什么? 支持网络建设,提高了淘汰率。

怎么办?

  • 以前划分网络号和主机号的方式
    在这里插入图片描述

子网掩码

  • 新的划分方案CIDR(Classless Interdomain Routing)

在这里插入图片描述

IP 地址和子网掩码还有一种更简洁的表示方法,例如 140.252.20.68/24,
表示 IP 地址为140.252.20.68, 子网掩码的高 24 位是 1,也就是 
255.255.255.0

特殊IP

  • 将 IP 地址中的主机地址全部设为 0, 就成为了网络号, 代表这个局域网;
  • 将 IP 地址中的主机地址全部设为 1, 就成为了广播地址, 用于给同一个链路中
    相互连接的所有主机发送数据包;
  • 127.*的 IP 地址用于本机环回(loop back)测试,通常是 127.0.0.1
    在这里插入图片描述

IP地址不够用

  • 随着网络的发展,更多的设备需要入网,IP不够用:
    1. 动态分配 IP 地址: 只给接入网络的设备分配 IP 地址. 因此同一个 MAC 地址的设备, 每次接入互联网中, 得到的 IP 地址不一定是相同的;
    2. NAT 技术(后面会重点介绍);
    3. IPv6: IPv6 并不是 IPv4 的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6 用 16 字节 128 位来表示一个 IP 地址; 但是目前 IPv6 还没有普及;

公网IP和私有IP

  • 网络可以分为局域网和公网

  • 私有IP(只能用来组建局域网,私有IP不能出现在公网中)

    1. 10.*,前 8 位是网络号,共 16,777,216 个地址
    2. 172.16.到 172.31.,前 12 位是网络号,共 1,048,576 个地址
    3. 192.168.*,前 16 位是网络号,共 65,536 个地址
  • 公网IP不能重复

  • 在网络架设时,在内网,公网,在统一采用各自的子网掩码的方式,进行网络建设。

在这里插入图片描述

运营商

基本网络情况

  • 申请IP,无论公网,内网,网络建设工作—>由运营商来做

  • 家庭路由器有构建子网的功能

  • 局域网—>不仅我们自己在做,运营商也在做

  • 路由器:有家庭的,也有企业的
    在这里插入图片描述

  • 路由器有两个IP:LAN口IP(对内),WAN口IP(对外)
    在这里插入图片描述

  • 家庭路由器出去的报文到想到达公网,需要先到运营商构建的一个更大的子网中。

  • 为什么交钱给运营商?
    我们的报文必须经过运营商的转发才能到达公网。
    运营商可以因为你欠费不让你入公网
    访问非法目标地址,会被拦截

  • 科技上网的本质就是骗过运营商,不让运营商识别出来。

内网–>公网

在这里插入图片描述

  • 如果目的IP不在该子网中,会向上交付(交付给更大的子网)。

公网–>内网?(数据链路层会讲)


NAT技术

  • NAT技术为什么缓解了IP不足的问题?
    单独切分了一部分IP,只用它来做内网,这样IP地址就可以重复利用了。

全球网络

在这里插入图片描述

  • 公网就是对全球公网IP进行划分的过程
  • 在路由表条目中找不到目的网路号时,就会将报文交给缺省路由

路由

  • 路由器,一定尽可能帮助我们
    1. 配置默认路由
    2. 怎么走
    3. 到达入口路由器—>之后就是根据目标主机进行内网转发
      以上都是根据目标网络进行路由
  • 路由表信息,查看路由表信息的指令是 route
  • 路由表的信息有路由表生成算法来维护
    在这里插入图片描述

  • IP报文的转发过程本质就是进行各个子网之间的转发
  • IP解决的核心问题:路径选择,淘汰其他子网
    1. 根据目的网络进行路由
    2. 内网转发

分片和组装

  • 为什么不把滑动窗口的数据打成一个报文呢?而是一个又一个的段报文?
    规定:数据链路层单次发送的数据帧不能超过MTU(1500)
    在这里插入图片描述

  • IP报文太长,IP报文会分片—>网络层自己和对方分别进行分片和组装

  • 分片好不好?

    1. 分片和组装,上层传输层不关心
    2. 分片为更多的报文,任意一个丢包,组装就是不完整的—>分片之后丢包的概率增加,所以分片不能作为网络发送的主流
  • 如何不分片?
    传输层不能发过大的报文,所以滑动窗口的数据会被分为一段一段的数据


如果分片,如何分片?

在这里插入图片描述
16 位标识(id): 唯一的标识主机发送的报文. 如果 IP 报文在数据链路层被分片
了, 那么每一个片里面的这个 id 都是相同的.
3 位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要
用到). 第二位置为 1 表示禁止分片, 这时候如果报文长度超过 MTU, IP 模块就会丢弃报文. 第三位表示**“更多分片”**, 如果分片了的话, 最后一个分片置为 0, 其他是 1. 类
似于一个结束标记.
13 位分片偏移(framegament offset): 是分片相对于原始 IP 报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 除以 8 得到的. 因此, 除了最后一个报文之外(之前如果都是 8 的整数倍,最后一片的偏移量也一定是 8 的整数倍), 其他报文的长度必须是 8 的整数倍(否则报文就不连续了).

注意:片偏移(13 位)表示本片数据在它所属的原始数据报数据区中的偏移量**(以 8 字节为单位)**

在这里插入图片描述

  • 如何判断是否是分片
    在这里插入图片描述
  • 是否将分片收全?
    在这里插入图片描述
  • 如何组装?
    组装,就说明了已经收全了,根据片偏移量就可以了。

  • 如何分片?
  1. 对IP报文的有效载荷进行分片
  2. 片偏移量(必须是8的整数倍)是数据相对于有效载荷的偏移量
  3. 分片之后,每一片就是一个IP报文
    在这里插入图片描述
  • 分片和组装不一定只有在通信两端才会进行,在网络中也有可能进行