文章目录本篇摘要一.网络层1.认识网络层2.ip报文格式理解子网划分ip分类IP地址的数量限制私有IP地址和公网IP地址认识下路由以及NAT技术如何解决网络ip不足问题及运营商在构建子网发挥的作用路由的基本概念路由表相关不同场景下的路由情况路由过程与规则关于端口映射和内网穿透拓展有公网IP时端口映射无公网IP时内网穿透报头三选项重新认识有关分片机制**1·16 位标识就简单理解成关于是否分片的标志**2. 3位标志3. 13位片偏移**如何分片以及组装**网络转发对**传输层、网络层、数据链路层**核心作用的梳理本篇小结本篇摘要本文系统讲解网络层核心内容涵盖IP协议基础主机/路由器/节点定义、IP与TCP分工、IP报文格式各字段含义、子网划分原理CIDR、子网掩码、路由效率、IP分类与地址限制A/B/C类传统划分、私有/公网IP、NAT解决地址不足、路由原理路由表结构、路由过程规则、分片机制标识/标志/偏移字段、滑动窗口与MTU关系及网络转发本质阐明网络层“寻址与路由”的核心作用。一.网络层1.认识网络层以上就是ip报文发送过程。网络基础概念主机 (Host)配有IP地址但不进行路由控制的设备。路由器 (Router)配有IP地址并能进行路由控制的设备。节点 (Node)主机和路由器的统称。IP协议核心概念IP 地址构成IP 目标网络 目标主机路由的本质是在进行从一个子网进入另一个子网的过程。现代路由器功能当代路由器已具备小型计算机功能可工作在应用层例如允许用户自行设置信息如带宽上限等。IP与TCP协议理解IP协议有能力保证报文从A机跨网络到B机但不能百分之百保证成功因此需要TCP进行管理和一系列容错处理。IP/TCP协议共同作用旨在百分之百保证报文能跨网络传输。IP与TCP协议各自解决的问题IP协议解决的是主机到主机Host-to-Host的问题。TCP协议解决的是进程到进程Process-to-Process的问题并且涉及到端口号的使用。2.ip报文格式简单介绍下各个部分版本号指明IP协议版本IPv4 对应为 4。头部长度IP 头部占多少个 32 比特最大 60 字节。服务类型含已弃用的 3 位优先权字段、4 位 TOS 字段对应最小延时、最大吞吐量、最高可靠性、最小成本四者互斥选其一和 1 位保留字段不同应用侧重不同 TOS 。总长度IP 数据报整体的字节数。标识唯一标识主机发送的报文分片时各片标识相同。标志字段3 位第一位保留第二位禁止分片超 MTU 则丢弃第三位“更多分片”标记最后一片为 0 。分片偏移分片相对原始报文起始位置的偏移以 8 字节为单位计数除最后一片外长度需是 8 的整数倍。生存时间TTL数据报到达目的地的最大跳数每经过一路由减 1 减到 0 丢弃防路由循环和报文积攒阻塞。协议表示上层协议类型。头部校验和用 CRC 校验头部是否损坏。源地址和目标地址发送端和接收端的 32 位地址。选项字段不定长最多 40 字节略讲 。理解子网划分理解子网划分的重要性理解子网划分的原因和原理有助于后续理解跨网络传输过程。协议方法与落实协议方法仅提供思路由运营商完成构建落实。通俗例子说明以小明在大学捡到钱包并上交最终钱包归还给对应学生的流程类比子网划分过程。其中学号对应IP由院号和学生号组成院群对应子网小明和另一个同学分别对应不同子网里的主机院主席对应路由器。子网划分的原因通过查找网络中的目标主机淘汰其他不合适的网络提高找到目标网络中目标主机的效率。路由的作用在查找目标主机过程中需要路由路由是一个淘汰过程淘汰的网络越多找到目标主机的效率越高。IP地址的组成IP地址分为网络号和主机号网络号用于保证相互连接的两个网段具有不同的标识。比如我们想查看对应主机配置信息使用ifcofig多个子网的网络标识不同一个子网内主机号不同IP 不同不同子网主机号可相同路由器一般具备联通多个子网网络标识的功能。在路由器管理的子网里增加主机时路由器需遵循 DHCP 应用层协议构建子网因此路由器可看作 DHCP 服务器工作在应用层。那么DHCP如何分配ip给新加入的主机呢DHCP是一种能够自动给网内新增主机节点分配IP地址的技术可避免手动管理IP的不便。一般的路由器都带有DHCP功能因此路由器也可以看做一个DHCP服务器。ip分类A类0.0.0.0到127.255.255.255B类128.0.0.0到191.255.255.255C类192.0.0.0到223.255.255.255D类224.0.0.0到239.255.255.255E类240.0.0.0到247.255.255.255传统IP地址划分问题申请B类地址时理论上一个子网内允许6万5千多个主机A类地址子网内主机数更多。实际网络架设中一个子网不会存在这么多主机导致大量IP地址被浪费。CIDR无类别域间路由方案提出背景针对传统IP地址划分导致地址浪费的情况提出新的划分方案。子网掩码作用引入额外的子网掩码来区分网络号和主机号。子网掩码特征是一个32位的正整数通常用一串 “0” 来结尾。计算网络号方法将IP地址和子网掩码进行 “按位与” 操作得到的结果就是网络号。划分无关性网络号和主机号的划分与IP地址是A类、B类还是C类无关。示例说明IP地址、子网掩码均为4字节。子网规划技巧拿到一个IP若想对应形成一系列子网想让子网最多有多少个主机子网掩码后面就有多少个0前面保持不变都为1。某网络中主机最多数量为256 - 2原因是要去掉主机号全1广播地址和主机号全0对应网络号表示局域网的情况。路由相关结论将IP与该子网的子网掩码进行按位与运算若结果等于该局域网的网络号则此IP是该局域网的主机IP。特殊ip地址将IP地址中的主机地址全部设为0成为网络号代表这个局域网将IP地址中的主机地址全部设为1成为广播地址用于给同一个链路中相互连接的所有主机发送数据包127.*的IP地址用于本机环回(loop back)测试通常是127.0.0.1。IP地址的数量限制CIDR的作用与局限CIDR在一定程度上缓解了IP地址不够用的问题提高利用率、减少浪费但IP地址的绝对上限未增加仍不够用。解决方法动态分配IP地址只给接入网络的设备分配IP地址同一MAC地址的设备每次接入互联网得到的IP地址不一定相同。NAT技术后面会重点介绍。IPv6IPv6不是IPv4的简单升级版二者互不相干且不兼容IPv6用16字节128位表示一个IP地址但目前尚未普及。私有IP地址和公网IP地址私有IP地址的规定如果组织内部组建局域网IP地址只用于局域网内通信而不直接连到Internet理论上可用任意IP地址但RFC 1918规定了用于组建局域网的私有IP地址范围10.*前8位是网络号共16,777,216个地址。172.16.*到172.31.*前12位是网络号共1,048,576个地址。192.168.*前16位是网络号共65,536个地址。包含在上述范围中的为私有IP其余为全局IP或公网IP。路由器与IP地址一个路由器可配置两个IP地址一个是WAN口IP应对外网一个是LAN口IP子网IP可理解为末尾几位都是0的局域网。子网与IP地址规则一个路由器管控一个子网不同子网内主机IP可以相同但同一个子网内不能相同。内网IP不能出现在公网里在传递过程中会被路由器使用WAN口IP替换NAT技术。普通人的网络接触普通人直接接触的根本不是公网而是内网、局域网、子网。认识下路由以及NAT技术如何解决网络ip不足问题及运营商在构建子网发挥的作用一般访问的是公网 “24”代表前24位是1其余都是0。网络拓扑体系由运营商构成访问特定网站如fanqiang时需得到运营商允许否则在运营商路由器处会被拒绝。NAT技术解决IP不足问题每个路由器有LAN口IP对内和WAN口IP对外不同局域网的LAN口IP可以相同允许不同局域网主机IP相同从而增加主机数量以解决IP不足问题存在全由公网构成的子网且 任何路由器都要配有至少2个IP。路由的基本概念网络中报文传播时路由器起指路作用依据自身路由表进行路线指引。路由表内容由对应路由算法实现。路由表相关路由表字段含义Destination 是目的网络地址Genmask 是子网掩码Gateway 是下一跳地址Iface 是发送接口Flags 中 U 表示条目有效G 表示下一跳地址是路由器地址无 G 表示目的网络与本机接口直接相连。路由表可存在于主机或路由器中。不同场景下的路由情况同一局域网内主机默认可访问不同局域网间主机不能访问可通过内网穿透、VPN、端口映射等实现。不同局域网之间主机互相访问可通过端口映射或内网穿透实现。访问特定 IP如云服务有对应路由。局域网内如 192.168.0.0 - 192.168.15.255 地址无需通过路由器访问。这里可以理解成通过对应des ip与对应表内的子网掩码按位与来确定!路由过程与规则路由过程可理解为路由器发挥指路作用通过目的 IP 与路由表内子网掩码按位与来确定路径。默认路由是由路由算法得到的最优路线无其他匹配路线时使用。关于端口映射和内网穿透拓展有公网IP时端口映射操作步骤登录B局域网主机所连接的路由器管理页面查找“端口映射”功能。获取路由器的公网IP地址。选取一个不冲突的端口号。添加静态端口映射将公网IP端口映射到B局域网主机的内网IP和相应服务端口上。效果访问公网IP端口时B局域网路由器会将数据包转发到对应的内网IP和端口上实现A局域网主机对B局域网主机的访问。无公网IP时内网穿透工具推荐使用cpolar等内网穿透工具不限制流量支持http/https/tcp协议无需公网IP使用简单。操作步骤免费注册cpolar账号并在B局域网主机上安装cpolar客户端。进行token认证配置cpolar开机自启动并启动cpolar。在浏览器访问cpolar web UI管理界面获取ssh隧道公网地址。在A局域网主机上通过该公网地址和端口号即可ssh远程访问B局域网主机。报头三选项重新认识有关分片机制分片过程形象理解1·16 位标识就简单理解成关于是否分片的标志不同报文标识不同。相同分片标识相同为什么要有它ip 报文长了就要分片数据链路层规定的数据链路层从上层接受下来的完整报文大小不能超过 MTU最大传送单元1500 字节。也就是说 tcp/udp 层有个 mms最大段尺寸除报头外数据的最大尺寸来尽可能保证不分片交给下面的 ip 层如果超过了这个 mtu就会被 ip 层分片/组装等这里我们要知道分片是被迫的让它不分片就是靠传输层协议保证它如果分片了就需要靠 ip 层进行分片与组装分片越多只要有一片丢了整个报文都算丢失因此分片会增加报文丢失概率因此传输层应该尽可能保证不被 ip 层分片关于滑动窗口机制与IP分片关系MSS设置避免分片TCP在传输层分段使报文大小适配网络层MTU防止被网络层分片。MSS与MTU密切相关MSS值通常为MTU减去IP首部和TCP首部长度。例如MTU为1500字节IP和TCP首部各20字节时MSS常设为1460字节让TCP数据包适合网络链路MTU减少IP分片可能。无法绝对避免分片尽管TCP用MSS让数据包适配MTU但复杂网络环境仍可能有IP分片。数据包经不同网络路径时各路径MTU可能不同若TCP未及时适应MTU变化数据包在某些链路可能因超MTU而被分片。网络中间设备对数据包修改或封装会使数据包大小改变引发IP分片。总结公式MTU MSS IP头部 TCP头部。总结TCP层滑动窗口在保证MSS符合要求下尽量满足MTU规定但路由MTU不同时TCP若未及时调整数据包会被分片 。2. 3位标志3位标志字段第一位保留保留的意思是现在不用但还没想好说不定以后要用到第二位置为1表示禁止分片这时候如果报文长度超过MTUIP模块就会丢弃报文第三位表示“更多分片”如果分片了的话最后一个分片置为0其他是1类似于一个结束标记。第一位暂时不用以后可能需要第二位1表示禁止分片0表示可以分片也就是说如果我们希望TCP发送的报文不想让它分片就可以通过手段在IP层给它标1但如果最后超了MTU就会被丢第三位如果没有被分片就是0如果分片了前面的片都是1最后一个片是03. 13位片偏移如果没有分片则为0。13位分片偏移fragmentation offset是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置实际偏移的字节数是这个值 * 8得到的。因此除了最后一个报文之外其他报文的长度必须是8的整数倍否则报文就不连续了。相当于是相对IP报文开头的位置当前片的偏移量 * 8即当前片数据长度开头位于整个TCP报文的第多少个字节处注最后一个片长度可以不是8的倍数这里说的长度是TCP报文拆分后的长度最大1480不包含IP报头比如TCP来的报文是2005 因此被IP拆成1480 525此时分成两片第一片偏移量0长度1480第二片偏移量185长度525 此时最后一片长度就不是8的倍数因此得出后面需要用到的一个知识偏移量 * 8 自身长度/ 8就是下一片的偏移量如何分片以及组装如何判断对方 IP 层收到的报文哪些分片了哪些没有分片此时我们就能看 3 位标识的最后一位更多分片如果是 1 表示分片了0 就是没有分片偏移量是 0或者是分片的最后一片偏移量绝不为 0如何确定同一组分片的片以及组装以及是否有缺失片1·第一片丢失则就是某组片偏移量为0。2·中间片丢失此时只需要把 16 位标识相同的聚集起来然后按照它们的偏移量进行升序排布从头依次计算偏移量 * 8 自身长度/ 8 就是下一片的偏移量如果此时计算到下一片的偏移量和计算的不同也就是这两片之间有丢失了。3·结尾片丢失某组更多分片没有为 0 的对于组装的话就是把收集好的报文依次去掉 IP 报头进行拼装形成完整的 TCP 报文传给传输层即可网络转发网络转发本质是在子网和子网之间进行转发。所谓一跳就是数据链路层中的一个区间.具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。源ip到目的ip的路中会出现多个源mac到目的mac的过程构成的!这里A访问B;可以理解成局域网内A主机访问的具有公网的子网里的B主机然后就是根据路由表按照对应的NAT技术完成之间数据交换的!对传输层、网络层、数据链路层核心作用的梳理传输层聚焦“端到端”传输可靠性解决丢包、乱序等问题保障报文能准确送达。网络层负责“寻址与路由”确定目标主机的整体逻辑位置并规划出数据从源到目的地的传输路径。数据链路层关注“物理链路”上的实际传输把网络层规划好的大路径拆解为一步步的具体动作解决“如何在这一段链路上发/收数据”的问题。本篇小结网络层是互联网的“导航系统”通过IP协议实现主机到主机的逻辑寻址与路径规划。核心包括IP报文格式版本、TTL、协议等字段定义数据传输规则子网划分CIDR、子网掩码提升地址利用效率路由表指导报文转发按子网掩码匹配最优路径DHCP/NAT解决IP分配不足问题分片机制标识/标志/偏移字段应对MTU限制结合传输层MSS减少分片概率。同时梳理了网络层与传输层可靠性、数据链路层物理传输的分工协作最终实现跨网络报文可靠传递。