CS144(七)

CS144(七)

NAT

NAT(Network Address Translation)是一种网络地址转换技术,通常由路由器或防火墙设备执行,主要用于在多个设备共享一个公共IP地址时解决地址匮乏的问题

  1. 地址转换:

    NAT设备通过将内部网络的私有IP地址转换为公共IP地址,允许多个设备共享一个或少量的公共IP地址访问互联网

    SNAT(Source NAT):对源地址进行转换(用于内网设备访问外网

    DNAT(Destination NAT):对目标地址进行转换(用于外网访问内网服务)

  2. 端口转换:

    NAT设备在转换IP地址时,同时修改TCP/UDP的源或目标端口,以区分不同的连接:

    内网设备 192.168.1.2:12345 向外访问时,NAT设备将其转换为 203.0.113.1:54321

    响应数据回到 NAT 设备后,它再将端口号和IP地址翻译回原始值

NAT设备需要跟踪每一个TCP连接的状态,以便正确处理后续的通信包

NAT设备会为每个连接创建映射条目,包括内网地址和公网地址的对应关系

内网设备向外发送TCP连接时,NAT设备:

  1. 修改源IP和源端口,记录映射关系
  2. 转发修改后的 SYN
  3. 返回的 SYN-ACK 包中,NAT设备将目标IP和目标端口转换回内网地址

连接终止:

  1. 当TCP连接正常终止(FINRST),NAT设备会删除对应的映射条
  2. 如果TCP连接非正常终止,映射条目会因超时被清除

eg:

1.内网设备 192.168.1.2:12345 向目标服务器 8.8.8.8:80 发起HTTP请求。
2.NAT设备 203.0.113.1 执行以下步骤:
	修改源地址和端口:192.168.1.2:12345 → 203.0.113.1:54321。
	转发请求到 8.8.8.8:80。
3.响应数据返回时:
	NAT设备根据映射表将 203.0.113.1:54321 转换回 192.168.1.2:12345。
	数据包被发送回内网设备

eg: 假设我的iPadiPhoneApple Watch 都连接到同一个路由器的 Wi-Fi 时,向外连接互联网时,它们的公共IP地址是相同的

  1. 内网设备的私有IP地址

    设备连接到路由器后,路由器会通过 DHCP(动态主机配置协议) 分配一个私有IP地址给每个设备,例如:

    1. iPad: 192.168.1.2
    2. iPhone: 192.168.1.3
    3. Apple Watch: 192.168.1.4

    这些私有IP地址只在局域网内有效,外部网络无法直接访问这些地址

  2. NAT进行地址转换

    当这些设备向互联网发起连接时,路由器会将它们的私有IP地址和端口转换为路由器的公共IP地址。例如:

    1. iPad访问某网站,路由器会将 192.168.1.2:12345 转换为 203.0.113.1:54321(假设路由器的公共IP是 203.0.113.1
    2. iPhone访问同一网站,路由器会将 192.168.1.3:23456 转换为 203.0.113.1:65432

    通过不同的端口号区分每个设备的会话,从而实现多设备共享一个公共IP

TCP 和 UDP 的端口号是一个 16 位无符号整数,因此端口号的范围是 0 到 65535 ,即最大端口号是 65535

HTTP

eg:假设浏览器输入http://www.baidu.com 浏览器

  1. 会打开与服务器百度的连接,并发送对该站点主页的GET请求,
  2. 服务器接收请求后,会检查其是否有效,用户是否有权限访问该页面,然后发送响应
  3. 响应有一个与之关联的数字代码;如服务器对GET请求发送200 OK响应,这意味着请求已被接收,响应的其余部分包含文档数据

DNS

http 默认是80;

File是应用层指定想要请求的文件

可以不输入域名,使用http://171.66.3.9/ 来代替http://cs144.scs.stanford.edu

  1. 域名解析:将域名转为IP地址
  2. 反向解析:将IP地址转为域名

DNS架构:

如上图:

  1. 根域名服务器 :负责顶级域(如.com.org)的解析,顶级层次以.表示
  2. 顶级域名服务器(TLD) :负责管理顶级域(如.com
  3. 权威域名服务器:存储某个具体域名的解析记录
  4. 递归解析器:客户端的请求首先到达递归解析器,它负责递归查询过程

递归查询eg:

  1. 客户端请求www.example.com
  2. 递归解析器先问根域名服务器获取.com的TLD服务器
  3. 再向.com的TLD服务器获取example.com的权威DNS服务器
  4. 向权威DNS服务器获取最终的IP地址

DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是一个网络管理协议,用于动态分配IP地址及其他网络配置参数(如网关、DNS服务器等)给设备,使它们能够在网络中进行通信

  1. 自动分配IP地址
  2. 提供网络配置参数
  3. 子网掩码:确定网络部分和主机部分的范围
  4. 网关地址:为设备指定默认路由
  5. DNS服务器地址:设备用来解析域名的服务器

eg:

网络连接时发生了什么?

当 Ubuntu 系统连接到路由器(通过有线或 Wi-Fi),它会通过内置的 DHCP 客户端向路由器发送请求
路由器充当 DHCP 服务器,自动分配一个 IP 地址及其他网络参数给你的 Ubuntu 系统

Ubuntu 系统自动获取一个 IP 地址,例如 192.168.1.10
其他重要的网络参数:
	子网掩码,例如 255.255.255.0
	默认网关(通常是路由器的 IP 地址,如 192.168.1.1)
	DNS 服务器(例如 8.8.8.8 或路由器作为中继 DNS)

子网掩码作用:

子网掩码用于判断两个设备是否在同一子网

  1. 如果两台设备的网络部分相同,则它们位于同一子网,可以直接通信

  2. 如果网络部分不同,则需要通过路由器或网关中转通信

    本机 IP:192.168.1.10
    子网掩码:255.255.255.0
    目标设备 IP:192.168.1.50
    
    网络部分:两者都是 192.168.1
    结论:在同一子网,可以直接通信
    
    如果目标设备的 IP 是 192.168.2.50
    	网络部分不同:192.168.1 ≠ 192.168.2
    	需要通过路由器(默认网关)通信
    

配置默认网关:

当两台设备位于不同的子网时,数据包必须通过默认网关中转

默认网关负责将数据转发到其他子网或互联网

eg:

判断为不同子网:数据包发送到默认网关(192.168.1.1),由网关负责转发

1.数据包从 Ubuntu 系统发送到默认网关(路由器 192.168.1.1)
2.路由器检查目标 IP 地址,确定需要将数据包转发到外网
3.路由器使用 NAT(网络地址转换)将本地 IP 192.168.1.100 映射为路由器的公网 IP(例如 203.0.113.1),并将数据发送到 110.242.68.4(假设目标地址)
相关推荐
梅洪33 分钟前
008静态路由-特定主机路由
网络·网络协议·tcp/ip
网络安全Max2 小时前
网络安全基础
网络·安全·web安全
vener_2 小时前
[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED]
网络·网络协议·ssl
Dynadot_tech4 小时前
使用API管理Dynadot域名,设置默认域名服务器ip信息
网络·api·域名注册·dynadot
幽兰的天空4 小时前
Java基础之网络编程:开启网络通信的神秘之门
java·开发语言·网络
jsons14 小时前
linux route没有默认路由解决
linux·运维·网络
Heaven6454 小时前
4.4 可靠传输的工作原理
网络·网络协议·计算机网络·运输层
忆往夕梦4 小时前
Linux - 防火墙
linux·运维·网络
阿瑾06186 小时前
【网络】协议与网络传输
网络·网络协议