@bit::Shadow
✧(≖ ◡ ≖✿
目录
[网络号 主机号 子网掩码(mask)](#网络号 主机号 子网掩码(mask))
[阅读 ip](#阅读 ip)
[数据链路层限制下 网络层 传输层 的行为](#数据链路层限制下 网络层 传输层 的行为)
如果数据链路层必须传递网络层产生的数据分块,传输原数据块导致了什么问题?
先前学习的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
感谢支持,长期连载
欢迎关注
