【学习笔记】-IP(Internet Protocol)协议解析

IP(Internet Protocol)协议

简介

IP 的目的就是要提供一个可以包含多个物理网络的虚拟网络,并提供无连接的数据报交付服务。

IP 协议是网络互联协议(Internet Protocol)的简称,是 TCP/IP 协议族中最主要的两个协议之一,是 TCP/IP 协议族的运作核心。所有的 TCP、UDP、ICMP 及 IGMP 数据都以 IP 数据报格式传输。

图片描述

网络层提供的服务有面向联接和面向无联接的服务两种。

IP 协议提供的是不可靠、无连接的数据报传送服务,这使得各种各样的物理网络只要能够提供数据报传输就能够互联。

  • 不可靠(unreliable):IP 协议不能保证数据报能成功地到达目的地,它仅提供传输服务。当发生某种错误时,IP 协议会丢弃该数据报。传输的可靠性全由上层协议来提供。
  • 无连接(connectionless):IP 协议对每个数据报的处理是相互独立的。这也说明,IP 数据报可以不按发送顺序接收。如果发送方向接收方发送了两个连续的数据报(先是 A,然后是 B),每个数据报可以选择不同的线路,因此 B 可能在 A 到达之前先到达。

当一个主机 A 要向另一个主机 B 发送数据报时,先要检查目的主机 B 是否与源主机 A 连接在同一个网络上,如果是,就将数据报直接交付给目的主机 B 而不需要通过路由器;如果不是,则应该将数据报发送给本网络上的某个路由器,由该路由器按照转发表指出的路由将数据报转发给下一个路由器,这叫做间接交付。

间接交付比直接交付要困难一些,因为发送方必须标识数据报要发送到的一个路由器,这个路由器必须把数据报转发到它的目的网络。

怎样选择一条合适的路径转发到目的网络

IP 层在内存中有一个路由表(输入命令 route -n 可以查看路由表),当收到一份数据报并进行发送时,都要对该表进行搜索:

  • 搜索路由表,如果能找到和目的 IP 地址完全一致的主机,则将 IP 数据报发向该主机;
  • 搜索路由表,如果匹配主机失败,则匹配同子网的路由器(这需要子网掩码的协助)。如果找到路由器,则将该 IP 数据报发向该路由器;
  • 搜索路由表,如果匹配同子网路由器失败,则匹配同网络号路由器,如果找到路由器,则将该 IP 数据报发向该路由器;
  • 如果以上都失败了,就搜索默认路由,如果默认路由存在,则发报;
  • 如果都失败了,就丢掉这个包;
  • 接收到数据报的路由器再按照它自己的路由表继续转发,直到数据报被转发到目的主机;
  • 如果在转发过程中,IP 数据报的 TTL(生命周期)已经被减为 0,则该 IP 数据报就被抛弃。

使用 route -n 查看路由表:

图片描述

traceroute 来追踪路由过程。首先需要安装一下:

sudo apt-get update
sudo apt-get install traceroute

接下来使用 traceroute 追踪本机到 www.shiyanlou.com 的路由:

图片描述

记录按序列号从 1 开始,每个记录就是一跳,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,这是探测数据包向每个网关发送三个数据包后,网关响应后返回的时间。用这三个时间来表示到达这个结点的网络速度。

我们会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以我们得不到什么相关的数据包返回数据。

IP地址的特点

IP 地址是一个 32 位的二进制数,通常被分割为 4 个“ 8 位二进制数”(也就是 4 个字节)。IP 地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中 a、b、c、d 都是 0~255 之间的十进制整数。例如:点分十进 IP 地址(100.4.5.6),实际上是 32 位二进制数(01100100.00000100.00000101.00000110)。

公有地址和私有地址

根据用途和安全性级别的不同,TCP/IP 将 IP 的类型划分为公有地址和私有地址。

  • 公有地址(Public address)由 Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些 IP 地址分配给注册并向 Inter NIC 提出申请的组织机构。通过它直接访问因特网。
  • 私有地址(Private address)属于非注册地址,专门为组织机构内部使用。它们不会出现在 Internet 中,不会被任何 Internet 上的路由器转发。由于私有地址只能在内部网络中使用,当使用专用地址的网络要与 Internet 连接时,必须申请公用 IP 地址,并在连接处使用 NAT 或代理服务技术。私有地址除了可以节约 IP 地址之外,还可以隐蔽内部网络,提高网络的安全性。

IP 地址分类

最初设计互联网络时,为了便于寻址以及层次化构造网络,每个 IP 地址包括两个标识码(ID),即网络 ID主机 ID。网络号表示该主机所属网络,主机号表示该主机在网络中的位置序号。

同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机 ID 与其对应。

Internet 委员会定义了 5 种 IP 地址类型以适合不同容量的网络,即 A、B、C、D、E 五类(其中 A、B、C 是基本类,D、E 类作为组播和保留使用)。它们适用的类型分别为:大型网络或政府机构、中型网络或跨国企业、小型网络、组播地址、实验或备用。

如下图所示它们的 IP 地址由 InternetNIC 在全球范围内统一分配,D、E 类为特殊地址。

图片描述

各类网络可容纳的地址数目不同,其中我们最常见的是 A、B、C 这三类。

A 类地址:

  • A 类地址网络号范围:1.0.0.0—127.0.0.0;
  • A 类 IP 地址范围:1.0.0.0—127.255.255.255;
  • A 类 IP 的私有地址范围:10.0.0.0—10.255.255.255 (所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址);
  • 127.X.X.X 是保留地址,用做循环测试用的;
  • 因为主机号有 24 位,所以一个 A 类网络号可以容纳 224-2=16777214 个主机号。

B 类地址:

  • B 类地址网络号范围:128.0.0.0—191.255.0.0;
  • B 类 IP 地址范围:128.0.0.0—191.255.255.255;
  • B 类 IP 的私有地址范围:172.16.0.0-·–172.31.255.255;
  • 169.254.X.X 是保留地址;191.255.255.255 是广播地址;
  • 因为主机号有 16 位,所以一个 B 类网络号可以容纳 216-2=65534 个主机号。

C 类地址:

  • C 类地址网络号范围:192.0.0.0—223.255.255.0;
  • C 类 IP 地址范围:192.0.0.0—223.255.255.255;
  • C 类 IP 的私有地址范围:192.168.0.0—192.168.255.255;
  • 因为主机号有 8 位,所以一个 C 类网络号可以容纳 28-2=254 个主机号。

D 类地址:

D 类地址的取值范围为 224.0.0.0 到 239.255.255.255,是属于组播地址。其中 224.0.0.1 特指所有主机,224.0.0.2 特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果你的主机开启了 IRDP(Internet 路由发现协议,使用组播功能)功能,那么你的主机路由表中应该有这样一条路由。

E 类地址:

E 类地址的取值范围为 240.0.0.0~254.255.255.255,是保留地址,用作实验和并发测试。

总结来说,五类网络取值范围如下表所示:

图片描述

计算机网络的特殊 IP 地址

网络里的每台电脑(更确切地说,是每一个设备的网络接口)都有一个 IP 地址用于标示自己,就像我们每个人都有一个身份证号码一样。然而,在 40 多亿个可用 IP 地址里,还有一些特殊的 IP 地址,我们一起来看看。

私有地址

一个机构网络要连入 Internet,必须申请公用 IP 地址。但是考虑到网络安全和内部实验等特殊情况,在 IP 地址中专门保留了三个区域作为私有地址,其地址范围如下:

网络类别IP 地址范围网络数
A 类网10.0.0.0~10.255.255.2551
B 类网172.16.0.0~172.31.255.25516
C 类网192.168.0.0~192.168.255.255255

私有地址被大量用于企业内部网络中。一些宽带路由器,也往往使用 192.168.1.1 作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的 IP 地址,如果进行网络互连,那么寻找路由时就会因为地址的不唯一而出现问题。但是这些使用保留地址的网络可以通过 NAT 技术,将本网络内的保留地址翻译转换成公共地址的方式实现与外部网络的互连。这也是保证网络安全的重要方法之一。

保留的 IP 地址段不会在互联网上使用,因此与广域网相连的路由器在处理保留 IP 地址时,只是将该数据包丢弃处理,而不会路由到广域网上去,从而将保留 IP 地址产生的数据隔离在局域网内部。

在局域网内计算机数量少于 254 台的情况下,一般在 C 类 IP 地址段里选择 IP 地址范围就可以了,如从 “192.168.1.1” 到 “192.168.1.254”。

以下是一些特殊的 IP 地址:

0.0.0.0

所有字节都为 0 的地址,即(0.0.0.0),严格来说,这不算是一个真正意义上的 IP 地址。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么 Windows 系统会自动产生一个目的地址为 0.0.0.0 的缺省路由。

255.255.255.255

所有字节都为 1 的 IP 地址,即(255.255.255.255),代表的是在当前子网的广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。

主机地址全为 0 的 IP 地址

当主机地址全为 0 时,代表的是本网。如 192.168.1.0 代表 192.168.1 这个网络,不能分配。

主机地址都为 1 的 IP 地址

主机地址全为 1 时,代表的是广播地址。如发送数据到 192.168.1.255 代表的是发送到这个网段的所有主机上。

127.x.x.x

IP 地址中不能以十进制 “127” 作为开头,该类地址中数字 127.0.0.1 ~ 127.255.255.255 用于回路测试,如 127.0.0.1可以代表本机 IP 地址,用 http://127.0.0.1 就可以测试本机中配置的 Web 服务器。127.0.0.1 这个地址有一个别名 Localhost。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为 127.0.0.1 的数据包。

169.254.x.x

如果你的主机使用了 DHCP 功能自动获得一个 IP 地址,那么当你的 DHCP 服务器发生故障,或响应时间太长而超过了一个系统规定的时间,这时你将会从 169.254.0.0 到 169.254.255.255 中临时获得一个 IP 地址。如果你发现你的主机 IP 地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。

其中,IP 为 169.254.1.105 的地址为 IANA 以及国际互联网管理中心保留的备用 IP 地址,只在紧急的情况下才会启用,比如:网络硬件不同或者拿不到网络分配的地址。不管是软件、还是硬件问题,最后都会使用保留地址。

对一台网络上的主机来说,它可以正常接收的合法目的网络地址有三种:本机的 IP 地址、广播地址以及组播地址。

子网掩码

子网掩码是一个应用于 TCP/IP 网络的 32 位二进制值,它可以屏蔽掉 IP 地址中的一部分,从而分离出 IP 地址中的网络部分与主机部分,基于子网掩码,管理员可以将网络进一步划分为若干子网。

子网掩码共有 4 个字节共 32 位的二进制组成,由连续的 1 和 0 组成。二进制中数值为 1 的位,表示 IP 地址中的网络标识。二进制中数值为 0 的位,表示 IP 地址中的子网主机地址。

子网掩码的分类

子网掩码分为两种:分为缺省子网掩码和自定义子网掩码两种。

缺省子网掩码

也就是未划分子网,也就是 A、B、C 类的 IP 地址,对应的默认子网掩码如下所示:

地址类别子网掩码的二进制形式子网掩码的十进制形式
A 类11111111.00000000.00000000.00000000255.0.0.0
B 类11111111.11111111.00000000.00000000255.255.0.0
C 类11111111.11111111.11111111.00000000255.255.255.0

自定义子网掩码

IP 地址如果只使用 A、B、C、D、E 类来划分,会造成大量的浪费:一个有 500 台主机的网络,无法使用 C 类地址。但如果使用一个 B 类地址,6 万多个主机地址只有 500 个被使用,会造成 IP 地址的大量浪费。

因此,可以在 A、B、C 类网络的基础上,进一步划分子网:占用主机号的前几个位,用于表示子网号。

也就是说,IP 地址在划分子网后,以前的主机号位置的一部分给了子网号,余下的是子网主机号。

做子网划分后的 IP 地址表示为:IP = 网络号+子网号+子网主机号

如下图所示:

图片描述

子网掩码的作用

使用子网掩码的作用主要有 2 个:

  • 划分子网,防止 IP 地址浪费

    子网号的位数没有硬性规定,于是我们用子网掩码来确定一个 IP 地址中哪几位是主机号,具体使用方法如图:

    图片描述

    子网掩码中的 1 标识了 IP 地址中相应的网络号和子网号,0 标识了主机号。将 IP 地址和子网掩码进行逻辑与运算,结果就能区分网络号和子网号。

  • 用来判断 2 个主机是不是属于同一个网络

    在因特网中,如果一台机器访问另一台机器,如果是同一网络,则不需要路由,直接通信。如果不同网络,需要路由寻址。此时如果判断是否在同一网络?只要位于同一网络标识,即是同一网络。

    将 IP 地址的 32 位二进制分别与子网掩码的 32 位二进制进行“与”运算,屏蔽掉主机地址,得到一个新的 32 位地址便是网络地址。

    如果 2 个主机的网络地址相同,则说明在同一个网络,可以直接通信。

IPv6 介绍

IPv6 的地址长度是 128 位,通常将这 128 位的地址按每 16 位划分为一个段,将每个段转换成十六进制数字,并用冒号隔开,比如:2000:0000:0000:0000:0001:2345:6789:abcd 就是一个 IPv6 地址。

在 IPv6 的设计过程中除解决了地址短缺问题以外,还考虑了在 IPv4 中解决不好的其它一些问题,主要有端到端 IP 连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。

IPv6 的好处

(1)更高的传输效率:相比 IPv4 需要携带一堆冗长的数据,IPv6 的固定报头十分简短,能够有效提升网络数据转发效率。

(2)更高的安全性:在信息安全越来越重要的今天,IPv4 没有强制使用 IPSec 加密数据,导致网站明文传输泄漏数据,而 IPv6 则是直接集成了 IPSec,在网络层认证与加密数据,为用户提供端到端的数据安全,保证数据不被劫持。

(3)更高的服务质量:IPv6 头中包含一个新字段,称为 Flow Label 字段,该字段定义了路由器如何识别和处理特定数据包,从而确保信息传递时不会被中间系统修改。因此拥有良好的 QoS,对于诸如 VoIP 这类实时信较高的应用来说往往更青睐 IPv6。

(4)更好的支持移动设备:IPv6 通过其巨大的地址空间确保了每个移动设备都可以拥有自己的 IP 地址。并且拥有专门的 MIPv6 协议,从而允许不同接入技术之间的快速切换,例如从蜂窝网络到无线网络,并且不会对正在进行的连接产生明显影响。

IPv6没能全面部署的原因

(1)成本过高

(2)部署困难

(3)NAT

(4)难以控制。

(5)推广力度不足,市场需求不高

NAT 技术

当你用 ifconfig 查看 IP 地址时,有时你会发现自己的 IP 地址是这样的——192.168.X.X 或 172.16.X.X。这是 C 类网和 B 类网的私有地址,就是俗称的内网 IP。这是因为你的路由器采用了 NAT 技术。

NAT(Network Address Translation,网络地址转换)当在专用网内部的一些主机本来已经分配到了内网 IP 地址,但现在又想和因特网上的主机通信时,NAT 技术将其内网 IP 地址转换成全球 IP 地址,然后与因特网连接,也就是说,内网的数台主机使用了同一个全球 IP 地址在上网。

现自己的 IP 地址是这样的——192.168.X.X 或 172.16.X.X。这是 C 类网和 B 类网的私有地址,就是俗称的内网 IP。这是因为你的路由器采用了 NAT 技术。

NAT(Network Address Translation,网络地址转换)当在专用网内部的一些主机本来已经分配到了内网 IP 地址,但现在又想和因特网上的主机通信时,NAT 技术将其内网 IP 地址转换成全球 IP 地址,然后与因特网连接,也就是说,内网的数台主机使用了同一个全球 IP 地址在上网。

NAT 技术实现了宽带共享,而且有助于缓解 IP 地址空间枯竭的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值