网际协议IP是TCP/IP体系中两个重要的协议之一。IPv4虽有最终被IPv6取代的趋势,但它仍是当前使用的最重要的因特网协议。 与IP配套使用的还有3个协议:
网际协议 IP 及其配套协议
??
?IPv4协议的主要特点
?IP地址及其指派
?IP 地址的编址方法
IP地址的编址经历两个阶段:
所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号net-id,它标志某主机(或路由器)所连接的网络编号;另一个字段则是主机号host-id,它标志该主机(或路由器)在该类网络中的编号。n这种两级结构的 IP 地址可以记为:IP 地址 ::= { <网络号>, <主机号>}???
其中,::= 代表“定义为”
?IPv4 地址的格式
?IP地址的表示——点分十进制记法 ?
辨别IP地址类别
如果给出了二进制记法表示的地址,用它的前几位表示地址的类别。
?如果用点分十进制记法表示的地址,则按第1 字节表示的十进制数来判定地址类别:A类为0~127,B类为128~191,C类为192~223,D类为224~239,E类为240~255。
?特殊的IP地址
地址 类别 | 可指派的 最多网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中可拥有的最多主机数 | 约占整个地址空间的比例 |
A | 125(27-3) | 1 | 126 | 16777214(224-2) | 50% |
B | 16367(216-17) | 128.1 | 191.255 | 65534(216-2) | 25% |
C | 2096895(221-257) | 192.0.1 | 223.255.255 | 254(28-2) | 12.5% |
IP 地址的一些重要特点
三级IP地址的构成
当初的IP地址设计不够合理,主要体现在:
?1985年起,IP地址格式中增加了一个“子网号字段”,使IP地址由两级结构变为三级结构。这种做法叫作划分子网。
划分子网的基本思路
举例:一个未划分子网的 B 类网络145.13.0.0
划分为三个子网后,对外仍是一个网络
?子网掩码
TCP/IP体系规定:子网掩码是一个32位二进制数,由一串连续的“1”后随一串连续的“0”组成。其中“1”对应于IP地址的网络号和子网号字段,而“0”对应于IP地址的主机号字段。
?子网掩码采用点分十进制表示法(255.255.0.0),也可用网络前缀(或斜线)标记法(135.41.0.0/16)
?IP 地址的各字段和子网掩码的关系
(IP地址) AND (子网掩码) =网络地址?
子网掩码是一个网络或一个子网的重要属性。因特网标准规定:所有的网络都必须有一个子网掩码,它包含在路由表中。
划分子网的概念也适用于未划分子网的情况。未划分子网的网络可使用默认子网掩码。使用子网掩码可简化路由器的路由选择算法。
A、B和C类IP地址的默认子网掩码
划分子网的利弊
子网划分的最初目的是把基于类的网络划分为几个规模相同的子网。其实,创建不同规模的子网可避免IP地址的浪费。对于不同规模子网的划分,称为变长子网划分。
变长子网划分是一种用不同长度的子网掩码来分配子网号字段的技术。它是对已划分好的子网使用不同的子网掩码做进一步划分形成不同规模的网络,从而提高IP地址资源的利用率。
变长子网划分举例
一个B类IP地址为136.48.0.0的网络,需配置为1个能容纳32000台主机的子网,15个能容纳2000台主机的子网和8个能容纳254台主机的子网。
划分子网的概念缓解了当初IP地址设计不够合理所引起的矛盾,而变长子网的概念也符合用户对IP地址实际使用的需要。但这些措施并未从根本上缓解因特网在发展过程中所遇到的困难。
在1992年,因特网面临着三个急需解决的问题:①B类地址在1992年已分配过半。②因特网主干网上的路由表中的项目数急剧增长。③2011年2月,IANA宣布IPv4地址已经耗尽。
IETF在VLSM的基础上,又研究出采用无分类编址方法来解决上述问题。无分类编址方法的正式名字无分类域间路由选择CIDR(Classless Inter-Domain Routing),其新文档是RFC 4632
CIDR的主要设计思想
CIDR取消了以往对IP地址进行分类以及划分子网的概念,利用各种长度的“网络前缀 (network-pfefix) ”来代替分类地址中的网络号和子网号。
??????????? IP地址∷={<网络前缀>,<主机号>}
?CIDR把网络前缀相同的连续的IP地址块组成“CIDR地址块”。一个CIDR地址块可用它的起始地址和块中地址数来表示。如136.48.32.8/20表示某CIDR地址块中的一个地址。
?无分类编址的表示
CDIR使用网络前缀标记法(或斜线记法),即在IP地址后面加一斜线“/”再加一数字,此数字是网络前缀的位数,如136.48.52.36,表示该IP地址的前20位是网络前缀。
CIDR还使用其他几种表示形式。一种是把点分十进制中的低位连续的“0”省去,如20.0.0.0/10,可表示为20/10。另一种是在网络前缀后面加一个星号“*”,如00010100 00*,其中星号前是网络前缀,星号表示IP地址中的主机号
CIDR地址块举例
136.48.32.8/20地址块含有212个地址
?路由聚合(route aggregation)
一个CIDR地址块可以包含很多地址,路由表的表项也可改用地址块来表示。这种地址聚合称为路由聚合。路由聚合既利于缩短路由表,又可减少查找路由表的时间,从而提高了因特网的性能。路由聚合也称为构建超网(supernetting)。
CIDR 虽然不使用子网概念,但仍然使用“掩码”这一名词(只是不叫子网掩码而已)。如对 /20 地址块,它的掩码是20个连续的1。斜线记法中的数字就是掩码中 1 的个数。
?构建超网
在“包含的地址数中”,包含了全0和全1地址。表中K表示210(即1024)。网络前缀小于13或大于27的地址较少使用。 CIDR地址块中的地址数一定是2的整数次幂。
使用CIDR地址块的最大好处
?IP 地址与硬件地址的区别
举例:用两个路由器互连三个局域网
?通信的路径是:H1→经过 R1 转发→再经过 R2 转发→ H2
从协议栈的层次上看数据的流动
?
从虚拟的 IP 层上看 IP 数据报的流动
在链路上看 MAC 帧的流动
?在IP层抽象的互联网上只能看到IP数据报。图中的IP1→IP2表示从源地址IP1到目的地址IP2,两个路由器的IP地址并不出现在IP数据报的首部中
地址解析协议ARP
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终使用的是硬件地址。
IP地址(32位)和硬件地址(48位)之间不存在简单的映射关系。ARP协议解决IP地址与物理地址的映射,而RARP协议解决物理地址与IP地址的映射。
每一个主机都设有一个ARP高速缓存(cache),里面存放有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。
当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,即得到其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该 MAC帧发往此硬件地址。否则该主机运行ARP协议。
ARP 高速缓存
ARP是解决同一个局域网上的主机(或路由器)的IP地址和硬件地址的映射问题。只要主机或路由器与本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动地将该 IP地址解析为链路层所需要的硬件地址。
如果所要找的目的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
从IP地址到硬件地址的解析是自动进行的,这种地址解析过程对用户对透明的。
使用 ARP 的四种典型情况
?为什么不直接使用硬件地址进行通信?
虚拟专用网VPN
由于IP地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
考虑到因特网安全性并不很好,一个机构内也并不需要把所有的主机都接入到外部的因特网。
因而就有一个设想:假定一个机构内部的计算机通信也采用TCP/IP协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址
两种地址
存在的问题:在内部使用的本地地址有可能与因特网中某个IP地址重合,从而出现地址的二义性问题
解决的办法:RFC1918指明了一些专用地址。专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。三个专用地址块,即ICANN预留的部分A、B和C类专用地址块。
- A类:10.0.0.0~10.255.255.255;
- B类:172.16.0.0~172.31.255.255;
- C类:192.168.0.0~192.168.255.255
?采用这种专用IP地址的专用网称为拟专用网VPN。虚拟专用网VPN是建立在基础网络之上的一种功能性网络。它向使用者提供一般专用网所具有的功能,但本身却不是一个独立的物理网络,而是通过隧道技术,架构在公共网络服务商所提供的网络平台(如Internet、ATM和FR等)之上的逻辑网络。
虚拟专用网的两个含义:一是“虚拟”,因为整个VPN网上的任意两个结点之间的连接并没有传统专用网所需的端到端的物理链路,而是将它建立在分布广泛的公用网络的平台上;二是一个“专用网”,每个VPN用户都可以从临时的“专用网”上获得所需的资源。
构建虚拟专用网的注意事项
?虚拟专用网的特点
?虚拟专用网的不足
利用隧道技术实现虚拟专用网
隧道的建立有两种方式:一种是自愿隧道,指服务器计算机或路由器可以通过发送VPN请求配置和创建的隧道;另一种是强制隧道,指由VPN服务提供商配置和创建的隧道。
隧道有两种类型:①点-点隧道。隧道由远程用户计算机延伸到企业服务器,由两边的设备负责隧道的建立,以及两点之间数据的加密和解密。②端-端隧道。隧道中止于防火墙等网络边缘设备,它的主要功能是连接两端的局域网。
?IP数据报由首部和数据两部分组成。
IP数据报的首部
版本——4位,指IP协议的版本。目前广泛使用的协议版本号为4 (即IPv4)。通信双方的协议版本必须一致。
首部长度——4位,表示数据报首部的长度。因首部长度可表示的最大数值是15个单位(每单位为4 字节),所以IP的首部长度的最大值为60字节。当首部长度不足4字节的整数倍时,可利用填充字段加以填充补齐
区分服务——8位,表示对数据报的服务要求。前三位表示优先级(0~7,0最低),D、T、R和C分别表示对时延、吞吐量、可靠性和路由服务费用有选择的要求。最后一位未用。该字段只有当使用区分服务时才使用。
总长度——16位,指整个数据报(包括首部和数据)的长度,单位为字节。数据报的最大长度为65535字节(64KB)。总长度必须不超过数据链路层的最大传送单元MTU。当数据报长度超过MTU时,需对其分片,此时的总长度是指分片后的每一分片(包括首部与数据) 的长度
标识(identification) ——16位,它用于数据报各分片最终被重装成来原来的数据报。它是一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。目的主机将相同标识字段值的各分片数据报最后进行正确地重装(合片)。
标志(flag) ——3位,目前只有后两位有意义。最低位记作 MF (More Fragment)。MF=1表示后面“还有分片”。MF=0表示已是最后一个分片。次低位是DF(Don‘t Fragment) 用来控制是否允许数据报分片。只有DF=0才允许分片。
片偏移——13位,指较长的分组在分片后某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始,以便目的主机重装数据报。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
?IP数据报分片举例:
?
总长度 | 标识 | MF | DF | 片偏移 | |
原始数据报 | 3820 | 12345 | 0 | 0 | 0 |
数据报片1 | 1420 | 12345 | 1 | 0 | 0 |
数据报片2 | 1420 | 12345 | 1 | 0 | 175 |
数据报片3 | 1020 | 12345 | 0 | 0 | 350 |
?生存时间——8位,记为TTL(Time To Live),表示该数据所在网络中的寿命。其单位最初是秒,但为了方便,现在都用“跳数”作为TTL的单位。数据报每经过一个路由器,其TTL值就减 1,当TTL值减为零时,就丢弃这个数据报。