IP¶
IPv4¶
IPv4由32位二进制数组成,通常分割成4组,每组8位(以十进制数表示)
IP组成:起始位+网络号+主机号,据此分成5类
ABC类分别预留了三段IP用于不同规模组织作私有使用
D类为组播地址,向这个IP发送消息,组下的主机都可以收到
但通常使用更灵活的CIDR(无类型域间选路)来表示,类似 x.x.x.x/n
这种形式,/n
表示,前n位为固定的网络号,后(32-n)位为主机号
最常用的为/24
和/16
,比如最常见也最好理解的私有网络IP段:192.168.1.x/24
,二进制为:11000000.10101000.00000001.x
前24位为网络号,后8位为主机号,网络号部分用1表示,主机号部分用0表示,即子网掩码:11111111.11111111.11111111.00000000
,转换为10进制为:255.255.255.0
然后将二进制的IP和子网掩码按位逻辑与运算,即可得到网络地址:11000000.10101000.00000001.00000000
,即:192.168.1.0
网络地址的主机号部分都置为1,则得到广播地址:11000000.10101000.00000001.11111111
,即:192.168.1.255
- 192.168.1.x/24 IP
- 255.255.255.0 子网掩码
- 192.168.1.0 网络地址
- 192.168.1.255 广播地址(向这个地址发送消息所有主机都可以收到
- 192.168.1.1 第一个地址,通常为默认网关(路由器的一个网口)
除去网络地址和广播地址后,8位主机号可分配2^8=256-2=254个主机IP,还要预留一个给默认网关,知道了这个规则之后,便可以通过主机数倒推子网掩码来规划网络
比如有10台主机,则至少需要10+2+1=13个IP,因为2^4=16 > 13,所以主机号至少要4位,即子网掩码为:11111111.11111111.11111111.11110000,十进制为:255.255.255.240
随着互联网用户数以及联网应用/设备数的爆炸式增长,可用的大约36.47亿个IPv4地址已经无法满足地球约75亿人口所使用了,于是升级迭代出IPv6协议
2011年2月3日,IANA宣布IPv4地址已经耗尽
IPv6¶
IPv6由128位二进制数组成,通常分割成8组,每组16位(以十六进制数表示)
可为地球的每一粒沙子提供唯一IP,但它与IPv4是两个完全不同的协议,需要转换和映射才能数据互通,完全取代IPv4可能还需要很长一段时间。
查看IP¶
# windows
ipconfig /all
# linux/mac
ifconfig # 需要安装net-tools,已停止维护
ip addr # 需要安装iproute2,逐渐取代net-tools,推荐
返回字段解析
# 第一行
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> # net_device flags(网络设备状态标识)
# BROADCAST 表示这个网卡有广播地址,可以发送广播包
# MULTICAST 表示网卡可以发送多播包
# UP 表示网卡处于启动的状态
# LOWER_UP 表示L1是启动的,也即网线插着呢
mtu 1500 # 最大传输单元1500字节(这是以太网的默认值)
# MAC头后面的正文(包括IP头、TCP头、HTTP头)不允许超过1500个字节,存不下则分片传输
qdisc pfifo_fast # queueing discipline(排队规则)
# 内核通过某个网络接口发送数据包时,需要按照这个排队规则将数据包加入队列
state UP
# 第二行
link/ether 00:15:5d:21:b9:ea brd ff:ff:ff:ff:ff:ff # mac地址
# 第三行
xxx.xx.xxx.x scope global eth0 # ethernet 以太网卡,范围global,对外访问
127.0.0.1/8 scope host lo # loopback 环回接口,范围host,供本机相互通信
分配IP¶
设置项:IP、子网掩码、默认网关、DNS
方式
- Static(静态) IP
手工给设备设置IP地址
- Dynamic(动态) IP
设备向DHCP服务器(主机或路由器)发送一个请求,获取IP地址
DHCP(Dynamic Host Configuration Protocol) 动态主机配置协议
分配地址的时候会设定租期,当租期过去50%时会向DHCP服务器发送续约请求,如果没有发则IP将被收回
此外,像打印机、服务器、路由器等这些IP不应该经常变化的设备,还可以在DHCP配置中根据MAC地址预留固定IP
数据链路层¶
当两台设备通信时,需要知道彼此的IP和MAC地址,根据IP段的网络地址是否相同,通信过程会有所不同
MAC地址(属于MAC层所以叫MAC地址),是网卡出厂自带的物理地址,类似于身份证号具有全球唯一标识性,仅用于同网段局域网内定位,出了网关还得靠IP路由
MAC(Medium Access Control) 媒体访问控制,主要解决多路访问时谁先发谁后发,以及发给谁等问题
网关(一般是路由器)通过路由协议(常用的有 OSPF 和 BGP)按路由表将数据包发出
网络地址相同¶
设备A如果想要与同网段的设备B通信,首先,设备A先查找本机或交换机的ARP Cache中是否缓存过设备B的MAC地址
ARP(Address Resolution Protocol) 地址解析协议,用于将IP地址解析为MAC地址
# 查看ARP Cache
arp -a # windows
# 动态类型是通过广播获取然后缓存的
# 否则就是静态的,比如手动添加
arp -s IP MAC
如果ARP Cache中没有,将向广播地址发起ARP请求,询问每个设备谁有这个IP,以及MAC地址是啥,当目标IP收到消息后会返回自己的MAC地址,设备A收到MAC地址后缓存到cache,下次可以直接发送不需要再广播
网络地址不同¶
设备A如果想与跨网段的设备D通信,由于设备A和D的IP都是私有IP,彼此需要借助各自NAT网关的公有IP来通信
NAT(Network Address Translation) 网关,主要工作就是将私有IP转换为公有IP
这只是因为IPv4提供的公有IP数不足,为了节约IP才创造出的一种协议,IPv6中是没必要存在的,但由于IPv6还未完全取代IPv4,两个协议混用转换时还是会用到NAT
出了网关,通过动态路由表路由到目标设备
BGP协议:基于TCP协议,根据距离矢量路由算法(Bellman-Ford),找到最短路径,主要用于内网
OSPF协议,基于IP协议,根据链路状态路由算法(Dijkstra),找到最佳路径,主要用于外网
域名¶
根域名,也叫Root/Apex/naked/bare Domains