什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
传输层——可靠数据传输之流水线机制与滑动窗口协议
传输层——TCP特点与段结构
传输层——TCP的可靠数据传输
TCP连接管理(图解三次握手和四次挥手)
传输层——拥塞控制原理与解决方法
TCP的拥塞控制机制
网络层服务与核心功能
网络层服务模型——虚电路网络
网络层服务模型——数据报网络
Internet网络的网络层——IP协议之IP数据报的结构
IP分片
IP编址与有类IP地址
IP子网划分与子网掩码
CIDR与路由聚合
DHCP协议
要想让使用私有地址的主机在公共互联网上进行通信,就需要网络地址转换(NAT)。
如下图所示,路由器左边是互联网,右边是内部网络比如家庭网络。在路由器把内部网络的数据报转发到互联网上之前,必须要进行地址替换。为此,这个路由器必须实现NAT功能,并且至少有一个公共IP地址,就是俗称的合法IP。
在这种情况下,内部网络中的主机之间相互通信使用自己的地址作为源IP和目的IP是没有问题的,但是如果这些主机要发送或接收来自互联网的数据报的时候,就必须进行地址转换。比如发送给互联网的数据报的源地址要替换为公共IP地址。

NAT带来的最主要的好处之一就是能够在IPv4地址匮乏的情况下仍然保证网络健康地发展和运行,尤其让众多使用私有地址的网络设备可以成功的在网络上通信。
概括地来说,NAT最典型的实现方法是通过一次替换、一次记录、再来一次替换来完成。
在NAT实现的基本方法中,要利用端口号。端口号是16比特的字段。一个公共IP同时支持60,000多并行连接。
但NAT带来了诸多方便的同时也有很多争议,比如:
NAT的一些问题通常利用一些技术穿透NAT来完成。
比如这样一个例子:

客户期望连接内网地址为 10.0.0.1的服务器。但不能直接利用地址 10.0.0.1直接访问服务器。对外部用户来说,能看到的就是路由器拥有的公共IP地址,即NAT地址,比如这里的138.76.29.7。解决NAT的穿透/穿越主要有三种方法:
解决方案1:静态配置NAT。配置NAT转换表,让对外的、公共的IP地址以及一个端口映射为内部的私有IP地址以及对应的端口。比如配置(138.76.29.7, 2500) 总是转发给(10.0.0.1, 25000)
解决方案2:利用UPnP (Universal Plug and Play) 互联网网关设备协议 (IGD-Internet Gateway Device ) 自动配置。与解决方案1达到的目的是一样的。在这种情况下,内部的主机和路由需要实现UPnP协议,这样之后,内部的主机服务器能够自己学习到NAT公共IP地址 (138.76.29.7),并且完成在NAT转换表中,增删端口映射
解决方案3:中继(如Skype)。
