IP协议详解

目录

一、IP协议概念

二、IP协议头格式

三、地址管理

1、网段划分

[2、特殊的 IP 地址](#2、特殊的 IP 地址)

[3、IP 地址的数量限制(NAT)](#3、IP 地址的数量限制(NAT))

4、在跨局域网进行访问时应该如何?

四、路由选择


一、IP协议概念

IP (Internet Protocol,网际协议)是TCP/IP协议族的核心 ,位于OSI模型网络层,负责无连接、尽力而为的数据包跨网传输,核心是寻址和路由,不保证可靠交付(可靠性由TCP等上协议进行补充)


二、IP协议头格式

  • **4位版本:**固定为4,表示这是 IPv4 报文,若为6则对应 IPv6 协议
  • **4位首部长度:**以4字节为单位计数,最大值为15(对应60字节头部),用于标识 IP 头 部的总长度
  • 8位服务类型(TOS): 用于指定报文的传输优先级与服务质量(如低延迟、高吞吐量)
  • **16位总长度:**表示整个IP报文(头部+数据)的字节数
  • **16位标识:**为每个IP报文分配标识,用于分片重组时识别属于同一原始报文的分片
  • **3位标志:**核心是DF(不分片)和MF(更多分片),DF=1 表示禁止分片,MF=0 表示最后 一个分片
  • **13位片偏移:**标识当前分片在原始报文的位置,用于按序重组分片
  • **8位生存时间:**限制报文在网络中转发次数,防止无限转发,值为0时会丢弃
  • **8位协议:**标识IP报文承载的上层协议
  • **16位首部校验和:**仅对头部进行校验,用于验证传输是否正确
  • **32位源IP地址:**标识报文发送端IP地址
  • **32位目的IP地址:**标识报文接收端IP地址

三、地址管理

1、网段划分

IP 地址由网络号和主机号构成

**网络号:**保证相互连接的两个网段具有不同的标识

**主机号:**同一网段内,主机之间具有相同的网络号,不同的主机号

  • 不同的子网就是把网络号相同的主机放在一起
  • 如果在同一子网中增加一台设备,那么它们的主机号不能重复
  • DHCP技术能给子网内新增主机自动分配IP地址

以前提出一种划分网络号和主机号方案,将所有IP地址分为了5类

  • A类:0.0.0.0127.255.255.255
  • B类:128.0.0.0191.255.255.255
  • C类:192.0.0.0223.255.255.255
  • D类:224.0.0.0239.255.255.255
  • E类:240.0.0.0247.255.255.255

这样会导致浪费大量的 IP地址,针对这种情况有了新的划分方案 CIDR(Classes Interdomain Routing):

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号
  • 子网掩码也是一个32位的正整数,通常用一串 " 0 " 来结尾
  • 将 IP地址和子网掩码进行"按位与"操作,得到的结果就是网络号

2、特殊的 IP 地址

在 IP 地址中针对一些特定值有一些特定的含义:

  • 将 IP 地址中的主机地址全部设为 0,就成为了网络号,代表这个局域网(192.168.100.55 --> 192.168.100.0), 某个具体设备不可以使用这个IP
  • 将 IP 地址中的主机地址全部设为 1 ,就成为了广播地址,用于给同一链路中相互连接的主机发送数据包(192.168.100.255)
  • 127.* 的 IP 地址用于本机环回(loop back)测试,通常是127.0.0.1 。localhost(域名,IP 地址的代称)

3、IP 地址的数量限制(NAT)

在进行设计 IP 地址时是为了让每个设备的 IP 地址不同,用来区分

IPv4是一个4字节32位的正整数,表示的范围是 2^32 ( 0 ~ 42亿9000万 ),TCP/IP规定每个主机都需要有一个IP地址,但由于互联网的发展,IPv4 所指的范围对于现在的设备不足以支持

应对IP地址不足策略:

  1. **动态分配IP地址:**当一个设备需要上网则进行分配,不需要则不分配(此方法已经在使用,但效果有限)
  2. NAT网络地址转换(核心): 将IP地址分为两大类 ①内网IP(私网IP): 10.* 、172.16-172.31 、192.168.* ②外网IP(公网IP): 其余全是外网IP 注意:约定不同局域网内,内网IP可以重复
  3. **IPv6:**不是IPv4的升级,这是两个不相关的协议,彼此不兼容,IPv6用16字节128位表示一个IP地址

4、在跨局域网进行访问时应该如何?

此处又分为5种情况:

  1. 同一个局域网内两个设备进行访问,此时不需要考虑NAT,只需要根据不同IP地址来区分不同设备即可
  2. 两个外网IP设备访问,也不需要考虑NAT,因为外网IP全局唯一
  3. 不同局域网中两个设备尝试访问对方,这是不被允许的,因为它们的IP地址可能相同
  4. 外网 IP 的设备访问内网 IP 的设备,这也是不被允许的,内网IP设备的地址可能会混淆
  5. 内网 IP 设备尝试访问外网 IP 设备,就会触发 " 网络地址转换 " ,NAT设备(路由器)对IP 数据报其中的 "源 IP 做出修改" ,修改为自己的IP

第五种访问的大致流程如下:

首先内网设备知道了源IP和目地IP及端口号,我们知道要访问外网设备需要外网IP ,对方在返回响应时也需要外网IP 才能做到,那么我们以联通路由器为例(有外网IP),一个联通路由器在一定时间内可能会有成千上万的内网IP进行访问,我们应该如何才能做到区分并返回正确响应,在NAT设备中维护了一个表,包含了映射关系(如果端口号相同也会进行一定的替换),然后会将替换好的IP地址与端口号发往目的IP和端口,此处就完成了发送,返回响应也根据表中数据进行修改后即可


四、路由选择

IP 协议进行数据转发的时候,路线规划的过程,由于如今网络环境的复杂化,IP 协议的路由选择不知道 "全局" ,因此IP协议的路由选择是**"渐进式"、"启发式"**的过程,它只能给出路线的 "较优解"

  • 路由的过程,是一跳一跳(Hop by Hop)"问路"的过程
  • " 一跳一跳 " 就是数据链路层的一个具体区间,具体在以太网中指源MAC地址到目的MAC地址之间的帧传输区间


IP 数据包的传输过程也和问路一样,数据转发的时候到达路由器,每个路由器都会知道一些周围的情况(维护一个"路由表")

  1. 如果路由器知道在哪,会给出具体位置
  2. 如果路由器不知道在哪,会给出一个方向

在路由表中如果没有任何一个记录可以匹配到,就会走默认的路径(下一跳表项,都不匹配会给默认值),下一跳表项通常是指 "上一级" 路由器


相关推荐
lfPCB2 小时前
高多层HDI板,撑起5G基站高频PCB核心
网络·5g
Madison-No72 小时前
【Linux】一切皆文件的理解 && 缓冲区 && 简易设计libc库
linux·运维·服务器
Alaaaaaaan2 小时前
[DevOps]使用github-action工具部署docker容器(实现提交代码一键推送部署到服务器)
服务器·前端·docker·容器·github
LaoZhangGong1232 小时前
学习TCP/IP的第9步:客户端和服务端综合测试
网络·学习·tcp/ip
云泽8083 小时前
深入浅出 Linux:Shell 运行机制与核心权限指令解析
linux·运维·服务器
比奇堡派星星3 小时前
linux Zram
linux·运维·服务器
Web3VentureView3 小时前
目标:覆盖全网主流公链,SYNBO 正式开启公链生态媒体合作矩阵计划
大数据·网络·人工智能·区块链·媒体·加密货币
EmbedLinX3 小时前
Linux 之网络通信
linux·服务器·c语言·笔记·学习