跳转至

网络层协议

NAT

NAT网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为外网IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。

NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

  • 静态转换:一个内网IP只转换为某个公有IP;
  • 动态转换:内部地址可以转换成外部IP集合中的任意一个;
  • 端口多路复用(PAT):多个主机共享一个合法的公网 IP 实现对Internet的访问,每个内部IP映射到公网上的一个端口;
  • 应用程序级网关技术ALG(Appliaction Level Gateway):传统的NAT技术只对传输层头部进行处理,支持对应用层协议中的地址信息进行转换;

SNAT(Source Network Address Translation)指的是源地址转换,它将源IP地址和端口号进行转换。

  • 当一个内部设备向外部网络发送数据包时,SNAT会将源IP地址和端口号替换为一个公共IP地址和端口号,以隐藏内部网络的真实IP地址和端口号。这样可以避免内部网络受到攻击和侵入,并且可以实现多个内部设备共享一个公共IP地址的功能。

DNAT(Destination Network Address Translation)指的是目标地址转换,它将目标IP地址和端口号进行转换。

  • 当外部网络向内部网络发送数据包时,DNAT会将目标IP地址和端口号替换为内部网络中的一个设备的IP地址和端口号,以实现内网穿透和访问内部网络中的设备。

端口多路复用 NAPT

网络地址端口转换NAPT(Network Address Port Translation):

  • 改变外出数据包的源IP地址和源端口并进行端口转换,即端口地址转换采用端口多路复用的方式;
  • 内部网络的所有主机均可共享一个合法外部IP地址实现互联网的访问。

对称NAT(Symmetric NAT)

从同一个内网(IP,端口)发送到同一个目的IP和端口的请求都会被映射到同一个IP和端口:

  • (SourceIP, SourcePort,DestIP, DestPort)只要有一个发生变化都会使用不同的映射条目

锥形NAT(Cone NAT)

内网中的(IP,端口)相同的请求就会被NAT映射到同一个外网(IP,port)

  • 从相同的内部端点(私有地址)到两个不同的外部服务端S1和S2,Cone NAT只为两个会话映射了一个公网端点。
全锥形NAT(Full Cone NAT)

在一个新会话建立了公网/内网端口绑定之后,全锥形NAT接下来会接受对应公网端口的所有数据,无论是来自哪个(公网)终端。

full_cone_nat.webp

地址受限锥形NAT(Restricted Cone NAT)

只转发符合某个条件的输入数据包。条件为:外部(源)IP地址匹配内网主机之前发送一个或多个数据包的结点的IP地址

  • 只有内网主机主动连接的公网IP才可以与内网中的主机通讯。

restricted_cone_nat.webp

端口受限锥形NAT(Port-Restricted Cone NAT)

只当外部数据包的IP地址和端口号都匹配内网主机发送过的地址和端口号时才进行转发。端口受限锥形NAT为内部结点提供了和对称NAT相同等级的保护,以隔离未关联的数据。

port_restricted_cone_nat.webp

问题

  • 不能处理嵌入式IP地址或端口,应用协议里的数据包含本地地址,无法被NAT转换;
  • 不能从公网访问内部网络服务,需要建立NAT到私有地址端口的映射
  • 有一些应用程序虽然是用A端口发送数据的,但却要用B端口进行接收,结果NAT没有B端口的映射;
  • 如果NAT本身又位于另一个NAT之后,则也会出现一些问题;
  • 一些P2P应用在NAT后无法进行,NAT设备后的P2P程序在NAT设备上是不会有映射条目。

NAT穿越技术(NAT Traversal)

解决NAT技术的问题:

  • 让网络应用程序(如QQ)主动发现自己位于NAT设备之后,主动获得NAT设备的公网IP,并为自己建立端口映射条目
  • NAT穿越技术依赖于UPnP协议的支持,也就是说NAT设备必须支持UPnP,支持NAT穿越技术;
  • 网络应用程序一样也需要支持UPnP,支持NAT穿越技术;

对于那种NAT设备位于另一个NAT设备之后的情况,NAT穿越技术也无能为力

IPV4

地址与子网掩码

32位的二进制数,点分十进制,如 192.168.3.1。

IP地址构成:网络号 + 主机号

  • A类地址:1.0.0.0--126.255.255.2551字节的网络地址和3字节主机地址,二进制以0开头
  • 私有区域:10.0.0.0~10.255.255.255
  • B类地址:128.0.0.0--191.255.255.2552个字节的网络地址和2个字节,二进制以10开头
  • 私有区域:172.16.0.0~173.31.255.255
  • C类地址:192.0.0.0--223.255.255.2553个字节的网络地址和1字节的主机地址,二进制以110开头
  • 私有区域:192.168.0.0~192.168.255.255
  • D类地址:224.0.0.0---239.255.255.255,二进制以1110开头,组播地址;
  • E类地址:240.0.0.1---255.255.255.25,二进制以1110开头,用作保留地址;

特殊的地址:

  • 127.X.X.X:本地回环地址
  • 0.0.0.0:当前主机。
  • 255.255.255.255:当前子网的广播地址。

子网掩码:网络号 + 子网号 + 主机号

  • 标准子网掩码:A类,255.0.0.0;B类,255.255.0.0;C类,255.255.255.0
  • 特殊子网掩码:用于网络划分,哪些主机是同一个子网;
  • 131.1.123.23/27:前27位是网络位,后5位是主机位;

数据报文

image-20200122131251808

  • 版本:IP协议的版本。这里版本号为4。
  • 首部长度:可表示的最大数值是15个单位(4 字节为一个单位),即首部长度最多60字节。
  • 区分服务:不同优先级服务质量不同,只有在使用区分服务(DiffServ)时有效。
  • 总长度:首部与数据之和的长度,最大长度为2^16-1=65535字节。
  • 标识:唯一标识数据报的标识符。
  • 标志:中间的一位(DF)0表示分片,1表示 不分片;最低位(MF),0表示最后一个分片,1表示还有分片;最高位保留无用;
  • 片偏移:指明该段处于原来数据报中的位置,以 8 个字节为偏移单位
  • 生存时间:记为TTL(Time To Live),指示数据报在网络中可通过的路由器的最大值。防止数据报无限循环传输
  • 协议:数据报携带的协议(TCP、UDP、IGMP等)
  • 首部检验和:只检验首部,不检验数据。采用16位二进制反码求和算法。
  • 可选字段:可记录时间戳 ,通过路径,安全信息等。
  • 填充:填充为4的倍数 。

IPV6

地址

128位,16位为一段,共 8 段,如2001:0da8:d001:0001:0000:0000:0000:0001

  • ::表示连续的三个0000:0000:0000

IPv4/IPv6的过渡技术:

  • 双协议栈技术:节点同时支持IPv4/IPv6;
  • 隧道技术:在IPv4网络中部署隧道,实现IPv4网络对IPv6的业务承载,如 6to4 隧道、6over4 隧道、ISATAP隧道;
  • NAT-PT技术:使用网关设备连接 IPv6 和 IPv4 网络,当 IPv4 和 IPv6 节点互相访问时,NAT-PT 网关实现协议转换和地址映射;

报文

ipv6.png

ipv6_head.png

  • 版本:IP协议的版本。这里版本号为6。
  • 流量分类:通信类型,相当于IPV4服务类型字段。
  • 流标签:从源点到终点的一系列数据报,同一个流上的数据报标签相同,保证服务质量
  • 有效负载长度:除基本首部以外的字节数(所有扩展首部都算在有效负载内),最大值64KB
  • 下一头部:相当于IPV4的协议字段或可选字段。
  • 跳数限制:用于检测路由循环,路由器在转发数据报时对这个字段减1,变成0丢弃该数据报。

IPv6数据报的目的地址可以是以下三种基本类型地址之一∶

  • 单播((unicast)∶传统的点对点通信;
  • 多播/组播(multicast)∶一点对多点的通信。
  • 任播(anycast)∶这是 IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个

IPSec

Internet Protocol Security:是一个协议包,通过对 IP协议的分组进行加密和认证来保护 IP 协议的网络传输协议簇(一些相互关联的协议的集合)。

  • 认证头:用于数据完整性认证和数据源认证
  • 封装安全负荷:提供数据保密性和完整性认证,包括防止重放攻击的顺序号;
  • Internet密钥交换协议:生成和分发在ESP和AH中使用的密钥,对远程系统进行初始认证;

IPSec 模式:

  • 传输模式IP头没有加密,只是对IP数据进行加密;
  • 隧道模式:对原来的IP数据包进行封装和加密,加上新的IP头;

ARP

Address Resolution Protocol:地址解析协议,IP地址到MAC地址

工作流程:

  • 主机有ARP缓冲保存ARP列表,保存IP地址到MAC地址对应关系;
  • 源主机发送数据,查看ARP列表是否有目的主机IP的MAC地址,有则直接发送;否则,向本网段所有主机发送ARP数据包,包含内容:源主机IP,源主机MAC,目的主机IP
  • 本网络其他主机接受ARP数据包,IP地址不匹配目的主机IP地址,忽略;匹配,则将源主机IP和MAC地址加入ARP缓存(存在则覆盖),然后将自己MAC地址写入ARP响应包中,即告诉源主机目的主机MAC地址;
  • 源主机接受ARP响应包后,将目的主机IP和MAC写入ARP缓存,并发送数据;若源主机一直未收到ARP响应,则ARP查询失败;
  • 广播发送ARP请求,单播发送ARP响应;

RARP

Reverse Address Resolution Protocol:逆地址解析协议,MAC地址到IP地址

# -b 保持广播  -I 指定网卡  -s 指定源IP地址  -c 发送的数据包的数目
$ ifconfig eth0:1 10.90.143.176 netmask 255.255.255.0 up
$ /sbin/arping -b -I eth0 -s "10.90.143.176" "10.90.143.1" -c 4

隧道协议

  • 隧道协议:使用一种网络协议(发送协议),将另一个不同的网络协议封装在负载部分,点对点的连接,两端都需要配置隧道协议;
  • 如 6to4 隧道、6over4 隧道、ISATAP隧道;

  • VPN隧道协议:VPN Server将private ip发送的包作为负载,发送给另一个VPN server解析;