《TCP/IP详解卷1:协议》学习笔记---NAT

NAT

NAT,Network Address Translation网络地址转换,通常还包括NAPT(把端口也转换了)
解决问题:IP地址枯竭
功能

  • 转换:IP地址和端口号的转换
  • 包过滤:取决于NAT行为和是否存在NAT映射,是否把数据包传入NAT映射对应的内网主机

实现

  • 当内网主机需要发送数据包,NAT就会创建一个NAT映射。服务器回复内网主机会使用到NAT映射
  • NAT编辑器:需要修改数据包中IP地址,UDP/TCP的端口号字段,重新计算校验和,有些应用协议使用到的IP也要进行修改,有这样能力的NAT称为NAT编辑器
  • TCP
    • NAT检测到传出的SYN包,建立NAT映射,激活连接计时器
      • ACK到达,清除连接计时器,激活会话计时器(分钟换成小时)
      • ACK在超时前没到达,删除NAT映射
    • NAT检测到交换两个FIN包后或RST包,删除NAT映射
    • 非正常关闭连接,NAT在计时器到期后进行探测,向内网主机发送数据包
      • 收到ACK则重置会话计时器
      • 超时没收到ACK或收到RST包,删除NAT映射
  • UDP
    • NAT检测到内部发送的数据包,建立NAT映射,激活映射计时器
    • 对外更新:数据包从内部传到外部,更新映射计时器
    • 对内更新(可选):数据包从外部传到内部,更新映射计时器

问题:NAT无法正确处理IP分片,因为只有第一个分片(里面有运输层首部)有端口号信息

NAT行为

圆锥型

  • 独立于端点的(完全圆锥型)

    • 转换行为:对于所有Y:y(外部主机),X':x'唯一
    • 过滤行为:只要存在X':x',就允许所有X:x的数据包传入
  • 依赖于地址的(地址受限圆锥型)

    • 转换行为:对于不同的Y,不同的X':x'
    • 过滤行为:只要X之前发送过数据包到Y,就允许Y的数据包传入X:x,对y没有限制
  • 依赖于地址和端口的(端口受限圆锥型)

    • 转换行为:对于不同的Y:y,不同的X':x'
    • 过滤行为:只要X之前发送过数据包到Y:y,就允许Y:y的数据包传入X:x

对称型

  • 对称NAT
    • 转换行为:对于相同的X:x和不同的Y:y,不同的X':x'
    • 过滤行为:只要X:x之前发送过数据包到Y:y,就允许Y:y的数据包传入X:x

位于NAT后的服务器

使用端口转发,像静态NAT映射
发夹和NAT环回:当客户端和服务器都位于同一个NAT后,借用到NAT时会使用全球IP地址。因为某些应用需要全球IP地址来识别对方

NAT穿越

  • 针孔:NAT映射
  • 打孔:利用针孔使位于NAT之后的两个主机直接通信的方法
  • NAT行为是独立于端点为前提,①主机A访问服务器S1,主机B访问服务器S1,类似于登录的概念,分别在自己的NAT打孔;②S1知道了主机A和主机B的外部路由地址,那么主机A和主机B也可以知道对方的外部路由地址,即可进行通信
  • NAT行为是其他两种依赖为前提,①主机A、B访问服务器S1;②服务器S1让主机B访问主机A,主机A会过滤,但主机B完成了打孔;③服务器S1让主机A访问主机B,因为主机B已经打孔,所以可以进行通信

STUN

Session Traversal Utilities for NAT,NAT会话穿越应用程序,是一个客户机/服务器协议

  • 功能:STUN服务器让客户机找到自己公网地址和NAT行为,提供目的主机的NAT映射外部地址,相当于上面说到的服务器S1

TRUN

Traversal Using Relays around NAT,利用NAT中继的穿越

  • 功能:TURN服务器进行为客户机进行转发
  • 解决问题:位于对称型NAT后的主机无法通信
posted @ 2020-12-04 23:29  肥斯大只仔  阅读(483)  评论(0编辑  收藏  举报