计算机网络第四章笔记(二)

一、主机发送IPv4数据报的过程

1. 交付方式

主机发送数据报前,需通过IP地址与子网掩码的逐比特逻辑与运算 ,判断目的主机与自身是否在同一网络,从而选择交付方式:

  • 直接交付 :同一网络内主机通信,无需路由器中转,直接发送数据报。

  • 间接交付 :不同网络主机通信,需将数据报发送给默认网关(路由器) ,由路由器中转。

2. 具体实例

已知:主机A的IP为10.1.1.1,子网掩码255.255.255.0;主机B的IP为10.1.1.2,主机C的IP为10.2.2.1

  1. 主机A计算自身网络地址:10.1.1.1 & 255.255.255.0 = 10.1.1.0

  2. 主机A计算主机B的网络地址:10.1.1.2 & 255.255.255.0 = 10.1.1.0(与自身一致,直接交付)。

  3. 主机A计算主机C的网络地址:10.2.2.1 & 255.255.255.0 = 10.2.2.0(与自身不同,间接交付 )。

3. 默认网关配置

  • 以太网1([10.1.1.0/24](10.1.1.0/24))主机的默认网关:路由器R的接口0(10.1.1.254)。

  • 以太网2([10.2.2.0/25](10.2.2.0/25))主机的默认网关:路由器R的接口1(10.2.2.126)。

二、路由器转发IPv4数据报的过程

1. 转发前提:正确接收数据报

路由器需确认收到的IPv4数据报满足两个条件:

  • 首部无差错(无字段缺失、非法值);

  • 生存时间(TTL)字段未到期。

2. 查表转发的具体步骤(以路由器R转发主机A→主机C的数据报为例)

  1. 提取目的地址 :数据报首部的目的IP为10.2.2.1

  2. 路由表匹配(路由器R的路由表条目):

    |------------------------|--------------------------------------|-------|
    | 目的网络 | 地址掩码 | 下一跳 |
    | [10.1.1.0](10.1.1.0) | [255.255.255.0](255.255.255.0) | 接口0直连 |
    | [10.2.2.0](10.2.2.0) | [255.255.255.128](255.255.255.128) | 接口1直连 |

  3. 网络地址计算 :将目的IP10.2.2.1与路由表中10.2.2.0的掩码255.255.255.128做与运算,得到10.2.2.0,匹配第二条条目。

  4. 转发执行:按"接口1直连"的指示,从接口1将数据报直接交付给主机C。

3. 广播数据报的处理规则

路由器不转发广播IPv4数据报,包括:

  • 直接广播(如以太网1的10.1.1.255、以太网2的10.2.2.127);

  • 受限广播(255.255.255.255)。

→ 路由器是隔离广播域的核心设备。

4. 路由匹配的规则

  • 无匹配条目:丢弃数据报,并向源主机发送ICMP差错报文;

  • 多条匹配条目:采用最长前缀匹配原则(匹配掩码最长的条目)。

三、IPv4数据报分片

1. 分片原因

数据链路层有最大传输单元(MTU) (如以太网MTU=1500字节),若IPv4数据报总长度超过MTU,无法直接封装成帧,需拆分为更小的分片。

2. 分片相关首部字段

|-----|-------|--------------------------------------------------------------------------------|
| 字段 | 长度/单位 | 核心作用 |
| 标识 | 16比特 | 同一原数据报的所有分片标识相同,用于目的站重组。 |
| 标志 | 3比特 | MF(最低位):MF=1表示后续有分片,MF=0为最后一片;DF(中间位):DF=1禁止分片,DF=0允许分片;保留位(最高位):固定为0。 |
| 片偏移 | 13比特 | 以8字节为单位,指示分片在原数据报中的位置(最后一片除外,其他分片数据载荷需为8字节整数倍)。 |

3. 分片计算实例

原数据报:总长度3820字节(首部20字节+数据载荷3800字节),以太网MTU限制数据载荷最大1420字节

  1. 分片1:总长度1440字节(20+1420),MF=1,片偏移0(0/8)。

  2. 分片2:总长度1440字节(20+1420),MF=1,片偏移175(1400/8)。

  3. 分片3:总长度1020字节(20+1000),MF=0,片偏移350(2800/8)。

若分片2需再次分片(载荷800+600字节):

  • 分片2-1:总长度820字节(20+800),MF=1,片偏移175

  • 分片2-2:总长度620字节(20+600),MF=0,片偏移275(2200/8)。

四、与发送/转发相关的IPv4首部字段

1. 基础字段

  • 版本 :4比特,IPv4对应值为4,通信双方版本需一致。

  • 首部长度 :4比特,以4字节 为单位,最小值为5(对应20字节固定首部),最大值为15(对应60字节首部);若首部长度非4字节整数倍,需用填充字段补全。

  • 总长度 :16比特,以1字节为单位,指示数据报首部+数据载荷的总长度,最大值为65535字节(受MTU限制,实际很少用满)。

2. 生存时间(TTL)

  • 长度:8比特,路由器转发前将TTL减1;若TTL减至0,丢弃数据报并发送"时间超过"的ICMP报文。

  • 作用:防止数据报因路由环路无限兜圈;可实现traceroute/tracert路由跟踪、限制多播范围。

3. 协议字段

  • 长度:8比特,指示数据载荷对应的上层协议,典型值:TCP(6)、UDP(17)、IPv6(41)。

4. 首部检验和

  • 长度:16比特,仅检验数据报首部(减少计算量),数据载荷不参与。

  • 发送方计算步骤

    • 将首部检验和字段置0

    • 把首部划分为若干16比特字序列;

    • 对序列做反码算术求和,将结果按位取反后写入检验和字段。

  • 接收方检验步骤

    • 把首部划分为若干16比特字序列;

    • 对序列做反码算术求和,结果按位取反;

    • 若结果为0,首部无差错;否则丢弃数据报。

相关推荐
羊群智妍13 小时前
2026 AI搜索流量密码:免费GEO监测工具,优化效果看得见
笔记·百度·微信·facebook·新浪微博
山岚的运维笔记15 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
lpruoyu17 小时前
【Android第一行代码学习笔记】Android架构_四大组件_权限_持久化_通知_异步_服务
android·笔记·学习
wdfk_prog17 小时前
[Linux]学习笔记系列 -- [drivers][mmc][mmc_sdio]
linux·笔记·学习
果果燕17 小时前
今日学习笔记:双向链表、循环链表、栈
笔记·学习·链表
觉醒大王17 小时前
AI写的青基中了
人工智能·笔记·深度学习·学习·职场和发展·学习方法
明月醉窗台17 小时前
qt使用笔记六之 Qt Creator、Qt Widgets、Qt Quick 详细解析
开发语言·笔记·qt
慢半拍iii18 小时前
CANN算子开发实战:手把手教你基于ops-nn仓库编写Broadcast广播算子
人工智能·计算机网络·ai
Hello_Embed20 小时前
libmodbus 移植 STM32(USB 串口后端篇)
笔记·stm32·单片机·嵌入式·freertos·libmodbus
张祥64228890420 小时前
RTKLIB源码和理论结合分析笔记三
笔记