文章插图
上图是UDP数据报在IP层的分片示例,可见UDP首部只存在第一个分组(分片)之中,这很容易理解,因为经传输层封装后的数据报对于IP层而言是透明的,IP不区分UDP首部和UDP数据,它们都是不透明的Payload 。
接收端在收到IP分片后,相同标识值的分片属于同一个被切分的数据报,然后对分片偏移排序,更多片标志位为0的分组是最后一片,排序后的分组,如果分配偏移连续,且最后一个分组也到达,则表示整个数据报都到达了,则恢复数据报,否则继续等待 。
IP转发IP转发的概念很简单,就是路由器为IP数据报挑选一个接口发送出去 。
从发送端到目的端,之间经历的所有路由器构成网络路由的完整路径,这跟从家到公司经过的所有路口构成的路径类似 。
当网络接口(网卡)收到数据报时,IP模块检查数据报目的地址是否为自己的IP地址,如果是,数据报交付给由协议字段指定的协议模块(TCP、UDP等),如果不是,则判断IP层是否配置为路由器,如果是,则转发,如果不是,丢弃,因为主机不转发那些不是由它生成的数据报 。
IP层包含一些位于内存中的信息,称为路由表,每次转发数据报时,都要查询路由表,执行最长前缀匹配法,决定挑选哪个路由表项做数据转发 。IP转发逐跳进行,每次转发假设离目的地更近一步,路由器和主机不包含到目的地的完整路径信息 。
路由表是路由条目的列表,每个路由条目包括以下几项关键信息 。
- 目的地:一个32位字段,用于与掩码操作结果相匹配 。
- 掩码:一个32位字段,用于与IP数据报中的目的IP地址做按位与操作 。
- 下一跳:下一个IP实体(路由器或者主机)的32位IP地址,数据报将被转发到该地址 。
- 接口:用于将数据报发送给下一跳的网络接口(网卡) 。
- 首先取出数据报中的目的IP地址,然后与路由条目的掩码字段进行按位与,按位与的结果如果等于路由条目的目的地,则该条目与目的地IP匹配,该条目进入候选集合 。
- 从候选集合中选择最匹配的条目,即掩码最多位为1的条目,取出下一跳字段作为转发数据报的下一跳IP地址 。
- 通过最匹配条目的网络接口,发送到下一跳 。
- 如果没有匹配条目,则数据报无法交付,通过ICMP发送“主机不可达”通知发送主机 。
欢迎关注:"码砖杂役"公众号和头条号,本号专注于科技互联网知识传播和分享 。
推荐阅读
- 「网络特效」12 个炫酷背景特效库
- 什么时计算机网络?计算机网络如何分类?
- https ssl 请求过程详解
- 高校|一二三未来:高校毕业生求职的“专属网络面试间”
- rtsp协议之dss服务器与vlc服务器比较
- 如何知道网络的实时网速?4种方法轻松查询
- rtsp协议之dss搭建rtsp服务器
- Antrea 0.9.0 发布,Kubernetes 网络解决方案
- 盘点网络创业需要的重要营销工具
- 什么是DNS?