Linux网络——IP协议 子网 路由 IP的分片字段

@bit::Shadow
✧(≖ ◡ ≖✿

目录

回顾一下网络"五层模型"

IP

IP协议报的报头

报头内各字段

理解子网划分

什么是子网?

路由器转接怎么实现?

[网络号 主机号 子网掩码(mask)](#网络号 主机号 子网掩码(mask))

举例

[阅读 ip](#阅读 ip)

私有IP与公网IP地址

局域到广域的示图

路由表

[数据链路层限制下 网络层 传输层 的行为](#数据链路层限制下 网络层 传输层 的行为)

如果数据链路层必须传递网络层产生的数据分块,传输原数据块导致了什么问题?

补充IP第二层字段解释

甄别报文是否分片(Error问题,难以解答)


先前学习的TCP、UDP均属于"传输层"技术,解决了"怎么传输 ?"的问题,而位于传输层之下的IP协议属于网络层的概念,使得传输具备了"跨网络转接能力"。

回顾一下网络"五层模型"

HTTP TLS/SSL HTML SSH FTP DNS 均属于应用层的概念,接下来进入OS层的传输层与网络层,其中TCP UDP 均属于传输层的概念,再向下是网络层 IP ARP协议就出现在这里。

IP

TCP解决的是进程到进程的问题,而IP解决的是主机到主机的问题。

IP = 目标网络 + 目标主机 :

IP协议报的报头

报头内各字段

4位首部长度:描述ip报文中报头(20字节+选项)的大小。(同TCP每单位4字节 【0*4,15*4】)

16位总长度:IP报文的大小。

8位协议:自上而下封包时标识上层使用的是哪种协议类型。


4位版本:标识IP协议类型。(基本上全是IPv4)

8位服务类型(TOS):3位优先权字段(已弃用),4位TOS字段,和1位保留字段(必须置零)。4位TOS字段分别表示:最小延时、最大吞吐量,最高可靠性、最小成本。这四者在某些情景下无法兼顾、相互冲突只能选择一个(每个报文只能选择一个)。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。

8位生存时间(TTL):描述在路由时的剩余转接次数,当转接次数耗尽此报文即被网络丢弃。(解决网络、数据回环导致的次数过多数据垃圾滞留、堆积的问题)

16位校验和:校验调配数据传输中不可避免产生地概率性转变事故。(如:受磁场、电场变化而导致的二进制数据由0置1)

理解子网划分

什么是子网?

子网 是将一个大的 IP 网络划分成若干个更小的、独立的逻辑网络 。划分子网的目的,是为了提升 IP 地址的利用率隔离广播域简化网络管理 以及增强安全性。子网是相对的概念

IP = 网络号 + 主机号

一个子网内,网络号确定主机号偏移。如图:

路由器转接怎么实现?

1.每个路由器配置两个、多个网卡,连接不同的子网。

2.当我们首次链接时,其实就是路由器给我们分配了一个IP。

注:路由器要想实现路由服务自然需要一套自己的IP。(常设".1"为后缀)

网络号 主机号 子网掩码(mask)

网络号:IP & 子网掩码

(按位与)

主机号:标识主机。(如:192.168.100 --- 主机号是"100")

网络号的主机号为0 == 网络号 为FFF . . . :"广播地址"

子网掩码:是一个32位的二进制数,用于分隔IP地址中的"网络号 "与"主机号 "。它的作用是让网络设备(如路由器、主机)判断:目标IP是否在同一个子网内。(因此其前几位常为1111 1111构成)

举例

网络号 & 子网掩码

阅读 ip

192.168.128.1/24 表示 "子网掩码前24位全是1,后8位是0"

10.0.0.11/16 表示 "子网掩码前16位全是1,后16位是0"

私有IP与公网IP地址

网络在宏观上被分为:

公网:内网(子网、局域网) = 1:N

内网与公网划分

如果一个组织内部组建局域网,IP只用于内部通信,而不直接连接到Internet上理论上使用任意IP都是允许的,但是RFC1918规定了用于组建局域网的私有IP规范:

10.*,前8位是网络号,共16777216个地址。

172.16.*-172.31.*,前12位是网络号,共1048576个地址。

192.168.*,前16位是网络号,共65536个地址。

包含于以上范围内的都是私有IP,其余称为全局IP(或公网IP)

局域到广域的示图

注意到:路由器上存在"子网IP"与"WAN口IP"的字样。

当数据被网络传输中携带的IP先与子网IP比对若不一致则与"WAN口IP"的比对(上一层IP比对)如果不一致就经路由器向上交付查找IP,如此循环直到找到最大IP后向此新路由的下层交付。

路由表

Linux下可以使用route指令来查询"路由表"(路由)

如下

字段 含义 通俗解释
Destination 目标网络地址 你要去的地方的"大区地址",比如 192.168.1.0 代表整个子网。
Gateway 网关地址 (暂置) 要出这个"大区"必须经过的"大门"(路由器)。0.0.0.0 表示"就在本大区内,不需要走大门"。
Genmask 子网掩码 用来判断 Destination 到底包含了多大范围。比如 255.255.255.0 就表示这个目标是一个包含 254 台主机的子网。
Iface 网络接口 数据从哪块网卡发出去,比如 eth0 就是你的有线网卡。

路由过程:假设有一数据包IP为 "10.0.0.2" ,拿此IP与子网掩码按位与 ++确定网络号++ 如果网络号匹配于其子网掩码同一行的Destination代表应交于该路由器下的Iface接口

注:若一直未匹配同样网络号则走向default 路段:

  • 翻译 :如果我要发数据去一个 没有在下面路由表里明确列出 的 IP(比如访问百度 183.2.172.185),我就把数据包发给 _gateway(即 10.0.0.1)。

  • 举例:你的电脑访问互联网上的任意网站,走的就是这条。这是最后一道防线(兜底路由)。

数据链路层限制下 网络层 传输层 的行为

数据链路层要求传输来的报文不能超过MTU(最大传输单元,1500字节)的大小。

MSS(最大传输尺寸)+40

  • MTU = MSS + TCP头部(20)+ IP头部(20)

如果数据链路层必须传递网络层产生的数据分块,传输原数据块导致了什么问题?

丢包概率增加。在传输后的组装中但凡缺少哪一块必须重传。

注意:分块组装并非主流而是被迫行为

传输层做出的努力:滑动窗口大小的限制。

补充IP第二层字段解释

主要工作是:保证分块传输的可靠性 + 为组装提供依据。

16位标识:不链接报文,标识不同;链接报文的相同分块,标识相同。

3位标志:三位标识"更多分片",如果分片 了的话,置0,其他片是1。如果没有分片也置0。其被用作分片的结束标记。第一位保留(保留的意思是现在不用但是还没想好说不定以后要用)。第二位为1标识禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第

13位片偏移:描述模块中一整块相对起始位置的偏移量。(第一块自然为0)


甄别报文是否分片(Error问题,难以解答)

1.没有分片:

2.分片:置1


感谢支持,长期连载

欢迎关注

相关推荐
会周易的程序员39 分钟前
5Draft使用说明书
服务器·c++·分布式·raft·共识
时代的凡人44 分钟前
Hub 和交换机的区别。
网络
wangqiaowq1 小时前
langfuse linux下的安装部署
linux·运维·服务器
Discipline~Hai1 小时前
Linux网络编程05-sqlite3数据库
linux·c语言·网络·数据库·sqlite·linux应用软件编程
Huangjin007_1 小时前
【Linux 系统篇(十七)】进程(五) :进程切换、O(1) 调度算法
linux·运维·服务器
weixin_464307631 小时前
linux虚拟机断网
linux·运维·服务器
ly-272531 小时前
IEEE PDF eXpress终稿检测踩坑记录:PDF图片字体未嵌入与LaTeX参考文献编译异常解决方法
服务器·人工智能·算法
志栋智能1 小时前
凌晨3点的告警,如何用AI在5分钟内完成定界?
运维·服务器·数据库·人工智能·自动化
Htr_1 小时前
GPT-6 Astra 使用指南:OpenAI 首个“关键级“网络安全模型的完整上手手册
网络·gpt