IP分类
速记
A类0,网络数-2,没有0000 0000和0111 1111
B类10,网络数-1,没有1000 0000 0000 0000
C类110,网络数-1,没有1100 0000 0000 0000 0000 0000
主机号都是-2,全0或全1情况
A类
8位网络号+24位主机号,其中网络号最高位为0
默认子网掩码255.0.0.0
最大网络数2^7-2个,1~126,没有0.和127.
0.0.0.0表示任意ip地址,127.0.0.0为环回地址,供用户测试回环用
最大主机数2^24-2个,全0表示本主机,全1表示所有主机
B类
16位网络号+16位主机号,其中网络号最高位为10
默认子网掩码255.255.0.0
最大网络数2^14-1,128.1~191.255,没有128.0
128.0不可用(除10外14位都为0),所以-1
最大主机数2^16-2,全0表示本主机,全1表示所有主机
C类
24位网络号+8位主机号,其中网络号最高位为110
默认子网掩码255.255.255.0
最大网络数2^21-1,192.0.1~223.255.255,没有192.0.0
192.0.0不可用(除110外21位都为0),所以-1
最大主机数2^8-2,全0表示本主机,全1表示所有主机
D类,E类
D类为多播地址,一般用于多路广播用户
最高位1110
224.0.0.0~239.255.255.255
E类为保留地址,没用
最高位1111
240.0.0.0~255.255.255.255
特殊ip地址
0.0.0.0:当前主机,可作为源地址使用,不可作为目的地址使用
255.255.255.255:当前网络的广播地址
网络号X+全1:对当前网络号X的网络上的所有主机进行广播
127.0.0.0~127.255.255.255:环回地址,用于环回测试
Localhost:127.0.0.1的别名,也可以通过hosts修改为任意地址
环回地址
主机向自身发送通信的一个特殊的虚拟地址,不走数据链路层,走自己的网络层和传输层
默认为127.0.0.1,命名为localhost,因为是自检,所以一个回环地址的ip报文不能出现在任何网络上
CIDR无分类地址
不去具体划分ABC类地址,而是使用/24表示前24位为网络号,8位主机号
比如192.168.128.0/24
为什么要区分网络号和主机号
两个ip地址相同的网络号表示两个主机在相同网络上,可以直接把数据包发送给目标主机
如果网络号不同则可以通过路由器寻址找到对应的网络号,通过路由控制实现转发
子网划分
除了将ip地址划分为网络号和主机号,还可以进一步将主机号分为子网号和主机号
其实就是除了常规的子网掩码地址之外,在0部分的高位添加1,用来表示子网号
比如一个C类ip地址192.168.1.0,使用子网掩码255.255.255.192进行划分
显而易见C类的默认子网掩码为255.255.255.0,而该值的最后8位是1100 0000即192
说明主机号的前两位11为子网号,后6位为主机号。该子网号共有00、01、10、11四种状态
路由控制
在主机和路由器中都维护一张路由控制表,其中记录了网络地址与下一步应该发送到的路由器地址
在发送ip包时,先确定目标ip地址,再从路由控制表中寻找与该地址具有相同网络地址的记录,并将ip包转发给相应的下一个路由器
如果没找到就把包转发给默认路由
最长匹配原则:
如果路由控制表中存在多条具有相同网络地址的记录,就选择相同位数最多的地址
目标地址是1.2.3.4,匹配1.2.3.0总比1.2.0.0好吧
DNS域名解析
将www.baidu.com域名转换为具体的ip地址,实现流程:
0 浏览器先看自己的缓存中有没有,如果没有就问操作系统的缓存,如果还没有就检查本机域名解析文件hosts,如果还没有就去向DNS服务器查询
1 客户端发出DNS请求,发送给本地域名服务器
2 本地域名服务器如果能找到就返回该ip地址,如果没有就去询问根域名服务器(查询的作用,不能向下继续询问,而是指路)
3 根域名服务器根据.com,返回对应的顶级域名服务器给本地域名服务器
4 本地域名服务器询问顶级域名服务器,顶级域名服务器根据baidu.com返回对应的权威域名服务器给本地域名服务器
5 本地域名服务器询问权威域名服务器,权威域名服务器一定可以得到对应的ip地址返回给本地域名服务器
6 本地域名服务器将ip地址返回给客户端,客户端和目标建立连接
其实就类似遍历一遍域名,根域名提供.com的顶级域名地址,顶级域名提供baidu.com的权威域名地址
只不过根域名和顶级域名只是路标,不能代劳,都需要本地域名服务器自己去问下一个服务器ip地址
ARP地址解析协议
用于实现从ip地址到mac地址的映射,询问目的ip对应的mac地址
主机中的路由表可以找到下一跳的ip地址,所以使用arp协议获取下一跳的mac地址
Arp采用以太网的广播功能,将请求包以广播的形式发送,当交换机或路由器收到该包时,会将次数据发送给同一局域网的其他主机
arp实现流程
1 需要先在主机的arp高速缓存中查看有无对应的ip地址,如果没有则发送arp请求广播给本地局域网的其他主机
2 其他主机收到arp请求,如果无关则忽略,如果有关则把自己的mac地址作为arp响应包返回给主机
3 主机收到arp响应后,会在其arp高速缓存中记录返回的主机ip地址到mac地址的映射
注意:
Arp请求是广播的,arp响应是单播的
Arp请求报文的以太网帧的目的地址为ff:ff:ff:ff:ff:ff
Arp协议的“作用域”是在同一局域网内,而不同局域网之间无法实现,需要通过上一层协议实现(ip?)
RARP逆地址解析协议
根据已知mac地址求ip地址,使用场景:打印机等小型嵌入式设备接入网络时用得到
1 需要先搭建一台rarp服务器,注册设备的mac地址及其ip地址
2 当该小型设备接入网络后,会发出一条rarp请求询问自己的ip地址是多少
3 然后rarp服务器会返回rarp应答包记录了ip地址,小型设备就可设置自己的ip地址
NAT网络地址转换
将私有ip地址转换为公有ip地址,由于大部分网络应用都是使用传输层的TCP/UDP进行数据传输的,所以可以将ip地址和端口号一起进行转换
比如私有网络中有两个客户端192.168.1.10和192.168.1.11同时要和公网ip某某进行通信,这两个客户端的本地端口都是1025
那么NAT会将两个私有ip地址都转为同一个公有ip地址120.229.175.121,但使用不同的端口号进行区分,比如一个1025,一个1026
(也证明上面说的本地端口号没那么重要,都是分配的端口号),然后生成一张NAPT路由器转换表,进行映射
NAT缺点:
1 外部服务器无法主动与NAT内部服务器建立连接,因为NAPT转换表没有转换记录,只能通过NAT向外发起连接
2 转换表的生成与维护与转换都会产生性能开销
3 通信时,如果NAT路由器重启了,那么所有的TCP连接都会被重置
改进方法:
1 ipv6,ip地址多不跟你多bb
2 NAT穿透技术