备案号被取消 没有重新备案网站会被关闭吗,wordpress主题对应的插件,做网站的价格贵吗,公众平台登录文章目录 1. IP协议介绍2. IP报头3. IP的分片和组装4. IP地址网段划分特殊的IP地址子网、局域网、网段的区别IP地址的数量限制 5. 公网IP和私有IP6. NAT技术7. 路由Route 1. IP协议介绍
IP协议#xff08;Internet Protocol#xff09;是一种最常用的网络层协议#xff0c;… 文章目录 1. IP协议介绍2. IP报头3. IP的分片和组装4. IP地址网段划分特殊的IP地址子网、局域网、网段的区别IP地址的数量限制 5. 公网IP和私有IP6. NAT技术7. 路由Route 1. IP协议介绍
IP协议Internet Protocol是一种最常用的网络层协议用于在网络传输过程中的路由选择确定一条合适的传输路径。 网络是一个复杂的网状结构由一个个节点交织组成每一个节点可以是一台主机也可以是一个路由器。不同网络之间通过路由器进行跳转。数据从传输层拷贝到网络层后由网络层IP协议添加IP报头成为IP报文再发送到网络中。对于TCP/IP协议可以说TCP是提供传输策略的而IP是“办事”的负责实际传输的路径选择。 网络的简易结构
IP协议工作在网络层提供一种能力跨网络将数据从主机A送到主机B因此网络层IP协议解决的是主机到主机的通信问题。网络环境错综复杂IP协议有能力完成跨网络收发数据的任务但并不能保证百分百完成。因此由传输层TCP提供策略建立各种机制如超时重传、确认应答保证网络传输的可靠性。传输层与应用程序进行数据交互发送时将应用层数据进行一定的可靠性处理后再发送到网络层接收时将网络层数据进行可靠性处理后再发送给应用层因此传输层解决的是进程到进程的通信问题。 主机A向主机B发送数据的网络传输过程 2. IP报头 Header
版本指定IP协议版本IPv4为4IPv6为6首部长度单位是4字节范围是20~60字节。首部20字节定长选项字段不定长。服务类型 (Type Of Service)3位优先权字段已弃用4位TOS选项1位保留置0。4种服务类型包括最小延时、最大吞吐量、最高可靠性、最低成本四者相互冲突只能选一种。对于FTP协议最大吞吐量比较重要。对于直播、视频这些应用程序最小延时比较重要。报文总长度IP报文整体长度最大值为65536字节。标识一个IP报文的编号标识某个主机发送的唯一的IP报文。在IP报文的分片与组装中起重要作用。标志和片偏移量都在IP报文的分片与组装中起作用后面相详谈。生存时间 (Time To Live)IP数据包在网络中的最大生存时间最大路由跳数一般设为64。每经过一个路由TTL就会减1直到减为0则将该IP数据包丢弃避免IP数据包在传输过程中发生路由循环。协议类型指明上层协议类型。TCP是6UDP是17。首部校验和发送方计算接收方验证保证接收方收到的数据的正确性鉴别头部是否损坏。源IP地址和目的IP地址“从哪来到哪去”。标识了发送方的IP地址和接收方的IP地址。
Problem1IP如何分离报头和有效载荷 IP报头自描述了首部长度和报文总长度根据这两个长度描述字段进行拆分即可。 Problem2IP报文的有效载荷如何向上交付分用 IP之上的传输层有不同类型的协议根据首部的8位协议类型确定传给上层的哪一个协议模块。 3. IP的分片和组装
传输层的下层——数据链路层规定一个数据帧的有效载荷长度不能超过MTU (Maximum Transmisson Unit, 最大传输单元)不同环境下的MTU不同一般MTU为1500字节。这意味着IP报文的大小不能超过MTU为此IP协议规定对于超过MTU的IP报文发送端对数据分片后再逐个发送接收端收到多个分片后再组装还原。 这就好比快递公司规定单个包裹的重量不能超过2kg而你要寄一个10kg的电竞椅给远方的好友那你就需要将椅子拆成多个零件打成5个包裹寄给他这是“分片”。对方收到这些包裹后再将零件统一组成起来得到最终的椅子这是“组装”。那么你“分片”的时候肯定不能胡乱拆对方收到零件时也不能胡乱“组装”双方必须达成某种策略的共识比如你拆完后告知对方如何组装。 IP协议的分片本质就是将一个大报文分成多个小报文组装就是将多个小报文组装成一个大报文。
IP协议的分片和组装的策略用到了IP首部的三个字段
16位标识标定一个唯一的IP报文多个分片在分开前属于同一个IP数据包因此标识编号相同。
3位标志第一位保留第二位是禁止分片标志一个IP报文的禁止分片标志位置为1时若该报文长度大于MTU则在IP模块直接丢弃。第三位是更多分片标志如果分片了此位置1表示当前分片后面还有更多分片置0表示当前分片是最后一个分片类似于一个结束标志。
13位片偏移如果分片了片偏移表示当前分片在原始IP报文中相对于初始位置的偏移量0表示第一个分片。片偏移的单位是8字节。
发送端的IP分片过程 ⭕注意每个IP分片的大小必须是8的整数倍保证片偏移量为整数图中数字不是8的整数倍只是为了方便演示
接收端的IP组装过程
接收端收到各种IP报文需通过IP报头的更多分片标志和片偏移确定该IP报文是否是分片。会有以下四种情况 更多分片0片偏移0非分片该报文是独立报文。更多分片1片偏移0该报文是分片且是某个原始IP报文的第一个分片。更多分片1片偏移0该报文是分片且是某个原始IP报文的中间分片。更多分片0片偏移0该报文是分片且是某个原始IP报文的最后一个分片。 第一种情况表示该报文不是分片后三种情况是分片报文的不同位置情况。 如何确保接收端能够收齐一个原始IP报文的全部分片? 值得注意的是一个原始IP报文的多个分片大概率不是同时到达接收端的因此当接收端收到来自某台主机的IP报文检测其为分片报文四种情况的后三种就会开辟一个专属于该报文标识的缓冲区等待其它分片到来。后续检测到有同主机相同标识的分片报文就会进入该缓冲区组装。 ⭕分片可能会在传输过程中丢包导致接收端收到的分片是残缺的。根据分片的四种情况头尾分片是能够确定的中间也能根据片偏移确定因此接收端具有分辨分片是否丢失的能力。接收端检测到分片有残缺部分无法组装成完整报文就不会向上交付一直维护在网络层。接收端TCP一直无法收到数据就不会向发送端应答时间久了发送端便会触发超时重传IP后续可能会重新收到来自发送端的分片。只有IP组装成完整报文才会向上交付这次数据接收才算完成。综上所述 IP协议并不能保证分片收齐而是由TCP保证的。分片与组装是IP协议的模块TCP并不关心所以当IP分片某一块残缺时TCP重传整个报文而不是残缺的一部分。 如何保证接收端组装的报文一定是正确的 IP报头的16位首部校验和保证IP报头的正确性有效载荷数据正确性由上层协议保证如TCP报头的16位校验和保证了整个TCP报文的正确性。 IP分片的弊端 网络中过多的分片可能会提高丢包率增加网络负担加长网络延时因此正确的做法是尽量避免分片的发生。IP会发生分片归根到底是因为上层发送的数据过大超过了下层MTU的限制而IP协议只是个“跑腿”的别人给他多少数据他都得传因此避免分片应该由上层传输层实现。TCP为了避免数据在底层分片每次发送的数据不能过大因此引入了MSS (Maximum Segment Size)表示TCP单个报文的数据部分最大长度。 之所以TCP的滑动窗口内要分成多个报文发出就是因为有MSS在控制单个报文的大小。MSS的值取决于底层的MTU在不同环境下不同一般为1460。TCP三次握手建立连接阶段会进行MSS协商在首部选项中携带MSS长度字段取双方MSS最小值作为传输所用的MSS。 4. IP地址
网段划分 互联网实际上是由一个个的网段组成的网段中包含主机或更小范围的网段。 每个主机的IP地址由两部分构成网络号 主机号。其中网络号指的是主机所处网段的唯一标识主机号指同一网段内区分不同主机的编号。同一网段中的主机网络号相同主机号不同不同网段中的主机网络号一定不同但主机号可以相同。这样一来IP地址就有了标识网络中唯一主机的能力。不同网段之间由路由器连接路由器相对于每个网段的出入口数据的发送和接收都要通过路由器。 同一网段中不同主机的IP由路由器管理路由器会自动为网段中每一台连入的新主机分配IP地址避免了手动管理IP的麻烦这种技术称为DHCP。每一台路由器都有DHCP功能因此也可将路由器看作一台DHCP服务器。 IP地址通过网络号主机号的形式能够区分网络中唯一一台主机。那么如何合理地进行网段划分呢 历史上刚开始采用的是A, B, C, D, E五类网段划分每一类网络中的IP范围不同IP地址的网络号和主机号位数分布也不同。但这种划分策略因为其固定的地址划分可能会导致地址浪费、缺乏灵活性。因此当今互联网采用了子网掩码的方式划分网段。 子网掩码Subnet Mask用于灵活地区分IP地址的网络号和主机号。子网掩码是一个32位的整数其比特位表现为前半部分全1后半部分全0。IP地址与子网掩码按位与得到网络号。
例如 IP地址192.168.0.7 子网掩码255.255.255.0 网络号 IP mask 192.168.0.0 不同子网可以根据自身情况选择子网掩码确保主机号位数的合理分配避免地址浪费这种方案大大优于使用五类网段的固定划分形式。
每一台主机都配套一个IP地址子网掩码的组合可以区分该主机的网络号和主机号。IP地址和子网掩码还有一种更简洁的表示方法例如140.252.20.68/24表示IP地址为140.252.20.68子网掩码的高24位是1也就是255.255.255.0。
特殊的IP地址
IP地址的主机号全0代表这个子网的网络号。IP地址的主机号全1代表这个局域网的广播地址用于给同一个链路的所有主机发送数据包。127.*的IP地址用于本机环回(loop back)测试通常是127.0.0.1。
子网、局域网、网段的区别
通常在不追求严格的语境下三者可以混用。具体的 局域网是数据链路层的概念通常是指一个二层可达的网络即发送数据不需要经过路由器向外转发。 子网是网络层的概念一个IP地址划分的结果是一个相对概念子网可以连接着上层更大范围的公网也可以连接更小范围的子网。子网与子网之间的通信需要路由。 网段和子网(Subnet)通常是同一个概念只不过网段一般范围大于子网用于描述更大范围的子网。
IP地址的数量限制
IP(IPv4)地址只有4字节32位能组成232个约等于43亿不同的IP地址。这是互联网开始发展时的规定而随着互联网蓬勃发展主机设备的增多IP地址已经远远不够用了。此时有三种技术能够解决
动态ip地址分配 路由器动态地为子网中的主机分配ip地址连接时分配断连时就回收供其它在线设备使用提高了ip地址的利用率。因此同一个MAC地址的设备每次连入网络的IP地址不一定相同。IPv6 IP地址以128位整数表示即有2128个不同的ip地址管够。但是如今IPv6尚未普及。NATNet Address Translation地址转换技术目前主流的解决IP地址枯竭的技术后面详谈。 5. 公网IP和私有IP 互联网的网段划分按照不同国家不同地区划分层层划分细分到某块小地区必定存在IP地址位数不够的问题例如划分到我国某市的IP地址为12.34.192.00/18此时仅有214约等于1.6w个不同的主机号这对一个城市量级的网络来说是远远不够的。 因此网段划分到一定的小区域时公网IP不足以分配时就需要建立局域网了。如果一个子网中的IP地址只用于内部通信而不与外网直接通信那么子网内部的IP地址理论上只要保证内部唯一就可以这就是私有IP。但是RFC 1918规定了用于组建局域网的私有IP地址前缀
10.前8位是网络号后16位是主机号共16777216个地址172.16.*~172.31.前12位是网络号后4位是主机号共1047576个地址192.168.*共65535个地址
公网IP十分有限不是每个组织或机构都可以分配到的因此我们引进了私有IP解决问题。通常各地的运营商掌握着公网IP资源我们家里的路由器入网需要当地运营商的工作人员上门操作本质上就是将家用路由器连入运营商的子网。可以理解为一个地区的运营商管理着当地所有家庭、公司等组织的路由器形成一个子网内部要访问外网必须经过运营商路由器。运营商路由器也可能是层层递进的只有最顶层的运营商路由器才有公网IP访问外网的能力。因此运营商在我们日常网络通信中扮演重要角色。 一个路由器可以配置LAN和WAN两个地址 LAN (Local Area Network)路由器的子网IP WAN (Wide Area Network)路由器在外层网络中的IP地址 对于运营商管理的路由器LAN地址一般都是一样的通常是192.168.0.1。不同路由器管理的子网中各主机之间的IP地址是唯一的而不同子网之间主机的IP可以相同。顶层运营商路由器的WAN地址就是一个公网IP一个子网内的主机要想访问外网就必须经过路由到运营商路由器再由运营商路由器将网络数据包转发到公网中。子网内的主机访问外网服务器路由时每层路由器会将IP首部的IP地址替换为WAN地址最终到运营商路由器时就会形成一个具有公网IP的数据包。这种技术就称为NAT技术地址转换Net Address Translation。 6. NAT技术 子网内的主机要想与外网通信必须将私有地址转换为公网地址NAT技术提供了这种转换的能力。如果通信过程一直使用的是私有地址因为私有地址在公网中无效多个子网中可能相同所以从子网能向外网发送数据而外网却无法根据IP地址向确定的子网发回响应。 NAT地址转换过程如下 子网向外发送数据包时经由NAT路由器转换IP首部的源地址为路由器的WAN地址这么做是为了未来对端服务器能够知道将响应发回给谁。而NAT路由器内部需要自动维护一张表记录转换前后的地址映射关系。 外网服务器向子网发回数据包根据历史的源地址作为目标地址发送到目标主机实际上这个目标是一个NAT路由器。路由器收到后查表将目标IP替换回原来的IP再向目标IP发送数据。 NAT路由器的子网中有多台主机如果这些主机向外发送数据时都将目标IP替换为同一个WAN地址那么路由器收到外部数据时如何确定应该给哪台主机转发数据呢这时候NAPT (Network Address and Port Translation)来解决这个问题了使用IPport来建立这个关联关系。 NAPT将局域网内的一个网络进程看作是通信的单位不再是一台主机采用IPport的形式确定同一局域网内唯一的一个网络进程。NAPT的工作原理如下子网内部设备的某个进程请求访问外部网络时路由器会为其分配一个临时的端口号并将请求内部的IP地址IP首部和端口号TCP首部分别替换为路由器WAN地址和临时端口号。 路由器NAPT分配的端口号是唯一的不同IP数据包的临时端口号不同路由器NAPT表中维护的映射关系是目标地址原始源地址 与 目标地址替换后的源地址替换后的源地址用于向外发送数据。当收到外部数据时根据外部数据包的目标地址与表中替换后的源地址比对找到原始的源地址确定要发给哪一个内部的目标。转换表的映射关系是动态开辟的通信结束时对应的映射关系就会销毁。例如在TCP的情况下建立连接时就会生成对应表项; 在断开连接后就会删除这个表项。
为什么表项中要存储目标地址 本质是为了拒收非法的外部数据子网只允许接收自己曾请求的外部节点的数据。对于其它未知的外部节点通过表项中历史目标地址的比对可以将其排除拒收其发送的数据包这样可以有效避免外部对子网的数据攻击。 NAT的缺陷
由于NAT依赖这个转换表因此会有一些缺陷
转换表的创建、维护和销毁都需要成本无法从外部服务器向NAT内网发送数据通信过程中一旦NAT设备异常即使存在热备所有的TCP连接也都会断开。 7. 路由Route
路由就是在复杂的网络结构中找到一条通向目标主机的路径逐步逼向终点的过程。
路由是跨网络传输的过程需要经过多个路由器。数据包到达每一个路由器都会进行“问路”的动作获知下一跳要到哪里。每个路由器中会维护一张路由表表中包含与该路由器属于同一层级子网的设备IP地址如果“问路”时在表中找不到目标IP地址表示数据包的目标不在本地网络范围内就会将数据交付给当前子网的出口路由器默认路由。以此反复直到达到目标IP地址。
注意数据链路实现某一子网区间内的通信IP协议实现直至最终目标的通信 事实上除了路由器一般主机也会维护路由表主要用于保存默认路由的信息又称缺省路由访问外网时直接将数据送往默认路由。
Linux中route命令选项-n表示以数字显示可以查询当前主机的路由表信息。 Destination 目标网络或主机的IP地址这里第一行的0.0.0.0是缺省路由。
Gateway 下一跳路由器的IP地址。
Genmask 子网掩码。
FlagsFlags中的U标志表示此条目有效(可以禁用某些条目)G标志表示此条目的下一跳地址是某个路由器的地址没有G标志的条目表示目的网络地址是与本机接口直接相连的网络不必经路由器转发。
Iface发送接口一般是指哪一个网卡。
关于Destination 同一局域网内可能会连接不同的主机也可能会存在不同的子网。因此Destination可能是主机IP也可能是目标网络IP。 跨网络路由表Destination存储的是子网IP目标IP与Genmask进行与运算可以得到网络号与子网IP进行比对若相同则下一跳进入该子网不跨网络路由表Destination存储的就是主机IP了。 一个主机可能有多张网卡连接不同的网络目标IP和子网掩码配合使用可以确定IP数据包送往哪个网络。 关于Gateway gateway网关是指下一跳路由器的IP。同一局域网的设备因为直连同一网络所以传输数据无需经过路由器Gateway设为0.0.0.0。若传输目标不在本地网络就要使用缺省路由发送到外部网络因此缺省路由的Gateway设置为该路由器的IP。一个数据包从某台主机发出查路由表发现目标地址不在本地网络就使用缺省路由其Gateway告知下一跳路由器的IP地址。 转发示例1如果要发送的数据包的目标地址是10.0.8.0 查找到第二行的Destination为10.0.8.0表示数据包在当前主机的子网内不必经路由器转发直接通过eth0接口向目标主机发送即可局域网通信是数据链路层的概念 转发示例2如果要发送的数据包的目标地址是122.10.1.2 在路由表中查无匹配的Destination则使用默认路由第一行的Gateway表明默认路由的IP地址为10.0.8.1。从eth0接口向10.0.8.1发送数据包并由默认路由根据它的路由表决定下一跳去哪。 附一个内网主机向互联网发送数据的单向过程包括路由表查找、NAPT地址替换、私有IP和公有IP
ENDING…