当前位置: 首页 > news >正文

网络层描述

 ipconfig 

 

分片 

假设原始数据包总长 4000字节,MTU(Maximum Transmission Unit)=1500字节(以太网默认),分片如下:

分片分片大小片偏移MF标志计算逻辑
1148001从第0字节开始,1480字节,还有后续分片。
214801851偏移=1480/8=185,仍有后续分片。
310403700偏移=(1480+1480)/8=370,最后一片。

注意

  • 每个分片的IP头部长度(通常20字节)不包含在分片数据长度内。

  • 片偏移值必须为整数(因为单位是8字节),因此分片长度需是8的倍数(IP层会自动填充)。

最大的长度是2^16,片偏移所能表示的最大数是2^13,所以一片应该是8个字节 

子网掩码

 

 解决IP地址浪费问题

  • 早期问题
    IPv4地址只有32位,总量有限(约43亿个)。若按传统分类(A/B/C类)分配,会导致大量地址浪费。

    • 例如:一个公司需要500个IP,但B类地址(/16)提供6.5万个,远超需求。

  • 子网划分的优化
    通过子网掩码灵活划分网络,避免浪费。

    • 将一个大网络(如192.168.0.0/16)拆分为多个小网络(如192.168.1.0/24)。

Q1:子网掩码必须连续吗?

  • 是的,标准的子网掩码是连续的10(如255.255.255.0)。

  • 非连续掩码(如255.0.255.0)已淘汰(早期用于复杂划分,现由CIDR取代)。

Q2:如何计算子网掩码?

  • 方法1:根据需求的主机数计算。

    • 例如:需要60个主机 → 主机位至少6位(2^6-2=62) → 掩码=/26255.255.255.192)用二进制表示为11111111.11111111.11111111.11000000。

  • 方法2:使用CIDR表示法(如192.168.1.0/24)。

CIDR(Classless Inter-Domain Routing,无类别域间路由)是用于灵活划分IP地址的表示方法,取代传统的A/B/C类地址划分,核心特点:

  • 格式IP地址/前缀长度(如 192.168.1.0/24)。

  • 作用:明确指定网络号和主机号的边界,实现更高效的地址分配。

CIDR子网掩码可用主机数适用场景
/32255.255.255.2551单设备(如VPN端点)
/30255.255.255.2522点对点链路(如路由器互联)
/24255.255.255.0254小型局域网(家庭/办公室)
/16255.255.0.065,534大型企业内网
/8255.0.0.016,777,214传统A类网络

子网掩码的作用
通过按位与(AND)运算,从IP地址中分离出网络号和主机号。

示例

  • IP地址:192.168.1.100

  • 子网掩码:255.255.255.0(即 /24

  • 计算:

    192.168.1.100  → 11000000.10101000.00000001.01100100
    255.255.255.0  → 11111111.11111111.11111111.00000000
    -------------------------- AND
    192.168.1.0    → 网络号
    0.0.0.100      → 主机号
  • 结论

    • 网络号:192.168.1.0

    • 主机号:100(范围:1~254,0和255保留)

NAT

NAT(Network Address Translation,网络地址转换)是一种将私有IP地址转换为公有IP地址的技术,主要用于解决IPv4地址短缺问题,并隐藏内网拓扑结构,提升安全性。 

NAT设备(如路由器)维护一张转换表,记录内网IP和端口与外网IP和端口的映射关系。
示例流程

  1. 内网主机192.168.1.100:54321)访问公网服务器(8.8.8.8:80)。

  2. NAT路由器将源地址替换为公网IP(如203.0.113.1:60000)。

  3. 服务器响应203.0.113.1:60000,NAT根据转换表将数据转发给内网主机。

prerouting 路由前  postrouting 路由后 

链类型处理阶段典型动作应用场景
PREROUTING路由前(入站)DNAT(端口转发)将公网请求转发到内网服务器。
POSTROUTING路由后(出站)MASQUERADE/SNAT内网设备共享公网IP上网。

 路由表

IPv4路由表摘要 (route print)

网络目标网络掩码网关接口跃点数
0.0.0.00.0.0.0192.168.106.254192.168.106.10335
127.0.0.0255.0.0.0在链路上127.0.0.1331
127.0.0.1255.255.255.255在链路上127.0.0.1331
127.255.255.255255.255.255.255在链路上127.0.0.1331
192.168.17.0255.255.255.0在链路上192.168.17.1291
192.168.17.1255.255.255.255在链路上192.168.17.1291
192.168.17.255255.255.255.255在链路上192.168.17.1291
192.168.44.0255.255.255.0在链路上192.168.44.1291
192.168.44.1255.255.255.255在链路上192.168.44.1291
192.168.44.255255.255.255.255在链路上192.168.44.1291
192.168.106.0255.255.255.0在链路上192.168.106.103291
192.168.106.103255.255.255.255在链路上192.168.106.103291
224.0.0.0240.0.0.0在链路上127.0.0.1331
224.0.0.0240.0.0.0在链路上192.168.17.1291
255.255.255.255255.255.255.255在链路上127.0.0.1331

 本地环回

127.0.0.0 是 IPv4 地址空间中保留的环回网络(Loopback Network)的起始地址,其作用是为设备提供内部自我通信的通道。以下是关键点:

  • 范围127.0.0.0/8(即 127.0.0.0 ~ 127.255.255.255)。

  • 最常用地址127.0.0.1(本地环回地址,别名 localhost)。 

Q1:127.0.0.0 和 127.0.0.1 的区别?

地址用途
127.0.0.0网络标识(通常不用于通信),代表整个环回网络。
127.0.0.1实际用于本机通信的环回地址(等价于 localhost)。

Q2:其他 127.x.x.x 地址能用吗?

  • 可以,但无实际意义(如 127.99.88.77 也会环回到本机),通常建议只用 127.0.0.1

Q3:IPv6 的环回地址是什么?

  • IPv6 的环回地址为 ::1(相当于 IPv4 的 127.0.0.1)。

组播

224.0.0.0 是 IPv4 地址空间中 组播(Multicast) 的起始地址,属于 D类地址(范围:224.0.0.0 ~ 239.255.255.255)。它的核心用途是支持一对多的网络通信,即一个发送者向多个接收者同时传输数据。

核心用途

(1) 组播通信

  • 特点:数据包发送到组播地址后,所有加入该组的设备都会接收(而非广播的全体接收)。

  • 示例

    • 视频会议(如Zoom、Teams使用组播传输音视频流)。

    • 股票行情推送(同一组播组内的终端同步接收数据)。

(2) 协议专用地址

  • 本地网络控制协议224.0.0.0/24 保留给本地网络协议(数据包不跨路由器转发):

    • 224.0.0.1:所有主机的组播地址(如ARP替代协议)。

    • 224.0.0.2:所有路由器的组播地址。

    • 224.0.0.5:OSPF路由协议。

    • 224.0.0.251:mDNS(Apple Bonjour/零配置网络)。

(3) 全局组播

  • 范围224.0.1.0 ~ 238.255.255.255 可跨路由器转发,用于互联网级应用(如IPTV)。

 默认网关

默认网关是本地网络中负责将数据包转发到其他网络(如互联网)的路由器或三层交换机的IP地址。它是设备访问外部网络的“出口”,当目标IP不在当前子网时,数据包会被发送到默认网关。

  1. 跨网络通信
    当设备需要访问其他子网或互联网时,数据包会先发送到默认网关,由网关决定下一跳路径。
    示例:你的电脑(192.168.1.100)访问百度(220.181.38.148),数据包会先发给网关(如 192.168.1.1)。

  2. 路由中转
    网关根据路由表将数据包转发到目标网络(如ISP的路由器或另一子网的路由器)。

  3. NAT转换(家庭/企业网络):
    网关通常兼任NAT设备,将私有IP(如 192.168.1.x)转换为公有IP(如 203.0.113.1)。

Q1:默认网关可以设置多个吗?

  • 可以,但通常只有一个生效(优先级由路由表决定)。多网关用于负载均衡或冗余备份(需协议如VRRP支持)。

Q2:网关IP必须属于本地子网吗?

  • 必须!否则设备无法通过ARP找到网关的MAC地址。
    错误示例

    • 设备IP:192.168.1.100/24(子网 192.168.1.0/24

    • 网关IP:192.168.2.1(不属于该子网)→ 无法通信

Q3:没有默认网关会怎样?

  • 设备只能访问同一子网内的其他设备,无法上网或访问其他子网。

DHCP

DHCP(Dynamic Host Configuration Protocol)是一种自动分配IP地址的网络协议,允许设备(如电脑、手机)在接入网络时,自动获取以下配置信息:

  • IP地址

  • 子网掩码

  • 默认网关

  • DNS服务器

  • 其他选项(如域名、时间服务器等

以一台电脑连接Wi-Fi为例:

  1. DHCP Discover(发现)

    • 设备广播发送DHCP Discover报文,寻找可用的DHCP服务器。

  2. DHCP Offer(提供)

    • 服务器回应DHCP Offer,提供一个可用的IP地址(暂未分配)。

  3. DHCP Request(请求)

    • 设备选择其中一个Offer,广播DHCP Request确认请求。

  4. DHCP Ack(确认)

    • 服务器最终确认分配,发送DHCP Ack,包含完整的网络配置。

:整个过程通过UDP广播(端口67/68)完成,通常耗时仅几毫秒。

类型动态IP静态IP
分配方式自动分配(通常通过DHCP协议)手动固定配置
变化频率定期更换(租约到期或重新连接时)永久不变
管理方由路由器或ISP的DHCP服务器管理由用户或网络管理员手动设置

 ARP

1. ARP的作用

  • 解决什么问题
    已知目标设备的IP地址,需要获取其MAC地址(因为局域网内通信依赖MAC地址,而非IP)。

  • 典型场景
    同一子网内的设备通信(如 192.168.1.100 访问 192.168.1.200)。

报文类型传输的MAC地址说明
ARP请求包含发送方的MAC地址广播询问:“谁有IP X?请告诉MAC地址,我的MAC是 AA:BB:CC:DD:EE:FF。”
ARP响应包含目标设备的MAC地址单播回应:“IP X 的MAC地址是 11:22:33:44:55:66。”

在网络上传输的为什么是ip地址而不是网络号?

在网络传输中,传输的是IP地址,但网络号是路由和转发的关键依据

1. 数据包中传输的内容

  • 传输的是完整的IP地址(如 192.168.1.100),而非单独的网络号。

  • IP包头格式

    • 源IP地址(Source IP):发送方的完整IP(如 192.168.1.100)。

    • 目标IP地址(Destination IP):接收方的完整IP(如 8.8.8.8)。

    • 不直接包含网络号,但子网掩码(或CIDR前缀)由路由设备本地存储。

2. 网络号的作用

网络号(如 192.168.1.0)是路由器和交换机在转发数据包时的关键判断依据

  1. 路由决策

    • 设备通过目标IP 按位与(AND)子网掩码,提取网络号。

    • 查询路由表,匹配网络号决定下一跳(如默认网关或直连网络)。

    • 示例

      • 目标IP:192.168.1.200,子网掩码:255.255.255.0 → 网络号 192.168.1.0

      • 路由表匹配 192.168.1.0/24,直接发送给该子网内的设备。

  2. 子网隔离

    • 不同网络号的设备需通过路由器通信(如 192.168.1.0/24 和 10.0.1.0/24)。

    • 同网络号的设备可直接二层转发(通过MAC地址)。

3. 为什么不全传输网络号?

  • 效率问题
    IP地址已包含足够信息,网络号可通过子网掩码实时计算,无需额外传输。

  • 灵活性
    子网掩码可动态配置(如VLSM),同一IP在不同网络中可能属于不同子网。

 局域网访问公网服务器的全过程

以下是局域网内设备(如 192.168.1.100)访问公网服务器(如 203.0.113.5:80)的详细步骤,涵盖 ARP、NAT、路由、TCP握手 等关键环节:


1. 局域网内通信准备

(1) 检查目标IP是否在同一子网

  • 设备计算目标IP的网络号:
    203.0.113.5 & 255.255.255.0 = 203.0.113.0

    • 对比本地网络号 192.168.1.0 → 不在同一子网,需通过默认网关转发。

(2) 获取网关MAC地址(ARP)

  • 设备发送 ARP请求(广播):

    Who has 192.168.1.1? Tell 192.168.1.100
  • 网关响应 ARP应答(单播):

    192.168.1.1 is at AA:BB:CC:DD:EE:FF
  • 结果:设备将网关MAC(AA:BB:CC:DD:EE:FF)存入ARP缓存。


2. 构造HTTP请求并发送

(1) 生成TCP数据包

  • 应用层:浏览器生成HTTP请求 GET / HTTP/1.1

  • 传输层:封装为TCP段(源端口 54321,目标端口 80,SYN标志位)。

  • 网络层

    • 源IP:192.168.1.100

    • 目标IP:203.0.113.5

(2) 发送到网关

  • 链路层

    • 源MAC:设备MAC(00:11:22:33:44:55)

    • 目标MAC:网关MAC(AA:BB:CC:DD:EE:FF)

  • 物理层:通过交换机/网卡发送到网关(路由器)。


3. 路由器处理(NAT转换)

(1) 源地址转换(SNAT)

  • 路由器检查NAT表,若不存在映射则新建:

    内部:192.168.1.100:54321 → 外部:203.0.113.1:60000
  • 修改数据包:

    • 源IP192.168.1.100 → 203.0.113.1(路由器公网IP)

    • 源端口54321 → 60000

(2) 路由决策

  • 查询路由表,确定下一跳(如ISP网关 202.102.1.1)。

  • 通过公网接口(如 eth1)发送数据包。


4. 公网传输

  • 数据包经过多个路由器跳转(通过BGP/OSPF协议寻路),最终到达服务器 203.0.113.5

  • 服务器收到TCP SYN包,回复 SYN-ACK(目标IP:203.0.113.1:60000)。


5. 路由器反向转换(DNAT)

  • 路由器根据NAT表将响应包的目标IP/端口还原:

    外部:203.0.113.1:60000 → 内部:192.168.1.100:54321
  • 转发到内网设备 192.168.1.100


6. 完成TCP连接

  • 设备收到 SYN-ACK,回复 ACK,完成三次握手。

  • HTTP请求正式发送,服务器返回网页数据(流程与上述类似)。

http://www.dtcms.com/a/303113.html

相关文章:

  • Leetcode_349.两个数组的交集
  • Word VBA快速制作试卷(2/2)
  • 【华为机试】5. 最长回文子串
  • 学习人工智能所需知识体系及路径详解
  • 记录几个SystemVerilog的语法——随机
  • 五自由度磁悬浮轴承转子:基于自适应陷波器的零振动攻克不平衡质量扰动的终极策略
  • (45) QT 提供了一个功能,以同步现代操作系统的编辑功能,在标题栏上显示 * 占位符,以显示窗体上发生了未被保存的修改
  • 三维插件 Forest 深度解析:打造高效逼真的自然环境
  • 命令执行漏洞
  • 计算机毕设分享-基于SpringBoot的健身房管理系统(开题报告+前后端源码+Lun文+开发文档+数据库设计文档)
  • USRP-X440 雷达目标发生器
  • 深入解析 Java Stream 设计:从四幕剧看流水线设计与执行机制
  • 对于ui=f(state)的理解(react)
  • Redis四种GetShell方式完整教程
  • 使用Docker在Rocky Linux 9.5上在线部署LangFlow
  • 【STM32编码器接口测速】实现测速功能
  • 删除二维特征图中指定区域的样本
  • linux系统----Ansible中的playbook简单应用
  • 【Java EE】多线程-初阶-线程的状态
  • java里List链式编程
  • 4、如何生成分布式ID?
  • Linux->模拟实现 fopen/fread/fwrite
  • Bruce Momjian 深圳 meetup 回顾
  • 大模型基础设施搭建 - 操作系统centos7
  • SDRAM
  • CTF-Web学习笔记:文件包含篇
  • 阿里给AI To C战略戴上眼镜
  • 4.应用层自定义协议与序列化
  • JUC线程池: ScheduledThreadPoolExecutor详解
  • VMWARE -ESXI-ntp时间同步无法启动异常处理