IP 地址与子网掩码举行 与运算 就可以得到网络号,主机号从 全0 - 全1 就是子网的地址范围
IP 地址和子网掩码另有一种更简洁的表示方法:143.251.30.44/24,表示 IP 地址为 143.251.30,子网掩码的高 24 位为 1,也就是 255.255.255.0
特殊的 IP 地址
将 IP 地址中的主机地址全部设为0,就成了网络号,表示这个局域网
将 IP 地址中的主机地址全部设为1,就成了广播地址,用于给同一个链路中相互毗连的所有主机发送数据包
127. * 的 IP 地址用于本机环回(loop back)测试,通常使用的是 127.0.0.1
IP 地址的数量限定
IP 地址(IPv4)是一个 4 字节(32位的正整数),也就是2的32次方个IP 地址,大概是 43 亿,而在 TCP/IP 协议中规定:每个主机都需要有一个 IP 地址。此外由于一些特殊的 IP 地址存在,可使用的 IP 数量远不敷 43 亿。而且,IP 地址并非是按照主机台数来配置的,而是每个网卡都需要配置一个或多个 IP 地址 CIDR 虽然在肯定水平上缓解了IP地址不敷用的问题(提高了使用率,减少了浪费,但IP地址的总数并没有增长),但仍然不敷用,此时该怎样解决呢? 动态分配 IP 地址:只给接入网络的设备分配 IP 地址,因此同一个 MAC 地址的设备,每次接入互联网中,得到的 IP 地址不肯定相同 NAT技术:后面详讲 IPv6:IPv6 并不是 IPv4 的简朴升级版,它们是互不干扰的两个协议,彼此并不兼容,IPv6 用 16 字节(128位)来表示一个地址,增长了 IP 地址的个数,是从根本上解决问题的方案,但目前 IPv6 还未普及
在了解 NAT 技术之前,我们先来学习 私网IP地址 和 公网IP地址
私网IP地址 和 公网IP地址
若一个组织内部组建局域网,IP地址只用于局域网内部通信,而不毗连到互联网上,理论上,可以使用恣意 IP 地址,但 RFC 1918 规定了用于组建局域网的私有 IP 地址: 10. * :前8位是网络号,共 16 777 216 个地址 172.16 - 172.31:前 12 位是网络号,共 1 048 567 个地址 192.168.* :前16位是网络号,共 65 536 个地址
在这个范围中的,都称为 私网IP,其余的则称为全局IP(或公网IP) 局域网内的设备访问局域网内的另一个设备没有任何问题,那局域网内的设备怎样访问另一个局域网中的设备呢?
一个路由器可以配置两个 IP 地址:一个 WAN 口IP,一个 LAN 口IP(子网IP) 路由器 LAN 口毗连的主机,都附属当前这个路由器的子网中
差别路由器,子网IP实在都是一样的(通常是 192.168.1.1),子网内的主机 IP 地址不能重复,但是子网之间的 IP 地址可以重复
每一个家用路由器,又作为运营商路由器子网中的一个节点,如许的运营商路由器可能会有很多级,最外层的运营商路由器,WAN 口 IP 就是一个公网 IP 了
子网内的主机需要和外网举行通信时,路由器首先将 IP 首部中的 IP 地址举行替换(替换成 WAN 口 IP),如许逐级替换,最终数据包中的 IP 地址称为了一个公网IP,这种技术称为 NAT(Network Address Translation,网络地址替换)
如许,局域网内的主机就可以访问到局域网外的设备了
上述举行替换,就能够让一个 公网 IP 对应多台设备,从而达到节省 IP 地址的结果 局域网内的设备通过 NAT 访问外部信息,那返回数据时,该怎样找到这台设备呢?
路由器举行 NAT 时,会把这次通信的相关信息记载下来
此时,路由器通过查表,找到对应表项,就能把 目的 IP 还原成之前 局域网设备的 IP 了
若局域网的各个设备,访问的是差别的服务器
路由器就可以简朴的通过服务器 IP 地址来举行区分当前是哪次替换,之前是怎样替换的,就怎样替换回去 但是,若局域网内的多台设备,访问同一个服务器,此时又怎样找到对应的设备呢?
上述的表中,不但包罗 源IP 和 目的IP,还包罗 源端口 和 目的端口,路由器在举行查表时,不但会查源 IP 和 目的 IP,还会查源端口和目的端口
这时,NAT 就会修改传输层的报头(此时,路由器就不是一个纯粹工作在网络层的设备,也会涉及到传输层的内容)
但是,在大部门情况下,局域网中的差别设备,访问的是差别网址,此时就可以直接通过服务器IP区分
少数情况下,访问的是同一个服务器,此时可以加上端口号举行区分
极少数情况下,访问的是同一个服务器,且端口号相同,路由器就会自动映射成差别端口,从而举行区分
NAT 本质上也是提高 IP 的使用率,没有增长 IP 地址,而是让 IP 地址被复用
路由选择
路由选择,目的是在复杂的网络布局中,找出一条通往目的主机的门路
路由选择的过程,是 一跳一跳 的 “问路” 过程
所谓 一跳,是数据链路层中的一个区间,在以太网中指从源 MAC 地址到 目的 MAC 地址之间的帧传输区间
IP 数据包的传输过程与 问路 类似:
当 IP 数据包到达路由器时,路由器会先查看目的 IP
路由器决定这个数据包是能直接发送给目的主机,还是需要发送给下一个路由器
依次反复,一直到达目的IP地址 那么,怎样判定当前这个数据包该发送到哪里呢?
这需要依赖每个节点内部维护一个路由表,路由表是一张包罗网络路径的表格,资助路由器决定将数据包转发到哪个下一跳设备(即下一个路由器或目的地)
若路由表中有准确匹配目的地址的条目,路由器将根据该条目决定转发路径;
若没有准确匹配,路由器会找到最长的匹配前缀,以便选择最优路径
路由表可以由网络管理员手动维护(静态路由),也可以通过一些算法自动生成(动态路由),如 距离向量算法