一文带你全面掌握 IP 协议及其子网划分

互联网协议又叫 IP 协议,它是 TCP/IP 栈中最重要的协议之一,位于网络层之中。如果你想全面掌握 IP 协议,本文非常适合你,掌握好了 IP 协议,对于面试也有很有帮助,因为很多企业在职业要求都会有掌握 TCP/IP 者优先这一条。

阅读完本 Chat,你将掌握以下知识:

  1. IP 协议包含哪些字段,请求头、响应头分别有哪些?
  2. 抓包神器 BurpSuit 的使用。
  3. 路由协议有哪些?
  4. IP 地址是怎么划分的,如果进行子网划分,子网掩码是什么?
  5. HTTPS 的工作流程是怎样的?
  6. 如何用代码实现一个简易的 HTTP 服务器?

      • IP 协议及其子网划分
        • IP 地址的作用:方便路由寻址
        • 路由协议
          • RIP 协议
          • OSPF 协议
          • BGP 协议
        • IP 协议概述
          • IP 协议包详解
          • 分析 IP 协议的二进制/16 进制流量包
        • IP 地址
          • IP 地址概述
          • IP 地址分类
          • IP 子网划分
          • IPv6
      • HTTP 与 HTTPS 协议详解
        • HTTP 简介
        • HTTP 报文
        • Burp Suit 的使用
        • 请求方法
        • 请求头
        • 响应头
        • 请求参数
        • 响应参数
        • 实现一个简易的 HTTP 服务器
          • Java 语言实现
          • Python 语言实现
        • HTTPS 底层原理

在正式开始之前,我先给你做个解释,我最初是考虑 IP 协议和 HTTP 协议分两篇文章来写,但是在内容介绍的时候我把两部分的内容都加进去了,因此,我决定两篇文章集成到一起供你学习研究。

IP 协议及其子网划分

说到 IP,我们每天都会接触。比如,个人电脑连网后,通过使用 ipconfig 或 ifconfig 命令后就可以查看当前电脑的 IP 地址。再比如,我们在阿里云购买了服务器,也会给该服务器自动分配 IP 地址(包括公网地址和私网地址)。

除此之外,如果我们要在本地电脑远程登录服务器,只要知道服务器 IP 地址(当然还有服务器账号和密码,这个不是本文研究的重点),就能找到目标服务器,从而实现服务器的远程连接。那么,本地电脑是如何很快地找到目标服务器的呢?本文会一一满足你的好奇心,我们将慢慢地揭开它的神秘面纱。

IP 地址的作用:方便路由寻址

在讲解理论知识之前,我们先以一段生活中的例子,来告诉你为什么需要 IP 地址。

假设有一个程序员小张,他在成都市的一个互联网公司工作,情人节快到了,他想寄一束玫瑰花给远在北京的女朋友小丽。这时,他就需要联系快递员,快递员上门后给了他一张快递单,他按照要求填写好自己的地址、姓名、电话以及女朋友的地址、姓名、电话。

快递员收到快递单后,按照快递单上的地址开始准备发货,他不会直接发送到北京小丽所在地址,而是先发到成都中转站,成都中转站收到后,继续发给武汉中转站,经过一系列中转后,最终到达北京中转站,北京中转站在收到快递后,根据快递单上的信息,知道目标地址就是本辖区所在地,然后将快递分配快递员,最终准确无误地送到小丽手中。

以上就是一个快递从源地址到目标地址的收发全过程,你肯定对此都很熟悉。其实,在互联网世界中,两个设备之间要进行连接,也会经历如快递一样的流程。其中,小张的地址就相当于源 IP 地址,小丽的地址就相当于目标 IP 地址,而每个快递中转站,你可以理解为路由器。主机 A 要想顺利找到主机 B,一般情况下都会经过路由器进行转发,而路由器之间是如何进行消息传递的,这就需要路由器之间制定一个双方都认可的协议,即路由协议。

两台主机通过路由器进行间接连接后,总要做点什么,比如 A 发送一段文字告诉 B:Hello,这就需要 AB 之间协商好一个通信方式,从最上的应用层到传输层,再到网络层,一层一层地将数据原封不动地发送过去,而在网络层,它们就会通过 IP 协议传递数据。

所以接下来,我将分别介绍路由协议和 IP 协议,你如果能深刻理解这些协议,就会在面试中能有一项加分项。

路由协议

在当今互联网中,有很多不同的运营商网络,比如移动、联通、电信,它们的网络拓扑是不一样的,甚至千差万别。整个互联网拓扑,我们可以用下面的图来简单表示:

一文带你全面掌握 IP 协议及其子网划分_第1张图片

因为每个运营商都会有一些边缘路由器和其他运营商的边缘路由器连接,所以这些边缘路由器必须有统一的路由协议来支持,这就是 BGP 协议,它被称为外部网关协议,即 EGP,而每个运营商内部都会有自己的路由器,这就要求边缘路由必须学会两种甚至多种路由协议。运营商内部采用的路由协议通常是 RIP 协议和 OSPF 协议,它们被称为内部网关协议,即 IGP。

所以接下来,我将依次为大家剖析 RIP、OSPF 和 BGP 协议。

RIP 协议

RIP 协议,英文全称为 Router Information Protocol,即路由信息协议,它采用的是一种被称为“距离—矢量”的算法,所谓“距离—矢量”,它单纯地根据“跳数”来确定下一条的路由地址。RIP 规定,一个路由器到直连网络的跳数为 1,此后每经过一个路由器,则跳数加 1。RIP 协议认为,一个好的路由就是它通过的路由器的数目少,即选择跳数尽可能少的路径。说的很抽象,我用一张图来详细说明下“距离—矢量”算法。

一文带你全面掌握 IP 协议及其子网划分_第2张图片

如上图所示,我们设源路由器为 A,目标路由器为 D,则 A 到 D 有两条路径可选择,即 A->B->C->D 和 A->E->F->C->D,按照 RIP 协议的规定,这两条路径的跳数分别为 3 和 4,那么最终所选择的路径就是 A->B->C->D。

RIP 协议只与自己的“邻居”交换信息,默认每隔 30 秒会发送一次(发送消息并更新路由吗(是的))路由更新,如果一个路由在 180 秒还没有刷新信息,则会将距离设置为无限大,从而从路由表中移除该信息。每个路由器会将它的路由表的所有信息共享出来,并且它最多支持 15 个跳数,超过 15 个则会被丢弃,因此 RIP 协议一般只支持小型网络。

注意:上述所说的只于邻居交换信息,不代表它只交换邻居自己的路由信息,而是交换邻居的路由表的所有信息。

如图:

一文带你全面掌握 IP 协议及其子网划分_第3张图片

路由器 A 的邻居为 B,第一个 30 秒,它和 B 交换信息,由于路由器 B 还没有刷新路由表,因此路由器 A 的路由表新加入了路由器 B 的信息,这时路由器 B 同 C 交换了信息。此时,路由器 B 的路由表加入了路由器 C 的信息。又过了 30 秒,路由器 A 同路由器 B 交换信息,由于路由器 B 的路由表多了路由器 C 的信息,这时路由器 A 也会更新路由器 C 的信息。如果在某一时刻,路由器 B 挂掉了,路由器 A 在 180 秒后还没有收到路由器 B 的更新信息,则会从路由表移除路由器 B 的路由表信息。

OSPF 协议

为了解决大型网络的路由协议问题,OSPF 应运而生,它的英文全称为 Open Shortest Path First,即开发最短路径优先协议。OSPF 协议是一种基于“链路状态”的路由协议,它采用迪杰斯特拉算法来构建最短路径,假设 A 到 B 的带宽为 100Mbps,A 到 C 为 10Mbps,那么 A 到 B 的权重可以设置为 1,而 A 到 C 则设置为 10,这时,从 A 路由出发,下一跳则会经过 B,再到达 C。

假设 A 到 B,B 到 C 的带宽都为 100Mbps,A 到 C 的带宽为 10Mbps,按照 RIP 协议的算法,A 的下一跳直接为 C,但是 A 到 B 再到 C 虽然跳数多了,但是带宽增加了,所以传输时间上会比 A 直接到 C 要快,因此这种情况下 OSPF 协议更加合理一些。

下面通过一个图示来演示最短路径的构建方法。

一文带你全面掌握 IP 协议及其子网划分_第4张图片

图中,数字就代表每个链路状态的权重值,数字越小,链路状态越优,根据迪杰斯特拉算法,最短路径为 A->B->D->F。

但是,在一个大型自治系统中,路由器数量可能会很多,如果每次从一个源出发,寻找目标路由器,就算根据迪杰斯特拉算法找到了最短路径,中间经过的路由器也可能会很多,如果是这样,效率也会很低。因此,OSPF 提出了区域的概念,即在同一个区域的路由器都当做一个内部网络,每个区域也会有一个边缘路由器,这些边缘路由器同时属于多个区域,当区域 A 的一个路由器想要找到区域 B 的一个路由器,他只需找到同时属于 A 和 B 的边缘路由器,再由该边缘路由器找到区域 B 的目标路由器即可。如图:

一文带你全面掌握 IP 协议及其子网划分_第5张图片

BGP 协议

前面已经提到,BGP 协议是一种外部网关协议,它用于不同自治系统(也成为 AS)之间的路由信息交换。BGP 既不是纯粹的矢量-距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。这是因为 BGP 在发布到一个目的网络的可达性的同时,包含了在 IP 分组到达目的网络过程中所必须经过的 AS 的列表。对于 BGP 的内部机制,你大可不必深究,只需要知道它主要用于在不同自治系统之间传递信息即可。

IP 协议概述

IP 协议(Internet Protocol),顾名思义为互联网协议,它主要用于数据间的不可靠的面向无连接的通信,实现三层数据封装与 IP 寻址。

注:文章主要详解 IPv4,关于 IPv6,将在最后一节做一个简要介绍。

定义中说的不可靠并不是贬义词,不可靠意味着效率,所谓专业人干专业事,我们将可靠连接交给上层的 TCP 协议(后面会介绍)就行了。互联网发展到今天,全世界有无数的主机,如果每台主机经过网络层的时候都像 TCP 协议一样进行可靠连接,如三次握手四次挥手,我们的网络将瘫痪成什么样子,可想而知。

阅读全文: http://gitbook.cn/gitchat/activity/5f1aab311fbaaf30a27fcaa8

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

你可能感兴趣的:(一文带你全面掌握 IP 协议及其子网划分)