1IP基础知识全家桶
1.1认识IP
IP位于TCP/IP参考模型中的第三层,网络层
网络层主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信
网络层和数据链路层有什么关系
IP的负责在没有直连的两个网络之间进行通信传输,换句话说作用是在复杂的网络环境中,将数据包发送给最终目的主机
MAC的作用是实现直连的两个设备之间的通信
在没有使用NAT网络的情况下,源IP和目标IP地址在传输过程中不会变化,只有源MAC地址和目标MAC一直变化。
1.2IP地址的基础知识
IPv4地址长4个字节,按点分十进制的标记方式,一个字节一组,每组以.
隔开,再将二进制转换成十进制。
理论上来说,最多有
2的32次方
约43个IP,远远不够给每台电子设备配备IP,为什么能够支持这么多IP呢?
依靠NAT
技术转换IP地址
1.2.1 IP地址的分类
共五类
- A类 1位分类号(0),7位网络号,24位主机号,最大主机数
2的24次方-2
- B类 2位分类号(10),14位网络号,16位主机号,最大主机数
2的16次方-2
- C类 3位分类号(110),23位网络号,8位主机号,最大主机数
2的8次方-2
- D类 4位分类号(1110),28位组播地址
- E类 4位分类号(1111),28位留待后用
为什么最大主机数需要减去2?
在IP地址中主机号全1指定当前网络下的所有主机,用于广播,这个地址叫做广播地址
主机号全0用于指定当前网络
广播地址有什么作用,广播地址用于做什么?
1.广播地址用于在同一个链路中相互连接的主机之间发送数据包
2.本地广播:在本网络内广播,
3.直接广播:在不同网络之间广播
D、E类地址是什么,有什么用处
D类和E类地址没有主机号,无法用于主机IP
D类常用于多播,即将包(package)发送给特定组内的所有主机
E类暂时未使用
IP分类的优点
简洁明了,选路简单
只需要依序判断前4位是否为0,很快就能找出网络地址和主机地址
IP分类的缺点
不够灵活:同一网络下,没有地址层次,比如生产环境、测试环境、开发环境需要不同的地址层次
A、B、C类地址不能很好的与现实网络匹配:C类太少,B类太多
1.2.2 无分类地址CIDR
怎么划分网络号和主机号呢?
way1:
a.b.c.d/x
,其中/x
表示前x位属于网络号,x的范围是0~32
例如:10.100.122.2/24,这种地址表示形式就是CIDR,
way2:子网掩码(掩盖主机号,剩下网络号),将子网掩码与IP地址按位计算AND,就可得到网络号
例如:IP地址10.100.122.2、子网掩码255.255.255.0,网络号10.100.122.0
为什么需要分离网络号和主机号?
计算机要通讯,先判断网络地址是否相同(是否位于同一个广播域),相同就可以把数据包直接发送到目标主机
不同则需要进行转发
怎么进行子网划分?
way1:子网掩码将主机地址分为两个部分:子网网络地址和子网主机地址
对C类地址192.168.1.0,使用子网掩码255.255.255.192进行子网划分,前24位是网络号,后6位是子网主机号,中间2位是子网网络号
1.2.3 公有IP地址和私有IP地址
谁管理公有IP地址?
1.2.4 IP地址与路由控制
1.2.5 IP分片与重组
1.2.6 认识IPv6
1.2.7 IPv4首部和IPv6首部
1.3IP协议相关技术
1.3.1 DNS
1.3.2 ARP
1.3.3 DHCP
1.3.4 NAT
NAT怎么缓解IPv4地址耗尽
网络地址转换NAT,将私有IP地址转换成公有IP地址
这样简单的转换没什么意义,N个私有IP地址就要N个公有IP地址,无法环境IPv4地址耗尽的问题。
网络地址与端口转换NAPT,由于绝大多数的网络应用都是使用传输层协议TCP或UDP来传输数据,所以可以把IP地址+端口号一起转换,只需要一个全球IP地址即可。
比如:有两个客户端192.168.1.10和192.168.1.11同时与服务器183.232.231.172进行通信,且这两个客服端的本地端口都是1025。我们就可以把两个私有IP地址都转换成公有地址120.229.175.121,但以不同端口号作为区分。
再生成一个NAPT路由器的转换表,就可以正确的转换地址和端口的组合,使得客户端A、B能同时与服务器进行通信。
缺点:由于NAT/NAPT都依赖于自身的转换表,存在以下问题
外部无法主动于NAT内部服务器建立连接,因为NAPT转换表没有转换记录
转换表的生成和转换操作都会产生性能开销
通信过程中,如果NAT路由器重启了,所有的TCP连接都会被重置
如何解决NAT潜在的问题呢?
way1:改用IPv6,IP量大管饱
way2:NAT穿透技术,让网络应用程序主动发现自己位于NAT设备之后,并且会主动获得NAT设备的公有IP,并为自己建立端口映射条目,注意这些都是NAT设备后的应用程序自动完成的
简而言之就是客户端主动从NAT设备获取公有IP地址,然后自己建立端口映射条目,使用这个条目对外通信,就不需要NAT设备来进行转换了