1.IP地址分类:A、B、C、D、E
其中ABC的地址范围为:
Categoty | Range | Private Range |
---|---|---|
A | 0.0.0.0-127.255.255.255 | 10.0.0.0-10.255.255.255 |
B | 128.0.0.0-191.255.255.255.255 | 172.16.0.0-172.31.255.255 |
C | 192.0.0.0-223.255.255.255 | 192.168.0.0-192.168.255.255 |
D类地址作为组播地址来使用,范围:224.0.0.0-239.255.255.255
E类地址则保留研究使用(至今未使用,浪费了)
其中ABC类地址中有一部分地址用作特殊用途,故不会作为公网IP来分配。
2.CIDR(无类别域间路由选择)
最早期按照ABCDE类来划分地址,会导致地址使用的浪费。而使用CIDR后,将原有地址分类的界限打破,使得其网络前缀可以有更多种形式来表达网络前缀。
作用:实现子网划分与地址聚类,压缩路由表规模,提高IP地址的使用效率;可以将某类地址细分或者聚合。
形式:xx.xx.xx.xx/xx
3.IP地址的管理
微观管理:
• 用户:获取地址,让网络知道该用户的地址是什么
-静态配置:可供DNS使用
-动态配置:DHCP
-地址解决:ARP
• 网络服务提供商
地址规划:路由、流控、安全
宏观管理:
国际上如何来管理IP地址的分配,以及使用权和所有权。
4.NAT(网络地址转换)
在网络边界将私有ipv4地址转换为公有ipv4地址,并重写报头信息。
NAT类型 | 特点 |
---|---|
静态NAT | 一个私有IP固定映射到一个公有IP地址,提供内网服务器的对外访问服务 |
动态NAT | 私有IP地址映射池中的公有IP,映射关系是动态临时的 |
NAPT | 私有IP地址和端口号与同一个公有地址加端口进行映射 |
静态映射:
静态映射对外隐藏了内部主机的真实IP地址,起到保护内部主机的作用。静态NAT还可以让外部主机通过内部全局地址访问内部的服务器,在内网需要向外提供网络服务而又不愿意暴露真实IP地址通常使用该类NAT技术。
动态映射:
通过共享NAT地址池的IP地址动态建立NAT的映射关系。当内网主机需要进行NAT地址转换时,路由器会在NAT地址池中选择空闲的全局地址进行映射,每条映射记录是动态建立的,在连接终止时也被收回。
复用PAT:
为了避免处理(转发)返回数据包时出现模糊(不知道送到哪里),必须修改额外的信息(比如外出通信的TCP/UDP端口号)和维护一张转换表,这样返回数据包就可以正确寻址到最初发起会话的源主机。
5.IPV4出现的问题
• 地址不够使用
• 报头拓展能力差
• 主机地址配置的手工管理导致容易出错
• 配置的长效性增加了重新编址的难度
6.IPV6
IPv6的扩展报头的含义
(1) Hop-by-hop options:这个报头定义沿途的路由器必须检查的信息,目前只定义了一个选项:要求支持超 过64K的数据报文,称为jumbogram;这个报头要求 沿途的路由器进一步检查报文的净负荷区,以发现其中的传输控制信息。
(2) Routing:这个报头用于source routing功能,它列举出了通往宿主机的路径上必须经过的路由器,可以是全部路由器(strict routing),也可是部分路由器(loose routing)。
(3) Fragmentation:允许源主机对超长报文进行分段,并对分段的报文进行标识(分段和合段只在源点和宿点进行)。
(4) Authentication:用于报文鉴别,包含三部分:
• 头四个字节保存next header数;
• 然后是32比特的密钥编号(具体使用的密钥体制和密钥分配方法由用户确定);
• 最后是MD5的校验和(128比特)。
(5) Encrypted security payload:用于传送加密的报文,起始的32比特为密钥编号,随后是加密的报文内容。缺省的加密算法是DES-CBC,这时加密报文的起始为初始向量IV。
(6) Destination options:这里包含的信息是给宿主机解释和使用的。
IPv6的编址:①单播;②任播;③组播(就好比IPv4分为ABCDE五类)
单播:单播地址标识的是此类型地址范围内的单个接口;只要单播路由拓扑无误,去往某个单播地址的数据包就可以发送到单一的接口。
组播:组播地址标识的是相同或者不同主机上的零到多个接口。只要组播路由拓扑无误,发往某个组播地址的数据包就可以被发送到地址所标识的所有接口。
任播:任播地址标识的是多个接口。只要任播路由拓扑无误,去往某个任播地址的数据包就可以被发送到所有配置为该地址的接口中距离源最近的那个接口。
单播地址说明:
• aggregate global unicast address可聚合全球单播地址
由IANA分配的可在全球路由的公网IP地址
• link-local address本地链路地址
原因:因为一个界都可以配置多个IPv6地址,所以学习路由很可能出现很多下一跳。所以出现 link-local address唯一标识一个节点。
功能:两个IPv6设备之间的通信(类比ARP);计算路由协议中的下一跳计算。
使用:当在一个节点启用IPv6,启动时节点的每个接口自动生成一个link-local address,其前缀64位为标准指定的,其后64位按EUI-64格式来构造
使用范围:只能在本地链路使用,不能在子网间路由
• site-local address本地站点地址(已被RFC3879取消,并入link-local)
IPv6的私网地址,就像IPv4中的私网保留地址一样
范围:只能在本站点内使用,不能在公网上使用
EUI-64
通俗的来说,假如网络状况出现了问题,没办法获取DHCPv6服务来获得一个IPv6地址,那么这个时候可以以端口的MAC地址加上一些规则来生成一个IPv6地址。
格式:扩展唯一标识符
在IPv6中,无状态自动配置机制使用EUI-64格式来自动配置IPv6地址;
所谓无状态自动配置是指:在网络中没有DHCP服务器的情况下,允许节点自行配置IPv6地址的机制。
构造规则:根据端口的MAC地址再加上固定的前缀来生成一个IPv6地址。
原理:自动将48bit的以太网MAC地址拓展成64bit,再挂在一个64bit的前缀后面,组成IPv6地址。
ICMPv6
• IPv6版本的ICMP协议(即IPv6的控制协议)
IPv6协议的基本组成部分,每个IPv6节点都必须支持
标识ICMPv4的Protocol值为 1,标识ICMPv6的Next Header值为58
• ICMPv6提供报告数据包的错误信息、执行网络层诊断等功能
Neighbor Discovery (邻居发现,ND)
• 相当于IPv4的ARP,ND的报文由ICMPv6承载;
• 路由器发现:主机找到可用的路由器(及其有效期);
• 前缀发现:主机发现链路上存在的所有子网(及其有效期),从 而知道哪些节点直接可达,哪些需要通过路由器可达;
• 实现地址自动配置;
• 地址解决:通过IP地址发现对应的链路地址;
• 下一跳确定:将报文的IP宿地址映射到下一跳的IP地址;
• 邻居不可达检测:发现邻居不再可达,这时可能需要重新进 行地址解决;
• 重复地址检测DAD:检查自己想用的地址是否已被别人使用;
• 重定向:路由器告诉主机特定宿点的更好的下一跳地址。
NDP的协议报文类型
• 路由器请求(Router Solicitation): 当端口使能,主机可发送 此报文,要求路由器立即返回路由器通告信息。
• 路由器通告(Router Advertisement): 路由器向其它节点通告 自己的存在,并给出有关的链路和网络参数;定期发布或 按请求发布。
• 邻居请求(Neighbor Solicitation): 用于确定邻接点的链路地 址,或根据现有的链路地址确定邻接点仍然可达,或用于 重复地址检测。
• 邻居通告(Neighbor Advertisement): 或者是对邻居请求的响 应,或者用于主动通告自己的链路地址变化。
• 重定向(Redirect): 路由器用于通知主机改变某个宿地址的下 一跳地址。通常存在多个出口路由器
7.IPv4向IPv6过渡的基本需求
IPv4和IPv6并存的场景
• 网络节点之间既可以用IPv4也可以用IPv6相互访问
• IPv4互联网(中的一个节点)访问IPv6互联网(中的一个节点)
• IPv6互联网访问IPv4互联网
• IPv4互联网穿越IPv6互联网访问IPv4互联网
• IPv6互联网穿越IPv4互联网访问IPv6互联网
IPv4向IPv6过渡的基本方法
• 双栈方法(IP地址获取方式:无状态、有状态)
节点同时使用IPv4协议和IPv6协议,根据DNS的解析结果或收到的IP报文进行选择
• Translation
单次翻译:实现IPv6与IPv4之间的地址格式映射和协议功能映射
双重翻译:实现IPv4协议穿越IPv6互联网,或IPv6协议穿越IPv4互联网
• Tunneling:解决不同协议网络之间的穿越 (互联)
配置隧道:隧道端点地址需要配置
自动隧道:隧道端点地址从报文中导出,实际实现可用双重翻译代替
NAT64讲解
假如你的网络只有IPV6可以访问公网,而你想访问学校官网,可是学校官网只支持IPV4。这时候可以用NAT64做中间路由,你通过DNS查询的方式向NAT64发送学校官网的域名查询请求。NAT64收到这个查询请求后,查询学校官网的域名信息,发现学校官网只有IPV4的记录,并没有IPV6的记录。而这个时候,因为IPV6长度128位,IPV4才32位,完全可以将IPV4的地址嵌入到IPV6的地址中。于是,NAT64服务器就把学校官网的IPV4地址嵌入一个属于NAT64的IPV6地址中,并把这个IPV6地址作为你查询DNS的结果返回给你。这样,你在访问学校官网的时候,其实并不是访问学校官网的真实IP地址,而是发送请求到这个嵌套了真实地址的IPV6地址,而这个IPV6地址的目的地是NAT64服务器,NAT64服务器接到你的请求后,会根据IPV6中嵌入的IPV4地址替你把请求发给学校官网,学校官网接到请求后会把响应发回给NAT64服务器,然后NAT64服务器再把这个响应数据发回给你(其实NAT64在这个过程完全可以类比为“中间人”)。如此一来,虽然你没有访问IPV4公网的权限,但是依然可以访问IPV4的网址。
NAT444讲解
采用了两级NAT,在客户端网络中使用第一级NAT,来实现私网地址到私网地址的映射;在运营商LSN中使用第二级NAT,实现私网地址到公网地址的映射。
举个简单例子,家用电信宽带,那么在家访问学校官网的时候,首先把请求发给电信服务器,这个过程用的就是第一级NAT,即用户私有地址到运营商私有地址;然后电信再把请求转发到学校官网,这个过程用的是第二级NAT,即运营商私有地址到公网地址。
NAT和NAPT的区别
NAT:网络地址转换
NAPT:网络地址端口转换
它们都是地址转换,NAPT与NAT的区别在于:NAT是一对一转换,NAPT是多对一转换。
通俗来说NAT是一个内部地址转换成一个外部地址进行通信的,而NAPT是多个内部地址使用同一地址不同端口转换成外部地址进行通信的。
简单来说:NAPT发送数据的时候会在源地址和目标地址上加上端口号(比如源地址:192.168.1.2:1010,目标地址:200.1.1.2:1020),回来的数据也是一样。
NAPT与NAT的区别在于,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。这使得多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。(NAPT多了对TCP和UDP的端口号的转换)