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

网络编程基础(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.0192.168.1.1 ~ 192.168.1.62192.168.1.63
第 2 个子网192.168.1.64192.168.1.65 ~ 192.168.1.126192.168.1.127
第 3 个子网192.168.1.128192.168.1.129 ~ 192.168.1.190192.168.1.191
第 4 个子网192.168.1.192192.168.1.193 ~ 192.168.1.254192.168.1.255

IPv4地址分类对比表

类别地址范围默认子网掩码用途私有地址范围支持主机数特点
A类1.0.0.0 ~ 126.255.255.255255.0.0.0 (/8)超大型网络(政府、ISP)10.0.0.0/8≈1677万(224−2224−2)网络号占8位,主机号占24位;地址空间极大。
B类128.0.0.0 ~ 191.255.255.255255.255.0.0 (/16)中型企业或机构172.16.0.0/12≈6.5万(216−2216−2)网络号占16位,主机号占16位;平衡规模与利用率。
C类192.0.0.0 ~ 223.255.255.255255.255.255.0 (/24)小型网络(家庭、办公室)192.168.0.0/16254(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报文格式

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

相关文章:

  • 导出的使用
  • YOLOv11小白的进击之路(九)创新YOLO11损失函数之NWD损失函数源码解读
  • 分布式锁的实现
  • 大数据处理最容易的开源平台
  • 【从零开始学习计算机科学】软件测试(五)白盒测试
  • [K!nd4SUS 2025] Crypto
  • 手写发布订阅模式
  • MySQL使用pxc实现高可用
  • 【软件系统架构】单体架构
  • 突破 HTML 学习瓶颈:表格、列表与表单的学习进度(一)
  • 【Opencv中的Jpeg有损压缩】
  • 功能强大的电脑硬件检测及驱动安装工具
  • 【计算机视觉】工业表计读数(3)--指针及刻度关键点识别
  • Spring Boot 事务详解
  • 滑动数组-定长滑动数组
  • SSH无法使用root用户进行登陆的解决方法
  • 【HarmonyOS Next】鸿蒙应用实现弹框DialogHub详解
  • Excel(函数进阶篇):Vlookup函数进阶、TAKE嵌套SORE函数、SUBTOTAL函数、INDIRECT函数
  • 华为全流程全要素研发项目管理(81页PPT)(文末有下载方式)
  • 蓝桥杯练习day1:拆分数位-四位数字的最小和
  • 第十一届世界雷达展开幕,尖端装备、“大国重器”集中亮相
  • 盐城经济技术开发区党工委书记王旭东接受纪律审查和监察调查
  • 信俗与共:清代新疆回疆儒释道庙宇的中华政教
  • 篮球培训机构东方启明星被指停摆,家长称已登记未退费用超百万
  • 尹锡悦宣布退出国民力量党
  • 查幽门螺杆菌的这款同位素长期被海外垄断,秦山核电站实现突破