网络编程基础(2)

一、IP和路由(网络层)

1.1、IP协议

1.1.1、基本概念

主机:配有IP地址,但是不进行路由控制的设备。

路由器:即配有IP地址,又能进行路由控制。

节点:主机和路由的统称。

1.1.2、协议头格式

 0                   1                   2                   3  
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1      
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
| 版本 (4) |  头部长度 (4)  |   服务类型 (8)  |    总长度 (16)   |  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
|      标识 (16)      |  标志 (3)  | 片偏移 (13) |  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
|    生存时间 (8)   |   协议 (8)  |  头部校验和 (16)  |  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
|                    源 IP 地址 (32)                     |  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
|                    目的 IP 地址 (32)                     |  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
|                   可选字段(可选,最多40字节)                  |  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  
字段 比特数 说明
版本(Version) 4 bits 标识 IP 协议版本,此处为 4(IPv4)。
头部长度(IHL) 4 bits 定义 IPv4 头部的长度(单位:4 字节)。例如,5 表示头部长度为 5×4=20 字节(无可选字段)。
服务类型(ToS) 8 bits 用于服务质量(QoS),如优先级标记。现代网络中常改用 DSCP(区分服务代码点)和 ECN(显式拥塞通知)。
总长度(Total Length) 16 bits 整个 IP 数据包的总长度(包括头部和数据),最大值为 65535 字节
标识(Identification) 16 bits 唯一标识一个数据包,用于分片重组。同一数据包的分片具有相同的标识值。
标志(Flags) 3 bits 控制分片行为:
- 第 1 位:保留(必须为 0)
- 第 2 位:DF(Don't Fragment)(1=禁止分片)
- 第 3 位:MF(More Fragments)(1=后续还有分片)
片偏移(Fragment Offset) 13 bits 标识分片在原数据包中的位置(单位:8 字节)。例如,0 表示第一个分片。
生存时间(TTL) 8 bits 数据包的最大跳数(每经过一个路由器减 1,TTL=0 时丢弃)。常见默认值:64(Linux)或 128(Windows)。
协议(Protocol) 8 bits 指示上层协议类型:
6:TCP
17:UDP
1:ICMP
- 完整列表见 IANA 协议号列表
头部校验和(Header Checksum) 16 bits 仅校验 IPv4 头部的完整性(不校验数据部分)。
源 IP 地址 32 bits 发送方的 IPv4 地址(如 192.168.1.1)。
目的 IP 地址 32 bits 接收方的 IPv4 地址(如 8.8.8.8)。
可选字段(Options)

最多40bit

可扩展功能(如安全选项、时间戳等),长度可变(最多 40 字节),实际中极少使用。

1.1.3、网段划分

IP一般分为两个部分,网络号和主机号

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

主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号

子网掩码(Subnet Mask)

  • 作用:标识 IP 地址中哪些部分是网络号,哪些部分是主机号。

  • 格式:与 IP 地址长度相同(IPv4 为 32 位),由连续的 1 和 0 组成。

子网号 网络地址 可用主机范围 广播地址
第 1 个子网 192.168.1.0 192.168.1.1 ~ 192.168.1.62 192.168.1.63
第 2 个子网 192.168.1.64 192.168.1.65 ~ 192.168.1.126 192.168.1.127
第 3 个子网 192.168.1.128 192.168.1.129 ~ 192.168.1.190 192.168.1.191
第 4 个子网 192.168.1.192 192.168.1.193 ~ 192.168.1.254 192.168.1.255

IPv4地址分类对比表

类别 地址范围 默认子网掩码 用途 私有地址范围 支持主机数 特点
A类 1.0.0.0 ~ 126.255.255.255 255.0.0.0 (/8) 超大型网络(政府、ISP) 10.0.0.0/8 ≈1677万(224−2224−2) 网络号占8位,主机号占24位;地址空间极大。
B类 128.0.0.0 ~ 191.255.255.255 255.255.0.0 (/16) 中型企业或机构 172.16.0.0/12 ≈6.5万(216−2216−2) 网络号占16位,主机号占16位;平衡规模与利用率。
C类 192.0.0.0 ~ 223.255.255.255 255.255.255.0 (/24) 小型网络(家庭、办公室) 192.168.0.0/16 254(28−228−2) 网络号占24位,主机号占8位;适合小规模部署。
D类 224.0.0.0 ~ 239.255.255.255 无子网掩码 组播(Multicast) 无私有地址 不适用 用于一对多通信(如视频流、在线会议)。
E类 240.0.0.0 ~ 255.255.255.255 无子网掩码 保留地址(实验或未来扩展) 不可用 不适用 禁止分配给常规设备,仅用于研究。

特殊的IP地址:

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

1.2、路由

路由是指导数据包充源设备通过网络传递到目标设备的过程,核心依赖路由器和路由表来实现路径的选择和转发。

1.2.1、路由的核心组件

组件 说明
路由器(Router) 网络层设备,负责根据路由表转发数据包,连接不同网络(如 LAN 和 WAN)。
路由表(Routing Table) 存储网络路径信息,包含目标网络、下一跳地址、接口、优先级等条目。
路由协议(Routing Protocol) 用于路由器间动态交换路由信息(如 OSPF、BGP)。

1.2.2、路由类型对比

类型 说明 优点 缺点 适用场景
静态路由 管理员手动配置路由表,路径固定。 简单、开销小、安全性高。 无法适应拓扑变化,维护复杂。 小型网络或特定路径(如默认路由)。
动态路由 路由器通过协议自动学习并更新路由表。 自适应网络变化,扩展性强。 资源消耗大(带宽、CPU)。 中大型复杂网络(企业网、互联网)。
默认路由 指向“未知目标”的通用路径(如 0.0.0.0/0)。 简化配置,减少路由表大小。 依赖上层路由的准确性。

边缘网络出口(如家庭路由器)。

1.2.3、常见路由协议

 内部网关协议(IGP,用于同一自治系统内)

协议 类型 算法 更新方式 适用场景
RIP 距离矢量 跳数(≤15) 周期性广播 小型网络(已淘汰)。
OSPF 链路状态 最短路径树 触发式更新 中大型企业网络。
EIGRP 混合型 DUAL算法 增量更新 Cisco设备网络。

 外部网关协议(EGP,用于不同自治系统间)

协议 说明
BGP 路径矢量协议,基于策略(如AS路径、优先级)选择最佳路由,用于互联网骨干。

1.2.4、关键概念

自治系统(AS)
        由同一管理机构控制的网络集合(如 ISP),每个 AS 有唯一编号(ASN)。

NAT(网络地址转换)
        将私有 IP 转换为公网 IP,解决 IPv4 地址不足问题(常见于家庭路由器)。

路由聚合(CIDR)
        合并多个连续子网为超网,减少路由表条目(如将 192.168.0.0/24 至 192.168.3.0/24 聚合为 192.168.0.0/22)。

查看路由表

Windows:route print
Linux/macOS:netstat -rn 或 ip route show

二、以太网(数据链路层)

2.1、定义

以太网是一种 局域网(LAN)技术,工作在 OSI模型的物理层和数据链路层(L1 & L2),负责设备间的直接通信。

  • 核心目标:通过共享介质或交换机实现高效、可靠的本地数据传输。

  • 标准化:由 IEEE 802.3 工作组制定标准(如 10BASE-T、1000BASE-T)。

2.2、核心特性

特性 说明
MAC地址 每个设备有唯一的48位物理地址(如 00:1A:2B:3C:4D:5E),用于帧寻址。
CSMA/CD 早期以太网的冲突检测机制(载波侦听多路访问/冲突检测),用于半双工通信。
全双工模式 现代以太网通过交换机实现全双工通信(无冲突,双向同时传输)。
帧结构 数据封装为帧,包含目标/源MAC地址、类型/长度、数据和校验字段(见下文详解)。

2.3、帧结构

 0                   6                   12                  14(字节)
+-------------------+-------------------+-------------------+-------------------+
| 目标MAC地址 (6)   | 源MAC地址 (6)     | 类型/长度 (2)     | 数据 (46-1500)    |
+-------------------+-------------------+-------------------+-------------------+
| 帧校验序列 (4)    |
+-------------------+

字段说明

  • 目标/源MAC地址:6字节,标识通信双方。

  • 类型/长度

    • 值 ≤ 1500:表示数据长度(IEEE 802.3标准)。

    • 值 ≥ 1536:表示上层协议类型(如 0x0800 对应 IPv4,0x86DD 对应 IPv6)。

  • 数据(Payload):46~1500字节,不足46字节需填充。

  • 帧校验序列(FCS):4字节CRC校验,确保帧完整性。

2.4、MAC地址

  • MAC地址用来识别数据链路层中相连的节点
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可 能会冲突; 也有些网卡支持用户配置mac地址).
  • 在局域网(LAN)中,MAC地址用于直接通信。设备通过ARP协议将IP地址解析为MAC地址,确保数据准确送达。

2.5、MTU

2.5.1、定义与作用

  • MTU值:一般为 1500字节(以太网标准),包含IP头部(20字节)和TCP/UDP头部,实际数据载荷约为 1460字节(如TCP MSS)。

  • 分片(Fragmentation):若数据包超过MTU,路由器/设备需将其分片。但分片会降低效率(增加延迟、丢包风险)。

  • 路径MTU发现(PMTUD):设备通过ICMP消息探测路径中最小MTU,动态调整数据包大小以避免分片。

2.5.2、常见MTU值

网络类型 典型MTU值(字节) 备注
标准以太网 1500 最常见
PPPoE(宽带拨号) 1492 因PPPoE头部占用8字节
无线网络(Wi-Fi) 1500 与有线以太网一致
巨型帧(Jumbo Frame) 9000+ 用于高速局域网,需全网支持

2.5.3、MTU与协议的关系

  • TCP:通过MSS(Maximum Segment Size)自动协商,确保数据段不超过MTU限制(MSS = MTU - IP头 - TCP头)。

  • UDP:无自动分片机制,若应用层数据超过MTU,IP层需强制分片(可能增加丢包风险)。

  • ICMP:用于路径MTU发现,向源设备报告“需要分片”的错误。

2.5.4、常见问题

如何查看/修改MTU?

  • 查看MTU

    • Windowsnetsh interface ipv4 show subinterfaces

    • Linux/macOSifconfig 或 ip link

  • 修改MTU(需管理员权限):

    • Windowsnetsh interface ipv4 set subinterface "以太网" mtu=1480

    • Linuxifconfig eth0 mtu 1500

    • 路由器:通过管理界面调整WAN/LAN口MTU。

MTU设置不当的影响

  • MTU过大:导致分片,降低性能(尤其在跨网传输时)。

  • MTU过小:增加协议头开销,降低有效吞吐量。

  • 典型症状:网页加载不全、VPN断连、大文件传输失败。

2.6、ARP协议

2.6.1、定义

        ARP 是用于将IP地址解析为MAC地址的网络层协议,确保同一局域网(LAN)内的设备能够通过MAC地址直接通信。它是局域网通信的基础,工作在OSI模型的数据链路层网络层之间。

2.6.2、核心特性

核心功能

  • IP → MAC映射:根据目标设备的IP地址查询其MAC地址。

  • 本地通信:仅在局域网内生效,无法跨路由器(跨网段需通过网关)。

工作流程

  • ARP请求(广播):源设备发送广播帧,询问“谁的IP是X.X.X.X?请告知你的MAC地址”。

  • ARP响应(单播):目标设备回复自己的MAC地址,其他设备忽略该请求。

  • 缓存机制:设备将IP-MAC映射存入ARP缓存表(通常有效期2-20分钟)。

ARP报文格式

网络编程基础(2)_第1张图片

字段 说明
硬件类型(Hardware Type) 网络类型(如以太网=1)
协议类型(Protocol Type) 协议类型(如IPv4=0x0800)
操作码(Opcode) 1=请求,2=响应
源/目标MAC地址 发送方和接收方的MAC地址
源/目标IP地址 发送方和接收方的IP地址

你可能感兴趣的:(计算机网络基础,网络,服务器,linux)