Linux——IP协议与路由选择

一、IP协议

IP协议:网络层协议

  • 协议版本:描述当前协议版本(IPV4、IPV6....)

  • 头部长度:描述IP报文的头部长度;最小20字节,最大60字节

  • 服务类型 :

  • 报文长度:描述IP报文长度;最小20B,最大64K

  • 分片标识 :用于IP报文分片

    • 当上层交付的数据过大,封装后的IP报文长度超过链路MTU限制时,报文会在网络层被切分为多个小分片,每个分片都封装独立IP报头后发送
    • 分片将在接收端重组,该字段用于标识分片归属哪一个原始IP报文
  • 分片标志 :

    • 第1位为保留位,必须置 0
    • 第2位DF位,标识是否允许分片
    • 第3位MF位,标识当前分片是否为原始报文的最后一个分片
  • 分片偏移 :以8字节为单位,描述当前分片的数据在原始IP报文数据部分中的起始相对偏移量

    • 由于分片偏移的单位是8B,除最后一个分片外,其余分片的数据长度必须是8字节的整数倍
  • TTL生命周期 :规定报文在网络中最多可以经过的路由器跳数

    • 每经过一台路由器,TTL值减1;当TTL减为0时,报文会被丢弃
    • 作用:防止IP报文在网络环路里无限循环转发
  • 上层协议:标记IP报文数据部分对应的上层协议,决定了接收端该把IP的数据交给哪个传输层协议处理

  • 校验和:校验数据一致性

  • 源端IP+对端IP:描述数据从哪个主机来、到哪个主机去

二、IP地址

(一)IP地址的组成

IP地址是网络中一台主机的唯一标识,同一个网络内主机的 IP 地址是不允许重复的;为了解决 IP 地址分配冲突问题,按照不同网络分配对应的IP地址

IP 地址的组成 :网络号 + 主机号;例如:127.0.0.1

网络号:网络的身份标识,同一网段内所有 IP 地址都带有相同的网络号

主机号:IP地址中除去网络号后的剩余部分,用来区分同一网络里不同的主机

(二)网络划分

1.早期网络划分

早期的网络划分:将网络分为五大类(IPv4 地址:4 字节,32 比特位)

  • A类网络:固定1位置为0;剩余7位作为网络号(0~127)、24位作为主机号
    • IP范围:0.0.0.0~127.255.255.255
  • B 类网络:固定2位置为10;剩余14位作为网络号(128.0~ 191.255)、16位作为主机号
    • IP范围:128.0.0.0~191.255.255.255
  • C 类网络:固定3位置为110;剩余21位作为网络号(192.0.0~ 223.255.255)、8 位作为主机号
    • IP范围:192.0.0.0~223.255.255.255
  • D 类网络:1110xxxx,用于组播通信,不区分网络号与主机号
    • IP范围:224.0.0.0~239.255.255.255
  • E 类网络:1111xxxx,保留做实验与研究使用
    • IP范围:240.0.0.0~225.255.255.25

2.CIDR方案

CIDR方案:现在的网络划分方式(在原来的基础上进行了细分的网络方式)

核心技术点:引入子网掩码

子网掩码:由一串连续的二进制1组成的一个数字,用于表示一个IP地址中哪些位都是网络号

  • 子网掩码与IP地址二进制相与,得到的就是网络号
  • 子网掩码取反后,与IP地址二进制相与,得到的就是主机号
  • 子网掩码用于划分子网,子网掩码取反+1 就是该网络中主机号的个数

例如:

C类地址:192.168.146.1;子网掩码:255.255.255.0

网络号:192.168.146.1 & 255.255.255.0 => 192.168.146.0

主机号:192.168.146.1 & ~255.255.255.0 = 192.168.146.1 & 0.0.0.255 => 1

在一个网络中,有2个主机号是不分配给主机的:一个是主机号全为0,一个是主机号全为1

  • 主机号为0的IP地址是网络号
  • 主机号全为1的IP地址是局域网广播地址(比如UDP广播)

(三)特殊IP地址

0.0.0.0:表示当前主机上,所有的网卡地址;常用于网络服务端的绑定监听地址,绑定了该地址的指定端口,则意味着该主机上所有网卡收到的指定端口的数据,都会给这个socket

127.0.0.1:127网络中的地址都是用于网络测试的地址(虚拟回环网卡的地址)

主机号全为0的地址:网络号(不分配给主机,是一个网络的标识)

主机号权威1的地址:局域网广播地址

(四)公网(外网)与私网(内网)

公网:就是通常所说的互联网,全球大家互相能够通信的网络

私网:是个人或机构组织组建的一种内部通信网络

用于组建私网的网络:为了避免私网与公网的IP地址冲突,因此决定必须有一些网络专门只能用于组建私网,不在公网内分配

  • 10.0.0.0:A类网络
  • 172.16.0.0~172.31.0.0:B类网络,组建中型私网
  • 192.168.0~192.168.255:C类网络,组建小型私网

三、路由选择

每个路由器中都维护一张路由表,表项包含:网络号、子网掩码、连接该网络的网卡、下一跳地址等信息

路由匹配流程:将数据包中的目的IP地址,和路由表每一条的子网掩码做按位与运算,把运算结果和该条目的网络号进行比较

  • 如果一致,则说明目的主机属于这个网段,从对应接口转发数据包
  • 多条匹配时遵循最长掩码匹配原则,都不匹配则走默认路由

数据包跨网转发时,现在绝大多数网络使用NAPT(网络地址端口转换)

  • NAPT作用:内网多台主机公用同一个公网IP访问外网,节约公网IP
  • 转发规则:数据包出内网时,把源IP+源端口转换成路由器的公网IP+新端口;回程包再根据端口映射转回内网主机
相关推荐
小冯不疯1 小时前
直播切片带货分账:3 类分成模型 × 4 道结算节点 × 2 类税务坑
1024程序员节
我是大猴子1 小时前
py how claude work项目分析
运维·服务器·windows·1024程序员节
Bug收容所1 小时前
Vue+JS Day3
前端·javascript·vue.js·前端框架·1024程序员节
H.莓飛1 小时前
【数据结构】排序_OJ题(二):划分与选择
linux·服务器·c语言·开发语言·数据结构·visual studio
远航计算机1 小时前
收录从分钟级变 3 到 7 天,抢首发为什么失效了
大数据·人工智能·爬虫·chatgpt·aigc·1024程序员节
iDao技术魔方1 小时前
Bun v1.4.4 实战:用 bun fmt 替掉 prettier 的 5 个步骤
typescript·1024程序员节
箓维1 小时前
UDP Socket的实现
网络·1024程序员节
AIyy8661 小时前
个人在线知识库怎么搭?从三种知识形态说起
1024程序员节
会飞的大可1 小时前
AI 新闻周报 | 2026年10月19日 — 10月24日
1024程序员节