概念
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
作用
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
格式
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:
100.4.5.6。
IP协议有两个版本,IPv4和IPv6。我们整个的课程,凡是提到IP协议,没有特殊说明的,默认都是指IPv4。
IPv4数量=2^32,大约43亿左右,而TCP/IP协议规定,每个主机都需要有一个IP地址。对于全世界计算机来说,这个数量是不够的,所以后来推出了IPv6(长度128位,是IPv4的4倍)。但因为目前IPv4还广泛的使用,且可以使用其他技术来解决IP地址不足的问题,所以IPv6也就没有普及。
报文结构
只在需要上网的时候分配IP, 不需要就不分配.
此方法只能缓解, 不能根治.
IP地址分为了两大类:
(1) 如果局域网内部的设备之间进行通信, 是可以的
(2) A局域网中的设备与B局域网中的设备通信, 需要有一个带有外网IP的设备进行中转.
(3) 局域网内部的设备访问带有外网IP的设备, 涉及NAT工作过程.
例如:
我的电脑 => 腾讯路由器发送请求
源IP: 192.168.1.1
目的IP: 1.2.3.4
这个数据报经过移动路由器的时候, 就会触发NAT机制, 移动路由器会使用自己的外网IP替换当前的源IP.
源IP: 10.20.30.40
目的IP: 1.2.3.4
NAT机制下, 一个外网的IP就就可以代表许多其他设备.
腾讯服务器返回响应(IP数据报)
源IP: 1.2.3.4 源端口: 80
目的IP: 10.20.30.40 目的端口: 1234
这个响应怎么传到PC端?
数据报先到达移动路由器, 对于NAT设备(路由器), 在触发NAT的时候, 会维护一个映射表, 映射表形如:
替换前 替换后 IP地址 192.168.1.1 10.20.30.40 端口号 1234 1234 NAT设备要通过查表, 基于可以把目的IP替换回来
源IP: 1.2.3.4 源端口: 80
目的IP: 192.168.1.1 目的端口: 1234
数据每一次经过路由器转发, 都可能会触发NAT机制(要看路由器是如何配置的, 有的模式下会, 有的不会).
NAT的缺点:
NAT提高了IP地址库的"利用率", 并没有从跟本上解决IP不够用的问题.
但是他有一个很大的优点: 是纯软件实现的方案.
从根本上解决了IP地址不够用的问题.
IPv4, 4个字节, 32位; IPv6, 16个字节, 128位.
IPv6和NAT的诞生时间差不多, 但是NAT应用最广泛.
是因为IPv6和IPv4不兼容!
要想升级IPv6, 就需要更换路由器设备, 这样就会造成巨大成本. 而且更换IPv6并不会提高网速, 也不会提高流畅度, 所以一般人不会选择使用IPv6.
相比之下, NAT方案只需要路由器开发商开发出新版本的软件(路由器固件), 升级软件, 即可支持, 成本很低.
IP地址分为两个部分,网络号和主机号
网络号:标识网段,保证相互连接的两个网段具有不同的标识;
主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
IP地址, 可以是自动分配(一般用于家中的设备, 网络环境简单), 也可以是手动分配的(企业的设备, 网络环境复杂, 需要网管来配置).
一个IP地址, 哪个部分是网络号, 哪个部分是主机号, 是通过 子网掩码 来识别的.
子网掩码和IP地址一样, 也是4字节, 32位的整数.
左侧必须是连续的1, 右侧必须是连续的0, 0和1不能穿插
255.255.0.0展开就是
1111 1111 1111 1111 0000 0000 0000 0000
1的范围就描述了ip地址对应的哪些位是网络号, 前16个bit就是网络号, 后16个bit就是主机号.
特殊的IP地址
每个路由器内部, 有一个数据结构"路由表", 当数据报到达路由器的时候, 就需要查询路由表看看下一步抵达哪.如果查到了, 就直接按照那个方向继续转发, 数据就能到达, 如果没有查到, 路由器会给一个默认的方向(下一跳地址), 沿着默认的方向走(往往是走到了上级路由器)