当前位置: 首页 > news >正文

公司网站一般是怎么做服务器如何配置php网站

公司网站一般是怎么做,服务器如何配置php网站,聊城网站备案,百度地图导航本篇博客整理了 TCP/IP 分层模型中网络层的 IP 协议#xff0c;旨在让读者更加深入理解网络协议栈的设计和网络编程。 目录 一、网络层 二、IP 报头 1#xff09;报头与有效载荷的分离 2#xff09;有效载荷的上交 3#xff09;源 IP 与目的 IP 4#xff09;生存时间…        本篇博客整理了 TCP/IP 分层模型中网络层的 IP 协议旨在让读者更加深入理解网络协议栈的设计和网络编程。 目录 一、网络层 二、IP 报头 1报头与有效载荷的分离 2有效载荷的上交 3源 IP 与目的 IP 4生存时间 三、分片与组装 1MTU 与分片、组装 2分片的具体过程  3组装的具体过程 4分片的丢包情况 补相关面试题 四、 IP 地址与网段划分 1IP 地址的构成 2IP 地址的分配和具体作用 3网段划分 4IP 地址的数量限制 5特殊的 IP 地址 6私网 IP 和公网 IP 五、路由 1数据路由 2路由表查询的具体过程 一、网络层 数据的传输离不开网络协议栈而网络协议栈是分层的。 在 TCP/IP 分层模型中主要包含了应用层、传输层、网络层、数据链路层。 进行网络通信时通信双方发送的数据并不是直接从一方的应用层直接发送到了另一方的应用层而是需要应用层将数据继续向下交付。 待发送的通信数据会先从主机的应用层拷贝至传输层再继续向下贯穿在网络层和链路层经过数据封装后通过网络发送到对方主机而对端主机在收到数据后也同样需要在链路层和网络层进行数据解包并上交给传输层再继续上交至对端的应用层。 其中网络层主要负责的问题是将数据从一台主机送到另一台主机即数据的路由。网络层有能力将数据送到对方主机虽然不能保证每次都能将数据成功送达但因传输层的 TCP 协议的可靠性策略的存在网络层最终一定能将数据可靠地发达。 【ps】一端主机的传输层从应用层中的某个进程那里拿到数据后该数据会贯穿网络协议栈进行封装和解包最终到达对方传输层对端的传输层也会将数据上交给对端应用层中的某个进程因此传输层负责的是数据从一个进程到另一个进程的过程。 通信数据经历的网络传输一般是跨局域网的多个网络之间由路由器这个硬件设备连接起来也就是说  通信数据在网络中一定会经过多个路由器。 既然如此如何选择从源到目的的传输路径就十分重要了而这就是数据路由的过程。  数据路由的目的是在确定目标主机后寻找最短的到达路径。 确定目标主机是非常重要的这直接决定了数据路由时的路径选择也是数据能跨网络送达的根本。只有数据经过了较为正确的路径选择才可能慢慢趋近于目标网络或目标主机。 确定目标主机后数据就可以在网络中进行路由了。数据自身无法进行路径选择是不认路的但好在网络中的一台台路由器可以进行路径选择是认路的于是数据在路由过程中就可以不断地去找网络中的一台台路由器问路。 路由器会将自己做好的路径选择都记录到路由表中只要查询路由表就可以找到去特定点的最短路径。而数据在路由时也会通过路由器来不断进行路径选择以逐步靠近目标网络或目标主机。 【Tips】数据路由的有关概念 主机是配有IP地址、但不进行路由控制的设备不过随着技术的发展现在几乎不存在不进行路由控制的设备了。路由器是既配有IP地址、又能进行路由控制的设备其实现在主流的路由器也不仅仅有路由的功能甚至还具备某些应用层的功能。节点是主机和路由器的统称。 二、IP 报头 【Tips】IP 协议格式 4 位版本号(version)指定 IP 协议的版本IPv4 / IPv6对于 IPv4 来说就是4。4 位首部长度(header length表示 IP 报头的长度以 4 字节为单位。8 位服务类型(Type Of Service)3 位优先权字段已弃用、4 位 TOS 字段、 1 位保留字段必须置为 0。其中4 位 TOS 分别表示最小延时、最大吞吐量、最高可靠性、最小成本这四者相互冲突只能选择一个比如对于 ssh/telnet 这样的应用程序最小延时比较重要而对于 ftp 这样的程序最大吞吐量比较重要。16 位总长度(total length)IP 报文IP 报头有效载荷的总长度用于将各个 IP 报文进行分离。16 位标识(id)唯一的标识主机发送的报文如果数据在 IP 层进行了分片那么每一个分片对应的 id 都是相同的。3 位标志字段第一位保留表示暂时没有规定该字段的意义。第二位表示禁止分片表示如果报文长度超过 MTUIP 模块就会丢弃该报文。第三位表示“更多分片”如果报文没有进行分片则该字段设置为 0如果报文进行了分片则除了最后一个分片报文设置为 0 以外其余分片报文均设置为 1。13 位片偏移(framegament offset)分片相对于原始数据开始处的偏移表示当前分片在原数据中的偏移位置实际偏移的字节数是这个值 × 8 得到的。因此除了最后一个报文之外其他报文的长度必须是 8 的整数倍否则报文就不连续了。8 位生存时间(TTLTime To Live)数据报到达目的地的最大报文跳数一般是 64每经过一个路由TTL 就自减 1一直减到 0 还没到达就丢弃了这个字段主要是用来防止出现路由循环。8 位协议表示上层协议的类型。16 位首部检验和使用 CRC 进行校验来鉴别数据报的首部是否损坏但不检验数据部分。32 位源IP地址和 32 位目的 IP 地址表示发送端和接收端所对应的IP地址。选项字段不定长最多 40 字节。 1报头与有效载荷的分离 IP 是通过这种“定长报头 自描述字段”的方式分离报头与有效载荷的。 IP 报头由基本报头和选项字段组成要分离报头与有效载荷就要先从头读取完报文中的基本报头和选项字段。IP 报文的前 20 个字节是 IP 的基本报头其中包含 4 位的首部长度指明了 IP 报头的具体长度。从下层获取到一个报文后IP 可以根据这 4 位的首部长度来报头与有效载荷。 IP 从下层获取到一个报文后首先读取报文的前 20 个字节并从中提取出 4 位的首部长度此时获得 IP 报头的大小 size最大为 60 字节最小为 20 字节。如果 size 大于 20 字节则继续从报文中读取 size − 20 字节的数据即 IP 报头中的选项字段最大为 40 字节最小为 0 字节。读取完 IP 的基本报头和选项字段后剩下的就是有效载荷了。 2有效载荷的上交 基于 IP 协议的传输层协议不止一种因此 IP 从下层获取到一个报文并将其解包后需要知道应将分离后的有效载荷上交给哪一个协议这会通过 IP 报头中的 8 位协议字段来完成。 IP 报头中的 8 位协议字段表示的是上层协议的类型根据该字段就可以判定出应上交的协议。 该字段是发送端的 IP 层从传输层获取到数据后所填充的假设一份数据是由上层 TCP 交给 IP 的那么其报文中的 8 位协议字段填充的就是 TCP 协议的编号。 3源 IP 与目的 IP IP报头中的 32 位源 IP 地址和 32 位目的 IP 地址分别表示的是报文的发送端 IP 地址、接收端 IP 地址。 数据在网络传输中会经过一个个的路由器来进行路由转发以慢慢趋近于目标主机。路由器在帮助数据进行路由转发时会提取出该数据 IP 报头中的目的 IP 地址作为路由转发的重要依据。 当接收端收到了发送端发来的数据后也可能要给发送端发送数据因此发送端在发送数据时不仅需要指明该数据的目的 IP 地址也需要指明该数据的源 IP 地址以便接收端后续作出应答或发送其他重要的数据。 特别地在进行网络编程时想要一端能发送数据给另一端必须要指明对端的 IP 地址和端口号也就是发送数据的目的 IP 地址和目的端口号。这个需指明的目的 IP 地址其实就是传给网络层的 IP 协议用于数据在网络中进行路由转发的而这个需指明的端口号是给传输层的 TCP协议或 UDP 协议用于指明该数据应交给应用层的哪一个进程。而由于传输层和网络层都是在操作系统内核中实现的因此在实际发送数据时就无须指明发送数据的源 IP 地址和源端口号数据在贯穿网络协议栈经历封装时会被操作系统填充对应的源 IP 地址和源端口号。 4生存时间 报文在网络传输时可能会由某些原因而送达目标主机如果报文在路由时出现了环路路由的情况或目标主机已经异常离线了那么这个报文就成了一个废弃的游离报文。 为了避免网络中出现大量的游离报文IP报头中特别封装了一个字段叫做 8 位生存时间以表示报文到达目的地的最大报文跳数。每当报文经过一次路由其生存时间就会自减 1当生存时间减为 0 时该报文就会被自动丢弃然后在网络中消散。 三、分片与组装 IP 能够将数据跨网络地从一台主机送到另一台主机网络传输期间数据需要经过一个个的路由器并进行路由转发最终才能到达目标主机。 IP 进行数据跨网络传送的前提是需要先将数据从一个节点传送到和自己相连的下一个节点而这实际是由网络层下数据链路层负责的。两个节点直接相连也就意味着这两个节点在同一个局域网中因此要探讨两个相邻节点的数据传送实际探讨的就是局域网通信的问题。   1MTU 与分片、组装 MAC 帧是数据链路层中最典型的协议它能将 IP 传下来的数据封装成数据帧然后发送到网络中。 但 MAC 帧携带的有效载荷其最大长度是有限制的也就是说IP 交给 MAC 帧的报文不能超过某个值而这个值就是最大传输单元 MTUMaximum Transmission Unit一般为 1500 字节。 如果 IP 向下传输的报文超过了 1500 字节那么就会在 IP 层经历分片再交给下层的 MAC 帧进行发送如果数据在发送时在发送端的 IP 层进行了分片那么送达对端后数据也需要在对端的 IP 层进行组装再向上交付给传输层。 不过在网络通信中数据的分片并不是经常要做的不分片其实才是常态。分片本身会带来一些潜在的问题例如可能会增加丢包的概率等。此外 在分片的数据中每一个分片在 IP 层都会被添加上对应的 IP 报头而传输层添加的报头只会出现在第一个分片中因此网络中传输的数据包可能没有传输层的报头。 【ps】数据的分片和组装都由 IP 层完成         数据的分片和组装都是在 IP 层完成的上层的传输层和下层的链路层其实并不关心。         假设传输层的协议为 TCP 。TCP 将待发送的数据交给 IP 后并不关心该数据是否会在 IP 层进行分片换句话说TCP 并不关心数据具体的发送过程而当 TCP 从 IP 获取到数据后也不关心该数据是否在 IP 层经过了组装。         假设链路层的协议为 MAC 帧。 MAC 帧只负责将数据从一个节点传送到和自己相连的下一个节点。当 IP 将待发送的数据交给 MAC 帧后MAC 帧并不知道该数据是 IP 经过分片后的某个分片数据、还是一个没有经过分片的数据它只知道自己一次最多只能发送 MTU 大小的数据如果 IP 交给自己的数据大于 MTU 字节 那自己就无法进行发送。而当 MAC 帧从网络中获取到数据后也不关心这个数据是否需要进行组装只需要将该数据的MAC帧报头去掉后直接上交给上层 IP 。         总得来说数据的总量和可发送量并不由 IP 层决定的总量是由 TCP 层决定的可发送量是由 MAC 层决定的IP 夹在 TCP 和 MAC 之间当 TCP 的数据总量超过 MAC 的可发送量就需要自行决定是否进行数据分片。而 TCP 层和 MAC 层完全不关心 IP 层进行了分片这就实现了高度解耦。 【ps】不仅源端主机可能会对数据进行分片网络中的路由器也可能对数据进行分片。这是因为不同局域网中的 MTU 是不一样的如果传输路径上某个网络的 MTU 比源端网络的小那么该网络中的路由器就可能对 IP 数据报再次进行分片。 2分片的具体过程  假设IP 层要发送 4500 字节的数据。由于该数据超过了 MAC 帧规定的 MTU即 1500 字节因此 IP 需要先将该数据进行分片然后再将一个个的分片交给 MAC 帧进行发送。4500 字节的数据至少需要分为四个分片报文进行发送。 另假设IP 层添加的 IP 报头不携带选项字段其长度为 20 字节且 IP 层将数据分片以下四个分片报文 在对数据进行分片时需要记录分片的信息以便分片报文到达对端的 IP 层后被组装起来。 IP报头中的 16 位标识、3 位标志和 13 位片偏移就记录了数据分片的有关信息。 16 位标识唯一标识主机发送的报文如果数据在 IP 层进行了分片那么每一个分片报文的 16 位标识是相同的。3 位标志第一位保留表示暂时没有规定该字段的意义。第二位表示禁止分片表示如果报文长度超过 MTUIP 模块就会丢弃该报文。第三位表示“更多分片”如果报文没有进行分片则该字段设置为 0如果报文进行了分片则除了最后一个分片报文设置为 0 以外其余分片报文均设置为 1 。13 位片偏移分片相对于原始数据开始处的偏移表示当前分片在原数据中的偏移位置实际偏移的字节数是这个值 × 8 得到的。因此除了最后一个报文之外其他报文的长度必须是 8 的整数倍否则报文就不连续了。 由于四个分片报文是在同一台主机的 IP 层被分片的因此它们的16位标识应是一样的。假设四个分片报文的 16 位标识都是 123则这四个报文对应的 16 位标识、3 位标志中的“更多分片”和13 位片偏移分别如下  3组装的具体过程 MAC 帧会将从网络中获取的数据上交给 IP 层。但这些数据可能来自世界各地可能是经过分片后发送的也可能是没有经过分片直接发送的因此IP 必须要通过某种方式来区分收到的各个数据。 通过 IP 报头中记录了发送端的 IP 地址的 32 位源 IP 地址可以区分数据来自哪一台主句。         而通过 IP 报头中的 16 位标识可以判断哪些报文是没有经过分片的独立报文哪些报文是经过分片后的分片报文。具体来说未分片数据的 16 位标识都是不同的而由同一个数据分片得到的各个分片报文其所对应的 16 位标识都是相同的。         由此通过 IP 报头中的 32 位源 IP 地址和 16 位标识就可以将经过分片的数据各自聚合在一起进行组装。 由同一个数据分片得到的各个分片报文有以下相通的特点 第一个分片报文中13 位片偏移的值一定为 0。最后一个分片报文中“更多分片”标志位一定为 0。对于每一个分片报文来说( 当前报文的 13 位片偏移 当前报文的数据字节数 ) ÷ 8  下一个分片报文的 13 位片偏移。 根据分片报文的这三个相通的特点就能够将分片报文合理的组装起来——先找到分片报文中 13 位片偏移为 0 的分片报文提取出其 IP 报头中的 16 位总长度字段并通过计算得出下一个分片报文的 13 位片偏移然后重复此方式依次将各个分片报文按顺序拼接起来直到拼接到一个“更多分片”标志位为 0 的分片报文为止。 4分片的丢包情况 分片后的报文在网络传输时也可能出现丢包问题不过接收端有能力判断是否收到了全部的分片报文。 现假设某组分片报文对应的 16 位标识值为 x分片报文丢包的情况可以大致分为以下三种 若第一个分片报文丢包了则在接收端收到的分片报文中就找不到对应16位标识为 x、13 位片偏移为 0 的分片报文。若最后一个分片报文丢包了则在接收端收到的分片报文中就找不到对应16为标识为 x、“更多分片”标志位为 0 的分片报文。若其它分片报文丢包了则接收端在进行组装时就会找不到那些 13 位片偏移为特定值的分片报文。 【ps】接收端能够通过 13 位片偏移辨别未分片报文和最后一个分片报文        虽然未分片报文的“更多分片”标志位为 0最后一个分片报文的“更多分片”标志位也为0但接收端能够通过 13 位片偏移识别出它是最后一个分片报文——未分片报文的 13 位片偏移为 0而最后一个分片报文 的13位片偏移不为 0。  【补】可以分片但不建议         虽然传输层并不关心 IP 层如何分片但并不是说分片对传输层就没有影响了具体与传输层中保证传输可靠性的 TCP 协议有关。         如果一个数据在网络传输时没有经过分片那么只要接收端收到了这一个报文就可以认为该数据被可靠地收到了。而如果一个数据进行了分片那么只有接收端收到了全部的分片报文并将其成功组装才可以认为该数据被可靠地收到了。         然而众多的分片报文中难免会有一个报文出现丢包此时接收端无法将报文成功组装起来进而导致接收端会将收到的分片报文全部丢弃使得发送端的 TCP 因收不到对端的应答而要求超时重传且需要将数据整体进行重传。         假设在网络传输时丢包的概率是万分之一那么将数据拆分为一百份进行发送就会使丢包的概率上升到百分之一进而增加传输层重传数据的概率。         因此为了保证数据传输的效率并不建议数据在发送时进行分片。 【补】TCP 少量多次地发送可降低数据分片的概率         数据分片的根本原因其实在于传输层一次性向下交付的数据太多了导致 IP 无法直接将数据向下交给 MAC 帧。如果传输层控制好一次性向下交付的数据量那么 IP 自然也就不需要对数据进行分片。         传输层中的 TCP 协议之所以被称为传输控制协议是因为它可以控制一次向下交付数据不超过某一阈值即 MSSMaximum Segment Size最大报文段长度。         通信双方在建立 TCP 连接时除了需要协商自身窗口大小等概念之外还会协商在后续通信时每一个报文段所能承载的最大报文段长度 MSS。         MAC 帧的有效载荷最大为 MTUTCP 的有效载荷最大为MSS由于 TCP 和 IP 在一般情况下的报头长度都是 20 字节因此一般情况下 MSS MTU - 40也就是说MSS 的值一般为 1460 字节。          TCP 一般会将发送的数据控制在 1460 字节以内以降低数据分片的可能性也只能说是“降低”。这是因为不同局域网的链路层MTU 可能不同如果数据在传输过程中进入到了一个 MTU 较小的网络那么该数据仍可能被该网络中的路由器进行分片。 补相关面试题 Q对端IP层收到数据报后怎么知道这是一个被分片了的数据报         数据链路层不关心 IP 层是否分片了它只管发所以对端的 IP 层收到数据报后需要知道这是一个被分片了的报文。         如果更多分片标志位第三个标志位是 1则说明该数据报被分片了如果更多分片是 0但 13 位片偏移值大于 0也说明该数据报被分片了。 Q对于同一个报文的所有分片对端是如何识别出来的         由于16位标识符的存在对端收到的数据报中标识符相同的数据报组合起来就是一个完整的数据报。 Q怎么判断哪一个数据报是第一个分片哪一个是最后一个分片         更多分片标志位是 1片偏移量是0说明这是第一个分片更多分片标志位是0片偏移量大于0说明这是最后一个分片。 Q怎么分辨哪个分片在前哪个分片在后 将所有分片的片偏移量按照升序排序就可以知道哪个分片在前哪个分片在后。 Q怎么判断分片有没有收全或丢失         当前分片的起始位置自身数据长度如果等于下一个分片中的片偏移量说明这两个分片是挨着的如次反复判断便能判断出是否收全了只要有一次判断结果不相等那么就说明有数据片丢了。 Q怎么保证对端组装起来的报文是正确的         IP协议有16位首部校验和校验通过会分发给上层TCP协议。         TCP协议也有校验和可以判断出数据是否是正确的。 四、 IP 地址与网段划分 1IP 地址的构成 IP地址由网络号和主机号两部分构成 网络号用于区分网络。保证相互连接的两个网段具有不同的标识。主机号用于区分主机。同一网段内主机之间具有相同的网络号但必须有不同的主机号。 例如以下一台路由器连接了两个网段。对于网络标识来讲同一网段内主机的网络标识是相同的不同网段内主机的网络标识是不同的对于主机标识来讲同一网段内主机的主机标识是不同的不同网段内主机的主机标识是可以相同的。         网络号相同的主机放到一起就组成了一个子网网络号不同的主机之间就组成了多个不同的子网。         如果在子网中新增一台主机则这台主机的主机号在子网中是唯一的而网络号和这个子网的网络号一致。 2IP 地址的分配和具体作用 当子网中每新增一台主机时都需要为其分配一个 IP 地址而当子网中每有一台主机断开网络时又需要将它的 IP 地址回收便于分配给新增的主机使用。这使得手动管理 IP 地址非常麻烦而事实上对于 IP 地址的分配和回收一般不会手动进行而是采用 DHCPDynamic Host Configuration Protocol动态主机配置协议技术。 DHCP 是一个基于 UDP 的应用层协议通常被应用在大型的局域网环境中其主要作用就是集中地址管理、分配 IP 地址不仅能使网络环境中的主机动态地获得 IP 地址、Gateway 地址、DNS 服务器地址等信息还能提升地址的使用率。 此外一般的路由器也都带有 DHCP 功能因此路由器其实也可以看作是一个 DHCP 服务器。例如连接 WiFi 时路由器需要验证账号和密码验证通过后路由器就会动态分配一个IP地址通过这个 IP 地址就可以进行各种上网活动。 【Tips】IP 地址的分配和回收一般依赖于应用层的 DHCP 协议。 IP 地址作为信标在数据跨网络传输中起着至关重要的作用。但其实IP 协议将数据跨网络地从一台主机发送到另一台主机并不是直接将数据送达目标主机的而是先将数据送达目标主机所在的网络再送达目标主机的。 也就是说数据在路由时的第一目的并不是找到目标主机而是找到目标网络所在的网络然后再在目标网络中找到目标主机。 数据在路由时之所以不一开始就以找目标主机为目的是因为这样效率太低了。找目标主机的过程本质是排除的过程如果一开始就以找目标主机为目的那么在查找的过程中一次只能排除一个主机而如果一开始先以找目标网络为目的那么就能一次排除大量和目标主机不在同一网段的主机这样就可以大大提高检索的效率。 【Tips】数据在路由时会先找目标网络再找目标主机。 而为了提高数据路由的效率前人对网络进行了网段划分。 3网段划分 过去曾经提出一种划分网络号和主机号的方案将所有 IP 地址按取值范围给分为五类。 A 类0.0.0.0 到 127.255.255.255。B 类128.0.0.0 到 191.255.255.255。C 类192.0.0.0 到 223.255.255.255。D 类224.0.0.0 到 239.255.255.255。E 类240.0.0.0 到 247.255.255.255。 依此方案要判断一个 IP 地址属于哪一类只需要遍历 IP 地址的前 5 个比特位其中第几个比特位最先出现 0 值那么这个 IP 地址就对应地属于哪一类地址。 但随着网络的飞速发展这种划分方案很快就显现了局限性。 由于 A 类地址的网络号只占 7个比特位因此 A 类地址可申请的网络只有  2 ^ 7 个这使得大多数组织例如一些学校、公司、实验室等只好选择申请 B 类地址。而 B 类地址的主机号占 16 个比特位于是理论上一个 B 类网络中允许有 65536 台主机。但在实际网络架设中一般一个局域网中不会存在这么多主机如果存在也就意味着大量的 IP 地址会被浪费掉。 为了避免大量 IP 地址被浪费后来又提出了新的划分方案被称为 CIDRClassless Interdomain Routing无类域间路由。 CIDR 并没有完全抛弃原先的方案而是基于原有的五类网络的继续进行子网划分这也就意味着需要借用主机号中的若干位来充当网络号而为了区分 IP 地址中的网络号和主机号又引入了子网掩码subnet mask的概念。         子网掩码是一个 32 位的正整数通常用一串 “0” 来结尾。每一个子网都有自己的子网掩码将 IP 地址与当前网络的子网掩码进行“按位与”操作就能够得到当前网络的网络号。 随着一个网络被更细粒度地划分成一个个更小的子网子网中 IP 地址对应的主机号也越来越短使得子网中可用 IP 地址的个数也就越来越少由此就避免了大量 IP 地址被浪费的情况。 假设在某一子网中将IP地址的前 24 位作为网络号则该网络对应的子网掩码的前 24 位就为都 1剩下的 8 位都为 0将其用点分十进制表示就是 255.255.255.0。该子网中有一台主机其 IP 地址是 192.168.128.10将这个IP地址与该网络的子网掩码进行“按位与”操作后就得到了 192.168.128.0即这个子网的网络号。         在用子网掩码与子网中主机的 IP 地址进行“按位与”操作时本质就是保留了主机 IP 地址中前24 位的原貌将剩下的 8 位的值清 0 了而已换句话说是将主机号清 0 了于是“按位与”的结果就是该网络的网络号。 【Tips】CIDR 下 IP 地址与 ^ 子网掩码  网络号 另外子网划分是能进行多次的划分出来的子网还可以继续进行子网划分。因此一个数据在路由时随着数据不断路由进入更小的子网其网络号的位数也是在不断变化的更准确地说其网络号的位数是不断在增加的。这也就意味着IP 地址中的主机号其位数在不断减少。于是当数据路由到达目标主机所在的网络时就可以在该网络中找到对应的目标主机并顺利将数据交给该主机。 4IP 地址的数量限制 由于 IP 地址以 IPv4 为例是一个 4 字节、32 位的正整数因此共有 2 ^ 32 个 IP 地址也就是将近 43 亿个IP地址。 TCP/IP 协议规定每个主机都需要有一个 IP 地址。 但现在不仅电脑需要 IP 地址还有其他设备也需要 IP 地址。例如也可以上网的智能手机现在全世界人口已经有 70 多亿了就算只有一半人拥有智能手机算下来也有 30 多亿了而它们都需要一个唯一的 IP 地址。随着科技的发展还有智能手表、智能冰箱、智能洗衣机等设备它们如果要入网就也需要 IP 地址。另外一个主机可能还需要多个 IP 地址更别谈还有很多组网的路由设备也需要IP地址。         所以43 亿个 IP 地址其实早就不够用了因此才提出了 CIDR。 CIDR 对已经划分好的五类网络继续进行子网划分其目的既是为了减少 IP 地址的浪费也是解决 IP 地址不够用的问题。虽然这的确在一定程度上缓解了 IP 地址不够用的问题但 IP 地址的绝对上限并没有增加。 【补】解决 IP 地址不足的其他方案 动态分配 IP 地址只给接入网络的设备分配 IP 地址。由此同一个 MAC 地址的设备每次接入互联网中得到的IP地址不一定是相同的这就避免了 IP 地址强绑定于某一台设备。NAT 技术让不同局域网中同时存在两个相同的IP地址。NAT 技术不仅能解决 IP 地址不足的问题而且还能够有效地避免来自网络外部的攻击隐藏并保护网络内部的计算机。IPv6IPv6 用 16 字节 128 位来表示一个 IP 地址能够大大缓解 IP 地址不足的问题。不过IPv6 并不是 IPv4 的简单升级版它们其实是互不相干的两个协议彼此并不兼容而目前 IPv6 尚未普及。 5特殊的 IP 地址 其实并非所有的 IP 地址都能够作为主机的 IP 地址有些 IP 地址本身是具有特殊用途的。 将 IP 地址中的主机地址全部设为 0就成为了网络号代表这个局域网。将 IP 地址中的主机地址全部设为 1就成为了广播地址用于给同一个链路中相互连接的所有主机发送数据包。 特别的127.* 的 IP 地址用于本机环回loop back测试通常是 127.0.0.1。 主机号为全 0 代表的是当前局域网的网络号主机号为全 1 代表的是广播地址这两个 IP 地址都不能作为主机的 IP 地址。也就是说在某个局域网中最多能存在的主机个数其实是 2 ^ 主机号位数 - 2 。 【补】本机环回         本机环回时数据不会被入网卡也就不会发送到网络中。         本机环回的目的是将数据自顶向下贯穿协议栈经历一轮数据封装的过程然后再自底向上贯穿协议栈进行一轮数据的解包和分用以测试本地的网络功能是否正常。         当数据到达 IP 层需要继续向下交付时如果是环回程序那么 IP 输出函数会将该数据放入到 IP 输入队列当中然后再由IP输入函数读取上去。而 IP 输入函数读取的本应该是链路层交付上来的数据因此该数据后续就会被当作从网络中读取的一样看待各层协议都会对该数据依次进行解包和分用。         如果不是环回程序的话就会判断该数据的目的 IP 地址是否为广播或多播地址或者是否与本主机的 IP 地址相同。是则也会将该数据放入到 IP 输入队列中等待 IP 输入函数将其读走。只有程序不是环回程序且也不是广播或多播、或发给本主机的数据才会用ARP 获取该数据目的主机的以太网地址并进行数据发送的操作。 6私网 IP 和公网 IP 如果一个组织内部组建局域网IP 地址只用于局域网内的通信而不直接连入广域网中则称这个 IP 地址是私有的。 【Tips】私有 IP 和公网 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。 【补】NAT 技术将数据送达服务器         在连接两个或多个网络的路由器上有两种网络接口 LAN 口Local Area Network表示连接本地网络的端口主要与家庭网络中的交换机、集线器或 PC 相连。WAN 口Wide Area Network表示连接广域网的端口一般指互联网。         其中LAN 口的 IP 地址叫做 LAN 口 IP或子网 IP而 WAN 口的 IP 地址叫做 WAN 口IP或外网 IP。         自用的电脑、家用路由器、运营商路由器、广域网以及我们要访问的服务器之间具有如下关系 不同的路由器的子网 IP 其实都是一样的通常是 192.168.1.1子网内的主机的 IP 地址不能重复但子网之间的 IP 地址可以重复。每一个家用路由器也是运营商路由器的子网中的一个节点这样的运营商路由器可能会有很多级最外层的运营商路由器的 WAN 口 IP 就是一个公网 IP 了。如果希望自己实现的服务器程序能够在公网上被访问到就需要把程序部署在一台具有外网 IP 的服务器上。          私网 IP 不能出现在公网中。这是因为不同的局域网中主机的 IP 地址可能是相同的私网 IP 在广域网中无法唯一标识一台主机也就不能让私网 IP 出现在公网上且 IP 地址天然不足也就不能让主机直接使用公网 IP而得让主机使用可重复的私网 IP在不同的局域网中使用相同的 IP 地址以缓解 IP 地址的不足运营商要收取网费数据包必须要经过运营商的路由器才能发送到公网而不能直接发送到公网。         不同局域网中的主机要进行通信必须跨公网。这是因为一个主机要将数据发送给另一台主机前提是得先知道另一台主机的 IP 地址但即便知道了也有可能两台主机的 IP 地址是一样的且都是私网 IP 地址如果一台主机发送数据时将目的 IP 地址填成和自己相同的IP地址系统就会认为这个数据就是要发给自己的就不会向外进行发送了。也就是说数据要从一个局域网到另一个局域网不可能不经过公网。         于是子网内的主机在和外网进行通信时路由器会不断将数据包的 IP 报头中的源IP地址替换成路由器的 WAN 口 IP如此逐级替换最终数据包中的源IP 地址会变成一个公网 IP这种技术就称为 NATNetwork Address Translation网络地址转换。         但实际上也存在一些技术能够使数据包在发送过程中不进行公网 IP 的替换而将数据正确地送到目标主机。这种技术叫做内网穿透或 NAT 穿透。 五、路由 1数据路由 数据在网络传输中会经历路由也就是路径选择从而到达目的主机。 数据路由的过程其实就是一跳一跳Hop by Hop“问路”的过程。所谓“一跳”就是数据链路层中的一个区间具体在以太网中指从源 MAC 地址到目的 MAC 地址之间的帧传输区间。 数据在网络传输中会遇到很多路由器这些路由器会帮助数据进行路由转发。每收到一个数据包路由器都会查询路由表找到该数据的目的 IP 地址并告知该数据下一跳应该往哪跳。 【Tips】路由器查询路由表的可能结果 得知该数据下一跳应该跳到哪一个子网。没有发现匹配的子网此时路由器会将该数据转发给默认路由。得知该数据的目标网络就是当前所在的网络此时路由器就会将该数据转给当前网络中对应的主机。 2路由表查询的具体过程 每个路由器内部会维护一张路由表。 指令 route 可以查看云服务器上对应的路由表。         其中表项的含义为 Destination代表的是目的网络地址。Gateway代表的是下一跳地址。Genmask代表的是子网掩码。FlagsU 标志表示此条目有效可以禁用某些条目G 标志表示此条目的下一跳地址是某个路由器的地址。没有 G 标志的条目表示目的网络地址是与本机接口直接相连的网络不必经路由器转发。Iface代表的是发送接口。 当 IP 数据包到达路由器时路由器就会用其中的目的IP地址依次与路由表中的子网掩码 Genmask 进行“按位与”操作然后将结果与子网掩码所对应的目的网络地址 Destination 进行比对如果匹配则说明该数据包下一跳就应该跳去这个子网然后就会将该数据包通过对应的发送接口 Iface 发出如果没有找到匹配的目的网络地址路由器就会将这个数据包发送到默认路由也就是目标网络地址一项下的 default可以看到默认路由对应的 Flags 是 UG实际就是将该数据转给了另一台路由器让该数据在另一台路由器继续进行路由。 数据包根据自己持有的目的 IP 地址中的网络号不断经过路由器的路由后最终会到达目标主机所在的目标网络然后再根据目的 IP 地址中的主机号进行路由最终会到达目标主机。 【补】路由表生成算法         路由可分为静态路由和动态路由 静态路由是指由网络管理员手工配置路由信息。动态路由是指路由器能够通过算法自动建立自己的路由表且能根据实际情况进行调整。         其中相关生成算法有距离向量算法、LS 算法、Dijkstra 算法等。
http://www.dnsts.com.cn/news/260296.html

相关文章:

  • 长沙点梦网站建设响应式布局网站
  • 企业网站模板是什么要给公司做一个网站怎么做
  • 天津百度建网站装修公司经营范围
  • 做个购物网站一单一结手机兼职
  • 公司手机网站效果图长春网站建设推广
  • 做吃穿住行网站怎么将自己房子投入网站做民宿
  • 举报网站建设自查报告国家企业信息公示系统(全国)官网
  • 网站建设小说毕业设计做a的网站有哪些
  • 做沙盘实训在哪个网站做怎样建立网站快捷方式
  • 做视频网站用什么云盘好广州比较好的网站建设
  • 做网站淮南wordpress系统安装
  • 昆明网站建设价格低企业网站素材
  • 建设门户网站的重要性江苏省建设局网站证件查询
  • 太原免费网站建站模板wordpress精美免费主题
  • 网站怎样上线网站启用cdn加速
  • 网站建设业务开展方案公司网站是怎么做的
  • 3d报价网站开发越众做的绿色建筑的网站
  • 做网站推广送什么动漫设计学校哪里好
  • 安徽旅游在线网站建设wordpress本地环境搭建
  • 重庆做网站怎么做网站备案提示
  • 建设主题网站的顺序一般是网站会员管理系统
  • 三网合一网站建设公司用c3做的动画网站
  • 南通网站搜索引擎优化域名注册好了 怎么做网站
  • 电子产品网站建设医院网站制作设计
  • 太原定制网站建设制作公司宜昌建设厅网站
  • 怎么用手机网站做软件网站建设常用字体
  • 自助建站系统哪个好两个域名指向同一个网站
  • 阿里云官方网站 icp代备案管理系统买模板建设网站
  • 网站快速备案安全吗在线生成头像
  • 网站开发技术总监面试题建设部特殊工种查询网站