计算机专业面试难不难 (计算机方面常见的面试问题)

计算机校招有什么好岗位,计算机专业面试常问问题

前段时间公司秋招,经过第一轮的笔试筛选后,还剩下30多个候选人,成哥负责第一轮技术面试。

遇到一个网络工程专业的同学,我问了一个问题,"公司的门户网站需要发布在公网上,应该怎么部署网络环境"。

这位同学回答很简单,"把公网IP地址配置在服务器上,用户直接通过互联网访问到服务器上的门户系统"。

这时我心里一愣,公网IP啥时候直接配置在服务器上了,我还确认了一次,是不是应该通过什么地址转换技术把服务映射到公网吗?很不幸,得到了否定的答案。没有听到成哥想听到的NAT技术。

今天就由成哥带大家研究一下NAT技术,避免面试的时候基础问题回答不上来。

计算机校招有什么好岗位,计算机专业面试常问问题

01 NAT技术的背景

随着互联网的快速发展,在公网上可以使用的IPv4地址已经越来越少,但不是所有IPv4地址都可以在互联网上使用的。这是为什么呢?

早在 IPv4 规划的时候就担心IP地址会有不足的情况,而且为了应付某些企业内部的网络设定,于是就有了私有IP (Private IP) 的产生了。

私网IP地址如下:

10.0.0.0 - 10.255.255.255

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255

私网IP地址有它的好处:

(1)大大缓解了公网IP地址不足的情况,不同企业的内网环境所使用的私网地址是可以相同的,因为不同企业的内网机器不会直接互相访问。

(2)内网服务器全部使用私网地址,黑客在公网上无法直接和内网服务器通信,阻断了黑客直接攻击的可能性。

那回到开篇面试题的问题,部署了私网地址的服务器,如何被公网上的用户访问呢?没错,就是通过NAT(Network Address Translation,网络地址转换)技术,将需要发布到公网的系统映射出去,这样服务器就可以和公网上的客户端交互了。

我们知道网络通信,是通过五元组(源IP地址、目标IP地址、源端口号、目标端口号、协议)进行交互的,NAT其实就把五元组中的源IP地址、目标IP地址、源端口号、目标端口号四个关键字段进行转换从而达到特殊的交互环境。

对了,另外还一个点,工作很多年的人也搞不清楚怎么获取自己的公网IP地址,每次去问,他们就会找到的电脑上的私网IP地址,其实方法很简单,浏览器打开百度,搜索"ip",下面第一个信息就是你的公网IP地址及相应的运营商信息。

02 NAT的分类

根据访问方向,可以把NAT分为源NAT转换和目标NAT转换:

(1)源NAT转换

比如我们在公司的办公环境内,一台PC获取的地址是私网地址192.168.1.2,网关地址192.168.1.1,去访问ping公网的一台服务器100.1.1.1。

实验拓扑如下:

计算机校招有什么好岗位,计算机专业面试常问问题

如下图所示,在配置源NAT之前,PC可以ping通网关地址192.168.1.1,但是ping不通公网的服务IP 100.1.1.1。

计算机校招有什么好岗位,计算机专业面试常问问题

此时我们在路由器上配置源NAT后,配置如下:

计算机校招有什么好岗位,计算机专业面试常问问题

在客户端访问服务器的http服务,可以看到返回200 OK。

计算机校招有什么好岗位,计算机专业面试常问问题

源NAT根据源端口是否转换还分为No-PAT和NAPT:

No-PAT( Port Address Translation )方式的NAT:主要用于一对一的IP地址的转换,端口不进行转换。

这种方式使用比较少,也就是一个内网IP会占用一个公网地址, NAT会话超时时,才会释放该公网IP地址,当地址池的地址不足时,将会出现问题。

NAPT( Network Address Port Translation )方式的NAT:主要用于多对一或多对多的地址转换,转换时地址和端口号同时进行转换。

这种方式是比较常用的源NAT转换方式,每个公网IP都会被多个内网IP地址复用。

(2)目标NAT

公司有一台服务器,部署了门户网站,需要将服务发布到公网给公网的客户访问,这时我们用到的就是目标NAT。

实验拓扑如下:

计算机校招有什么好岗位,计算机专业面试常问问题

因为服务器的地址192.168.1.2在公网上没有路由,因此客户端100.1.1.1是无法访问到192.168.1.2的。

这时我们在路由器上把192.168.1.2的80端口映射到100.1.1.3的80端口,如下图所示,在客户端访问http服务,返回200 OK

计算机校招有什么好岗位,计算机专业面试常问问题

在路由器上的目标NAT配置如下:

计算机校招有什么好岗位,计算机专业面试常问问题

03 NAT的替代技术

我们都知道NAT技术主要是通过地址转换(端口转换)来解决公网地址不够的问题,那除了NAT还有什么技术可以解决这个问题呢?

答案是IPv6,没错,直接替代IPv4技术。

IPv4报头里有32位来标识IP地址,所以IPv4地址最多是2的32次方。

而IPv6使用了128位标识IP地址,IPv6地址最多是2的128次方,这个数量可以给世界上每一粒沙子都分配一个IP地址,从目前的角度来看是无法使用完的。

其实IPv6技术从上个世纪90年代就已经提出了,中国也早早的就在高校实验了IPv6技术,十几年前成哥上大学时,学校就部署了IPv6网络,因为是我的老师亲自设计部署的IPv6环境,成哥也有幸参与其中。

到2019年国内的三大运营商已经完全支持IPv6了,你的手机在4G环境下会同时获取IPv6和IPv4地址。

当IPv6完全普及了,也许NAT技术也将消失。

@IT管理局关注计算机领域技术、大学生活、学习方法、求职招聘、职业规划、职场感悟等类型的原创内容。期待与你相遇,和你一同成长。

本局精彩文章:

  • Wireshark数据包分析三板斧
  • 人人都能掌握的Chrome使用技巧
  • 为什么现在的网站都是HTTPS的?