整个因特网就是一个单一的逻辑网络。IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符。IP地址的结构使我们可以在因特网上很方便地进行寻址。
即,一个IP地址在整个因特网范围内是唯一的。
IP地址的编址方式共经历了三个历史阶段:分类编址、划分子网、无分类编址
分类编址
将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成
- 第一个字段是网络号(Net-id),标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内是唯一的。
- 第二个字段是主机号(Host-id),它标志该主机(或路由器)。一个主机号在它前面的网络号范围内必须是唯一的。
格式: IP地址 ::= { <网络号> , <主机号> }
好处:
- IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。方便地址管理;
- 路由器仅根据目的主机所连接的网络号进行转发分组(不考虑目的主机号),路由表中项目数大幅减少,减小了路由表所占的存储空间及查找路由表的时间。
主机号全为0表示网络本身,如202.98.174.0
主机号全为1表示本网络的广播地址,又称直接广播地址,如202.98.174.255
127.0.0.保留为环路自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上
32位全为0,即0.0.0.0表示本网络上的本主机
32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称为受限广播地址
网络地址转换(Network Address Translation,NAT)
缓解IP地址空间耗尽的问题。通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
专用地址(私有IP地址,可重用地址):在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有私有IP地址的互联网称为专用互联网或本地互联网,或者专用网。
为了网络安全划出了部分IP地址为私有IP地址,私有IP地址只用于LAN,不用与WAN连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet),并且允许私有IP被LAN重复使用,这有效的解决了IP地址不足的问题。
在构建局域网时,通常局域网内部都要使用私有IP地址,而且可以由管理员根据用其中的一个类别的私有地址,也可以使用两个类别的私有地址,或三个类别的私有地址都使用。为了弥补IPv4地址日益枯竭的矛盾,在A、B、C类地址中专门划出一小块地址作为全世界各地建设局域网使用,这些划出来专门作为局域网内网使用的IP地址称为私有网络地址(或称为私网地址,内网地址)。
局域网内部网络的所有IP地址都可使用私网地址,而这些私网地址在访问 Internet 时会经过 NAT ( Network Address translation,网络地址转换)技术转换为公网地址再访问 Internet。所以在公网上看不到这些私有地址。
A类1~126 B类128~191 C类192~223
- 1个A类网段:10.0.0.0到10.255.255.255或记为(10/8,又称为24位块)
- 16个B类网段:172.16.0.0到172.31.255.255(或记为172.16/12,又称为20位块)
- 256个C类网段:192.168.0.0到192.168.255.255(或记为192.168/16,又称为16位块)
采用这样的专用IP地址的互连网称为专用互联网或本地互联网,或者专用网。
之所以被称为“专用网”是因为这种网络是为本机构的主机用于机构内部的通信
使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换为全球地址,或将全球地址转换成本地地址。
NAT转换表中存放着 { 本地IP地址:端口 } 到 { 全球IP地址:端口 } 的映射。
通过 { ip地址:端口 } 这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址。
note:普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址,而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。