当前位置 博文首页 > 架构文摘:三天两夜肝完这篇万字长文,终于拿下了 TCP/IP

    架构文摘:三天两夜肝完这篇万字长文,终于拿下了 TCP/IP

    作者:[db:作者] 时间:2021-09-08 22:55

    点击蓝色“架构文摘”关注我哟

    加个“星标”,每天上午 09:25,干货推送!

    来源:22j.co/cPaX

    前言

    计算机网络是一门基础课程,但是老师所讲的东西无非起到一个抛砖引玉的作用。然而对于需要自学的人来说,无疑是更难的。前路漫漫~~

    计算机网络本来就是比较枯燥的,文章内容较多,建议读者耐心看完这篇文章,希望大家看完后都能有所收获。先把这篇文章的大致结构放上来。

    img

    预备知识


    谢希仁的那本《计算机网络》是很多大学选择的计网教材,在第一章是一个概论,大致讲了计算机网络的发展,也可以说是每个人都必须了解的小常识。在这里,我就做一个总结概括,把它作为学习计网预备知识。

    互联网简史

    • 第一阶段:20世纪50年代,数据通信技术与网络理论基础研究

    • 第二阶段:20世纪60年代,ARPANET与分组交换技术

    • 第三阶段:20世纪70年代中期,网络体系结构与网络协议的标准化

    • 第四阶段:20世纪90年代,互联网、高速网络、无线网络、移动互联网与网络安全技术发展

    互联网的发展

    「计算机网络的发展主要经历了下面的七个阶段。」

    • 「批处理」:为了让更多的人使用计算机,出现了批处理系统。所谓的批处理,是指事先把用户数程序数据装入卡带或者磁带,并由计算机按照一定顺序读取。

      img
    • 「分时系统」:批处理系统之后,又出现分时系统。它是指多个终端同时与计算机连接,允许多个用户同时使用计算机。

      img
    • 「计算机通信技术」:在分时系统中,我们看到了终端和计算机的连接,但这并不意味着计算机与计算机之间也已互联连接。随着计算机的数量普及,计算机之间的数据交互的便捷性越来越受到重视,最开始两个主机之间交互数据过程相当繁琐,因此计算机通信技术(计算机与计算机之间由通信线路连接)应运而生。人们可以很轻松的即时读取另一台计算机中的数据,从而极大地缩短了传输数据的时间。

    • 「计算机网络的产生」:20世纪70年代,人们开始实验基于分组交换技术的计算机网络,并着手研究不同厂商的计算机之间相互通信的技术。到了80年代,一种能够互联多种计算机的网络应运而生。网络通信技术进入了发展的高速公路。

    • 「互联网的普及」:进入20世纪90年代,随着计算机的价格降低、性能增强、各类应用纷纷冒头,计算机普及程度越来越高。面对这一趋势,各家厂商不仅要保证生产产品的自身互联性,还着力于让自己的网络技术不断与互联网技术(TCP/IP)兼容。

    • 「互联网时代」:随着互联网的普及,现在,人们越来越离不开互联网了。生活、学习工作也都得依靠网络信息,万物互联的时代早就已经到来了。

    • 「网络安全时代」:互联网给世界带来了颠覆性的改变,给人们日常生活带来了极大的便利,互联网呈现给现代人一个高度便捷的信息网络环境,在国家面前,犹如水电煤气一样,成为了国家必不可少的重要资源,随着万物互联,网络安全必定是国家安全最重要的一环。在互联网普及的初期,人们更关注单纯的连接性,注重不受任何限制的建立连接。但现在,人们不再满足与“单纯的连接”而是更为追求“安全的连接”。

    网络的性能指标

    • 「比特」:比特(bit)是计算机中数据量的单位,也是信息论中使用的信息量的单位。英文单词bit来源于binary digit,意思是一个“二进制数字”。网络技术中的速率指的是连接在计算机网络上的主机在数字信道上传送数据的速率,它也称为数据率(data rate)或比特率(bit rate)。

    • 「带宽」:在计算机网络中,带宽用来表示网络的通信线路传送数据的能力,因此网络带宽表示单位时间内从网络中的某一点到另一点所能通过的“最高数据率”。这种意义的带宽的单位是比特/秒。

    • 「吞吐量」:吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的数据量,他表示当前网络传输数据的能力。

    • 时延:

      • 1、「发送时延」:指主机或路由器发送数据帧所需要的时间,也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需要的时间。

      • 2、「传播时延」:指电磁波在信道中传播一定距离需要花费的时间。

    • 「时延带宽积」:时延带宽积表示链路可容纳的比特数,因此,链路的时延带宽积又称为以比特为单位的链路长度。

    • 「往返时间RTT」:往返时间RTT,表示从发送方发送数据开始,到发送方收到来自接收方的确认(接收方收到数据后便立即发送确认),总共经历的时间。往返时间一般就会包括分组在网络中的各种时延。

    • 「利用率」:利用率可以分为信道利用率和网络利用率两种。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络的利用率则是全网络的信道利用率的加权平均值。信道利用率并非越高越好,这是因为,根据排队论的理论,当某信道的利用率增大时,该信道引起的时延也会迅速增加。信道或网络的利用率过高会产生非常大的时延。

    不能不知道的小常识

    计算机网络的分类

    按照「地理覆盖范围」来分类的话,计算机网络可以被分为一下三个部分:

    • 「局域网」(Local Area NetWork,LAN),常见的办公室、宿舍或网吧中的网络就是局域网几米到10km以内。其特点是:连接范围窄,用户少,配置容易,连接速率高。

    • 「城域网」(Metropolitan Area NetWork,MAN),用于将一个城市、一个地区的企业、机关或学校的局域网连接起来,实现区域内的资源共享

    • 「广域网」:广域网(Wide Area Network,WAN),也称为远程网,不同城市间的LAN或者MAN网络互连,因为距离远,信息衰减比较严重,所以这种网络一般要租用专线,通过特殊协议进行连接,构成网状结构,广域网因为所连接的用户多,所以每个用户的连接速率一般较低。

    计算机网络的拓扑结构

    • 总线结构

      • 优点:费用较低,易于扩展,线路的利用率高;

      • 缺点:可靠性不高,维护困难,传输效率低。

        img
    • 环形结构

      • 优点:令牌控制,没有线路竞争,实时性强,传输控制容易;

      • 缺点:维护困难,可靠性不高

    img
    • 星型结构

      • 优点:可靠性高,方便管理,易于扩展,传输效率高.

      • 缺点:线路利用率低,中心节点需要很高的可靠性和冗余度。

    计算机有哪些结构

    有三种不同的计算机网络分层模型:

    • 「OSI七层模型」

      img
    • 「五层结构模型」

    img
    • 「TCP/IP分层结构模型」

    TCP/IP协议是当前互联网所遵循的协议,它并不是单纯地由TCP或者IP组成,而是由各层的协议一起组成的,构成我们通常说说的TCP/IP协议栈。但是为了更好的理解,后面文章也是按照五层协议来写的。

    物理层


    这边先给一个建议,大家在学习计算机网络的时候不应该把每个网络协议单独拿出来学习,应该明白它的产生原因以及在整个计算机网络的作用。

    数字信号与模拟信号

    它的作用是:屏蔽不同的传输媒体和通信手段的差异。我们都知道,自然界的信号无非就是两种,一种是数字信号,另一种就是模拟信号。那么是什么模拟信号?什么又是数字信号呢?

    说白了,所谓的模拟信号就是连续变化的物理量,模拟信号其特点是幅度连续(连续的含义是在某一取值范围内可以取无限多个数值)。模拟信号,其信号波形在时间上也是连续的,因此它又是连续信号。我们对连续信号进行抽样,就会得到抽样信号,但抽象信号就是离散的(说着说着就说到了信号系统,看来补考对我的影响还是有的)。但数字信号是不同于模拟信号的,他在时间域上是离散的,它有两种不同状态的物理量,分别用“0”,“1”来表示。这就好像电灯开关一样,也有两种不同的状态。

    当然,数字信号与模拟信号是可以相互转换的,模拟信号通常使用PCM(脉冲编码调制)方法量化并转换为数字信号,PCM方法是使不同范围的模拟信号对应不同的二进制值。通常,数字信号通过载波相移得到模拟信号。

    物理层的传输媒介

    我们大家都知道,数据在物理层传输的媒介是不一样的,工作在物理层的是「集线器」。不过,大致可以为一下两类:

    • 「引导型传输媒介」:引导型传输媒体中又有不同的类别,比如同轴电缆、光缆、双绞线,其中双绞线根据是否屏蔽又可以继续细分。

    • 「非引导型传输媒介」:非引导型传输媒介指的是无线电波在空间中的传播,利用不同的频段可以传输不同的信号。

    信道

    说起信道,前面的基础篇提到过信道的利用率,但至于信道更详细的介绍,就没有提到,现在就来仔细看看。按照传输媒介可以分为三类:

    • 「有线信道」:有线信道以导线为传输媒质,信号沿导线进行传输,信号的能量集中在导线附近,因此传输效率高,但是部署不够灵活。这一类信道使用的传输媒质包括用电线传输电信号的架空明线、电话线、双绞线、对称电缆和同轴电缆等等,还有传输经过调制的光脉冲信号的光导纤维。

    • 「无线信道」:无线信道主要有以辐射无线电波为传输方式的无线电信道和在水下传播声波的水声信道等。无线电信号由发射机的天线辐射到整个自由空间上进行传播。不同频段的无线电波有不同的传播方式。

    • 「存储信道」:在某种意义上,磁带、光盘、磁盘等数据存储媒质也可以被看作是一种通信信道。将数据写入存储媒质的过程即等效于发射机将信号传输到信道的过程,将数据从存储媒质读出的过程即等效于接收机从信道接收信号的过程。

    信道是传输信息的信道,信道容量描述了信道无差错地传输信息的最大能力,可以用来衡量信道的好坏。

    关于信道,还有一个重要的参数,那就是信噪比,信噪比越大,信道的容量也越大,这里的话给出著名的香农公式:

    img

    其中,C为信道容量,B为带宽,S/N为信噪比。

    信道复用

    我们知道,当没有数据进行传输的时候,信道是十分空闲的。但是在网络数据请求量大的时候,比如说最近的618,信息的传播速度就会受阻。那什么是信道的复用,复用就是重复使用的意思。信道的复用可以分为以下几个方面:

    • 「时分复用」:所谓的时分复用,就是把做整个信道分为不同的时间。当采用时分复用时,所有用户在不同的时间占用同样的频带宽度(分时不分频)。时分复用可能会造成线路资源的浪费

    • 「频分复用」:频分复用就是把信号分成不同的频率,当采用频分复用技术时,所有用户在同样的时间占用不同的带宽资源。当采用频分复用技术时,所有用户在同样的时间占用不同的带宽资源。

    • 「统计时分复用」:所谓的统计时分复用系统,我们也可以称为异步的时分复用系统。它有一个类似缓冲的机制,当数据到达一定量的时候,才会转发,这大大提高了信道的利用率。

    img

    数据链路层


    以太网帧

    img

    数据链路层接收来自网络层的IP数据报,通过一定的封装,让IP数据报能在数据链路层上传输。像这样,装好了的IP数据报,我们称之为以太网帧,也叫MAC帧。MAC帧由以下几个重要的部分组成:

    • 「目的MAC地址」:MAC帧的目的地址占据6个字节,它标志了目标主机的地址。

    • 「源MAC地址」:和目的地址一样,源地址也占据6个字节,它标志的源主机的地址。

    • 「类型」:类型占据2个字节,它记录上层使用的协议0X0800表示IP协议。

    • 「数据部分」:数据部分自然是来自上层的IP数据报。

    • 「FCS」:FCS占据4个字节,它是用来进行差错检测的,如果一个MAC帧发生了错误,则不能发送到目的主机上。

    差错检测

    为什么要进行差错检测?

    现实的通信链路都不会是理想的。这就是说,比特在传输的过程中可能会产生差错:1可能会变成0,0可能会变成1,这就叫做比特差错。在一段是时间内,传输错误的比特占所传输比特总数的比率成为误码率BER(Bit Error Rate)。误码率与信噪比有很大的关系,在实际通信中不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

    MAC帧在传播的过程中会产生差错,差错的产生是不可避免的。前面在以太网帧部分我们提到过差错检测序列FCS,根据FCS我们就可以知道这个MAC帧在传输的过程中是否出现了错误或者丢失。

    后面讲到传输层的时候我们也会提到差错检测,那么这两者到底有啥区别了?总结起来,可以用一句话概括:

    • 数据链路层的差错检测的目的是做到"无比特差错"。

    • 传输层的差错检测的目的是做到"无传输差错"。即弥补帧丢失、帧重复、帧失序。

    差错检测的方法主要有两种:奇偶校验法(PCC)和循环冗余校验CRC,PCC非常简单,不是这篇文章的重点,下面主要讲一下CRC循环冗余校验。

    循环冗余校验是一种根据传输或保存的数据而产生固定位数校验码的方法,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者储存之前计算出来并且附加到数据后面,然后接收端进行检验确定数据是否发生变化。

    通过CRC,我们可以计算出FCS冗余校验码,FCS位于MAC帧的尾部。通过FCS,我们就可以知道这个MAC帧是否发送了错误。

    适配器

    说到适配器,其实完全可联想一下生活中的适配器。比如我们给手机充电的时候需要有电源适配器,电源适配器无非就是转换的作用,或者作为一个载体,实现能量的转移。实际上,电脑里的适配器也是一样。结合下面这张图来理解:

    img

    我们都知道,数据在外部媒介中的传输方式是串行传输,然而计算机处理内部指令的时候,用的是并行的方式。怎样把串行传输的数据转换成并行传输呢?这就需要适配器了。适配器就像是起到了桥梁的作用,通过它,就可以轻松实现数据传输方式的转换。

    CAM表

    我们都知道交换机,交换机是一种多端口的网桥,在数据链路层使用MAC地址转发数据。在交换机类不实际存储以一张表,叫做CAM表。这张表记录了主机的MAC地址以及对应的接口,看看下面的这张图:

    img

    有三台主机A,B,C和交换机连接在一起,最开始,CAM里没有存储任何信息。

    突然有一天,主机A(源MAC)想要给主机B(目的MAC)发送消息。这个时候,交换机就会检查自己的CAM表里是否存储了主机A的信息,交换机一看没有A的信息,就把A的信息写进自己的CAM表里。现在,交换机的CAM表变成了这样:

    img

    这个时候,交换机的CAM表里已经存储了主机A的信息,但是主机A却想要给主机B发送信息。这可怎么办呢?「首先」,交换机会检查自己的CAM表里是否存在B的信息,「如果存在」,就直接把信息转发给B。「如果不存在」,那又怎么办呢?犹豫了一下,交换机又有了一个想法,它把主机A发给主机B的消息以广播的形式发给了所有连在它身上的主机。主机C也收到了这条消息,但是主机C检查了一下目的地址,不是发给自己的,就果断丢弃了这条消息。主机B收到了这条消息后,同样也检查了收件人(目的地址),发现是给自己的消息,于是就收下了这条消息。之后,交换机就更新了自己的CAM表,上面增加了一条信息:

    img

    就这样,CAM表里存储了主机A,和主机B的信息。下一次,主机A想要给主机B发送信息的时候,交换机就不需要广播了。

    CSMA/CD协议

    到目前为止CSMA/CD的使用已经相当少了,它的使用在下面两个地方:

    • 使用的是有线网络

    • 应用在10M/100M的半双工有线网络中

    「使用CSMA/CD协议的的网络有以下三个特点:」

    • 「该网络是总线结构」,所有的计算机接在同一总线上,同一时间内,只允许一台计算机发送(或接收)消息,也就是采用半双工通信。

    • 「载波监听」:在发送前、发送中都要不停地对信道进行监听,只有在信道是空闲的时候才能发送消息。

    • 「碰撞检测」:主机会在发送消息前,发信息的过程中不断对进行信道检测,如果有两台主机同时发送消息,则消息传输立即停止。随机等待一段时间再进行发送消息,这就是退避算法。

    「补充一下退避算法的特点:」

    • 「非坚持的CSMA」:线路忙,则等待一段时间,再监听;不忙时,立即发送;减少冲突,信道利用率降低

    • 「1坚持的CSMA」:线路忙,继续侦听;不忙时,立即发送;信道利用率提高,冲突增大。

    • 「P坚持的CSMA」:线路忙,继续侦听;不忙时,根据p概率进行发送,另外的1-p概率为继续侦听(p是一个指定概率值)。

    网络层


    IP协议

    IP的概述

    IP协议对应的是IP地址,那么什么是IP地址呢?

    维基百科上是这样解释的:

    ?

    IP地址(英语:IP Address, 全称:Internet Protocol Address),又译为网际协议地址、互联网协议地址。当设备连接网络,设备将被分配一个IP地址,用作标识。通过IP地址,设备间可以互相通讯,如果没有IP地址,我们将无法知道哪个设备是发送方,无法知道哪个是接收方。[2] IP地址有两个主要功能:标识设备或网络 和 寻址(英语:location addressing)。

    ?

    上面的一堆文字其实无非解释了两个点,总结如下:

    • IP地址是用来标记主机的地址,没有IP地址就无法识别主机。(标志主机)

    • 因为唯一标记主机,所以可以用来在网络中查找主机。(寻址)

    现在想一下前面我们说到的MAC地址,MAC地址是一台主机的身份象征。一台主机从出厂以后,MAC地址就唯一确定了,无法更改(当然也可以通过软件修改,但是必须得确保同一局域网下不能有两台MAC地址相同的主机)。

    「那么,为什么有了MAC地址,还需要IP地址?或者说是有了IP地址,还需要MAC地址?」

    这其实也算是一个经典的问题了,网上也有不少答案,这里推荐两篇文章:

    • 有了 IP 地址,为什么还要用 MAC 地址?

    • 为什么有MAC地址,还要有IP地址??

    看完上面两篇文章,我总结如下:

    • 「历史原因:」 以太网诞生于因特网之前,在IP地址之前MAC地址就已经在使用了。两者结合使用,是为了不影响已存在的协议

    • 「分层实现:」 对网路协议进行分层以后,数据链路层的实现不需要考虑数据之间的转发,网络层的实现不需要考数据链路层的影响。

    • 「分工合作:」 IP地址是会随着主机接入网络的不同而发生改变的,而MAC一般不会改变。这样的话,我们可以使用IP地址进行寻址,当数据报和目的主机处于同一网络时,就使用MAC地址进行数据交付。

    IP数据报

    IP数据的样子是这样的:

    img

    有几个重要的东西必须得进行说明一下:

    • 「版本号」:占用4位二进制数,表示该IP数据报使用的IP协议版本。目前Internet中使用的主要是TCP/IP协议族中版本号为4的IP协议。

    • 「头长度」:占用4位二进制位,此域指出整个报头的长度(包括选项),该长度是以32位二进制数为一个计数单位的,接收端通过此域可以计算出报头在何处结束及从何处开始读数据。普通IP数据报(没有任何选项)该字段的值是5(即20个字节的长度)。

    • 「服务类型」:服务类型(TOS、type of service):占用8位二进制位,用于规定本数据报的处理方式。

    • 「生存时间(TTL,Time To Live)」:占用8位二进制位,它指定了数据报可以在网络中传输的最长时间。实际应用中把生存时间字段设置成了数据报可以经过的最大路由器数。TTL的初始值由源主机设置(通常为32、64、128或256),一旦经过一个处理它的路由器,它的值就减1。当该字段为0时,数据报就丢弃,并发送ICMP报文通知源主机,因此可以防止进入一个循环回路时,数据报无休止地传输下去。

    • 「上层协议标识」:占用8位二进制位,IP协议可以承载各种上层协议,目标端根据协议标识就可以把收到的IP数据报送到TCP或UDP等处理此报文的上层协议了。

    关于IP数据报相对详细的文章可以看看这篇文章:IP数据报格式详解

    子网掩码与IP地址

    前面说到IP地址的组成的时候,说到过网络号。常见的IP地址无非就是由网络地址和主机地址组成。那么什么是网络号?网络号就是计算机当前所在网络的名字,在这个网络下,又由许多的主机构成。那又该怎么计算网络号了?这时候,子网掩码派上了用场。

    通常,计算机的IP地址和子网掩码是成对出现的,通过子网掩码和IP地址进行对照就可以知道主机号和网络号。为了方便表示,子网掩码前面通常是连续的1,后面部分是连续的0,不能出现0和1交替的情况。

    请看下面的例子。

    img

    现在已经知道了主机A的IP地址和子网掩码,把它们转化成二进制的形式。通过二进制对应子网掩码的1的部分对应IP地址的网络号,子网掩码为0的部分对应主机号。下面的这张图画的很清楚:

    img

    ICMP协议

    我们知道,IP协议是不可靠的传输协议,网络中进行可靠传输的是TCP协议,这个后面在讲传输层的时候会说到。那么,如果在消息没有送达的情况下,网络层是怎么解决的了?这个时候,就需要用到ICMP协议。什么是ICMP协议了?ICMP是网络控制报文协议(Internet Control Message Protocol, ICMP)。

    它的作用:更加有效地转发IP数据报作为IP数据报的数据部分,可以分为ICMP差错报文,和ICMP查询报文。差错报文是用来简单的报告错误的, 至于对于错误怎么处理是高层协议的职责。同时, 差错报文总是发送给最初的数据源(这是因为在ICMP数据报中唯一可以使用的就是源IP和目的IP),查询报文总是成对出现。

    ARP协议

    前面说到IP地址用来寻址,当目的地址和数据报处于同一网络时,MAC地址用来交付数据报。现在有一个问题,主机A要给主机B发送消息,消息经过一系列地转发,终于找到了主机B的IP地址。但是,我们都知道,数据在链路层的传输是需要MAC地址的,仅仅知道B的IP地址是无法进行通信的。请看下面这张图:

    img

    这个时候,ARP协议就派上用场了。ARP全称是地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行,它是IPv4中网络层必不可少的协议。

    「如同交换机工作在数据链路层一样,路由器是工作在网络层的。交换机有CAM表,路由器也有路由表。」

    现在路由器要给主机B发送一条消息,必须得知道主机B的MAC地址才能进行通信。这个时候路由器会发送一个ARP请求,该请求是以广播的形式发送的,每一台连接到该路由器的主机都收到得到这条消息。但是只有主机B检查到自己的IP地址符合要求。于是主机B发送给路由器一条ARP响应,把自己的MAC的地址告诉了路由器。就像下面图示的那样:

    img

    每次路由器发送一个ARP请求的时候,就会增加一条数据,这一条数据记录了IP地址对应的MAC地址,这样路由器下次再给该主机发送消息的时候就不用广播了。当然如同交换机的CAM表中的数据有生存了时间一样,路由表中的数据也有生存时间。试想一下,如果数据一直存在,那么路由器岂不是需要花大量的存储空间来缓存已经失效的数据。

    内部网关协议

    互联网的路由选择协议主要有两种,分别是RIP和OSPF。下面具体介绍这两种协议。

    「先介绍RIP协议」

    • 路由信息协议(RIP) 是内部网关协议IGP中最先得到广泛使用的协议。RIP是一种分布式的基于距离矢量的路由选择协议,是因特网的标准协议,其最大优点就是实现简单,开销较小。

    • 基本算法:矢量距离算法(简称V-D算法)的思想是:网关周期性地向外广播路径刷新报文,主要内容是由若干(V,D)序偶组成的序偶表;(V,D)序偶中的V代表“向量”,标识网关可到达的信宿(网关或主机),D代表距离,指出该网关去往信宿V的距离;距离D按驿站的个数计。其他网关收到某网关的(V,D)报文后,据此按照最短路径原则对各自的路由表进行刷新。

    • 它只适用于小型的网络(15跳就达到极限),如果网络过于庞大,当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。

    「接下来说说什么是OSPF:」

    • 基本定义:OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。

    • 基本算法:迪克斯加算法。主要是通过向邻居发送HELLO包来建立邻居关系,选取DR等。

    参考文章:计算机网络原理之RIP以及OSPF对比

    NAT协议

    NAT技术其非常简单,那么NAT它的作用是什么呢?

    NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。

    这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做「NAT路由器」「它至少有一个有效的外部全球IP地址」。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,「将有助于减缓可用的IP地址空间的枯竭」

    「简单来说,NAT技术就是实现局域网与互联网通信的一项协议。」 NAT又可以分为三种不同的类型:

    • 「静态NAT(Static NAT):」 静态NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。当一个内部主机必须被作为一个固定的外部地址访问时,通过静态NAT实现。

    • 「动态地址NAT(Pooled NAT):」 动态NAT则是在外部网络中定 义了一系列的合法地址(地址池),采用动态分配的方法映射到内部网络。动态NAT转换的工作过程是这样的,当有一个内部主机需要访问外网时,从公用IP地址池中取出一个可用的地址分配给该主机使用。当通信完成后,所获取的公用IP地址也被释放回地址池中。外部公用IP在被分配给一个内部主机通信使用时,该地址不能不能再次被分配给其他内部主机使用。

    • 「网络地址端口转换NAPT(Port-Level NAT):」 NAPT是把内部地址映射到外部网络的一个IP地址的不同端口上。NAPT(Network Address Port Translation),即网络端口地址转换,可将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。

    参考文章【计算机网络】NAT:网络地址转换

    IPV6协议

    我们前面说的IP地址其实是IPV4,那么,为什么已经有IPIV4了,还要来一个IPV4呢?原来是这样的,早在上个世纪,人们就预料到IPV4地址枯竭的一天,为了解决这个问题,开始了IPV6的研发。

    「IPv6 (IP version 6)是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。」 IPv4的地址长度为4个8位字节,即32比特。而IPv6的地址长度则是原来的4倍,即128比特,一般写成8个16位字节。可以看到,IPV6的地址是取之不尽,用之不竭的,那么现在为什么不把IPV4全部换成IPV6呢?

    从IPV4切换到IPV6极其耗时,需要将网络中所有主机和路由器的IP地址进行重新设置。当互联网广泛普及后,替换所有IP地址会是更为艰巨的任务。

    在现存的网络中,既有IPV4又有IPV6,那么它们之间是怎么通信的呢?有两种技术:「双协议栈」「隧道技术」,下面分别进行介绍:

    • 「双协议栈」:改变IP地址的首部,在首部进行转换的过程中,IPV6的首部的部分信息会丢失,而且这种转换的损失不可避免。

    • 「隧道技术」:何谓隧道技术了?其实完全可以通过字面的意思理解。下面还是以画图的方式帮助大家理解。隧道技术说白了就是数据在传输的时候进行了另一种的封装与解封,如图数据由IPV6网络进入到IPV4的网络,需要把IPV6的数据包封装在IPV4的数据包里。