计算机网络

Posted lcword

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络相关的知识,希望对你有一定的参考价值。

  本部分内容从计算机网络体系结构、物理层、数据链路层、网络层、传输层和应用层分别来讲述。

 

 

 

第一章: 计算机网络体系结构

  本章内容为基本概念,这是计算机网络的基础。 重点掌握网络的分层结构,尤其是ISO/OSI参考模型各层的功能和协议、接口、服务的概念。

1.  计算机网络的概念

计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。

  

2. 计算机网络的组成

  • 从物理构成上看,一个完整的计算机网络由软件、硬件和协议三大部分组成。
  • 从工作方式上看,计算机网络可以分为边缘部分和核心部分。 边缘部分是指用户直接使用的、连接在因特网上的主机, 而核心部分是指大量的网络和连接这些网络的路由器,它为边缘部分提供了连通性和交换服务。
  • 从功能上看,计算机网络由通信子网和资源子网组成。

3. 计算机网络的功能

  • 数据通信。 比如文件传输、电子邮件等应用。
  • 资源共享。指用户能够部分或全部的使用计算机网络资源。
  • 分布式处理。当计算机网络中的某个计算机系统负荷过重时,就可以将其处理的任务传送到网络的其他计算机系统中,利用空闲计算机资源以提高整个系统的运行效率。

4. 计算机网络的分类

  • 按照分布范围分类
    • 广域网(WAN - Wide Area Network) 作用范围往往是在数十千米以上的区域。其任务是提供长距离的通信。连接广域网的各节点的链路一般是高速链路,具有较大的通信容量。
    • 城域网(MAN) 分布在一个城区内,使用的是广域网的技术,可以看成小的广域网
    • 局域网(LAN) 局域网一般指几十米到几千米的距离,覆盖的地理范围较小。局域网在计算机数量配置上没有太多的限制,少的可以只有两台,多的可以几百台。传统上,广域网使用交换技术,局域网使用广播技术。
    • 个人局域网(PAN) 是将消费电子设备使用无线技术连接起来的网络,也常常称为无线个人区域网(WPAN),其作用范围通常在10米左右。
  • 按传输技术分类
    • 广播式网络 -- 当一台计算机利用共享通信信道发送报文分组时,所有其他的计算机都会“收听”到这个分组。 接收到该分组的计算机将通过检查目的地址来决定是否接受该分组,局域网使用这种技术。
    • 点对点网络 -- 每条物理线路连接一对计算机。  如果两台计算机之间没有直接连接的线路,那么他们之间的分组传输就要通过中间节点的接受、存储和转发,直至目的节点。是否采用分组存储转发与路由选择机制是点对点网络和广播式网络的重要区别,广域网都属于点对点网络。
  • 按拓扑结构分类
    • 按照网络的拓扑结构,主要分为星形、总线型、环形和网络形网络。 其中,前三者多用于局域网,网络形网络多用于广域网。

 

5. 计算机网络的标准化工作及相关组织

  制定Internet的正式标准都需要经过下面的四个阶段

(1) 因特网草案 - 有效期为6个月。 这个阶段还不是RFC文档(Request For Comments),Internet的所有标准都以RFC的形式在Internet上发布。

(2)建议标准 - 从这个时候开始成为了RFC文档。

(3)草案标准 

(4)因特网标准

   在国际上,由众多的标准化组织负责制定、实施相关的标准,主要的有:

  • 国际标准化组织(ISO) 制定的主要的网络标准有OSI参考模型、HDLC等。
  • 国际电信联盟(ITU) 其制定了大量有关通信工程的标准。
  • 国际电气电子工程师协会(IEEE) 世界上最大的专业技术团体,由计算机和工程学专业人士组成。IEEE在通信领域最著名的研究成果是802标准。

 

6. 计算机网络的性能指标

  • 带宽 - 原来是指某个信号具有的频带宽度,带宽的单位是赫兹(Hz)。 现在带宽是数字信道所能传送的“最高数据率”的同义语,单位是“比特每秒”(bit/s)。
  • 时延 - 是指一个报文或分组从一个网络(或一条链路)的一端传送到另一端所花费的时间。时延由四个部分组成:
    • 发送时延:节点在发送数据块从节点到传输媒体所用的时间。
    • 传播时延:电磁波在信道中需要传播一定的距离而花费的时间。
    • 处理时延:数据在交换节点为存储转发而进行的一些必要的处理所花费的时间。
    • 排队时延:分组在进入路由器后要在输入队列中排队进行等待处理。
  • 时延带宽积 - 表示从发送端发送数据开始,到发送端收到来自接收端确认(接收端收到数据后立即发送确认),总共经历的时延。
  • 吞吐量 - 表示在单位时间内通过某个网络的数据量。
  • 速率 - 网络技术中的速率是指连接在计算机网络上的主机在数字信道上传送数据的速率,也称为数据传输速率或比特率。

 

7. 计算机网络分层结构

  两个系统中实体间的通信是一个很复杂的过程,所以为了降低协议设计和调试过程中的复杂性,也为了便于对网络进行研究、实现和维护,促进标准化工作,通常对计算机网络的体系结构以分层的方式进行建模。

  我们把计算机网络中的各层及其协议的集合,称为网络的体系结构。

  体系结构是抽象的,是实现是具体的。

  分层的基本原则:

  • 每一层实现一个相对独立的功能,降低大系统的处理难度。(正如js中的模块化)
  • 各层之间界面自然清新,易于理解,相互之间的交流尽可能少。(正如js中的高内聚、低耦合)
  • 各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术来实现。
  • 保持下层对上层的独立性,单项使用下层提供的服务。
  • 整个分层结构应能够促进标准化工作。

 

8. 计算机网络分层的好处与注意事项

  由于分层之后各层之间相互独立,灵活性好,因而分层的体系结构易于更新(替换单个模块),易于调试,易于交流,易于抽象,易于标准化。

  但是层次太多就会使得某些功能重复出现,产生了额外的开销,整体的运行效率降低。

  但是层次太少,就会使得每一层的协议太复杂。 

  因此,在分层时应该考虑层次的清晰度和运行效率的折中和层次数量的折中。

 

9. 在计算机网络的分层结构中,第n层的活动元素通常称为n层实体。具体的说,实体是指任何可发送或者可接收信息的硬件或软件进程。 通常是一个特定的软件模块。 不同机器上同一层称为对等层。 同一层的实体称为对等实体。

  每一层还有自己传送的数据单位:

  • 服务数据单元(SDU)为完成用户所要求的功能而应传送的数据。 第n层的数据单元记为n-SDU。
  • 协议控制单元(PCI)控制协议操作的信息
  • 协议数据单元(PDU)对等层次之间传送的数据单位称为该层的PDV。第n层的次而已数据单元记为n-PDU。 在实际的网络中,每层的协议数据单元都有一个通俗的名称,如传输层的PDU叫报文,网络层的PDU叫分组,数据链路层的PDU叫帧,物理层的PDU叫做比特。

  上述三者的关系是:n-SDU + n-PCI = n-PCU = (n-1)SDU

  即每一层把自己从上层接收到的数据(服务数据单元),加上控制信息,变成协议控制单元,因为每一层中都有相应的协议啊,你得按照协议办事,所以你得变成协议控制单元才能在这一层中存活。然后再把自己作为服务数据单元交给下一层,接收方接受时做相反的处理。

 

10. 计算机网络协议、接口和服务的概念

  (1)协议

  在网络中要做到有条不紊的交换数据,就必须要遵循一些实现约定好的原则。 这些规则明确规定了所交换的数据的格式以及有关的同步问题这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议(Network Protocal), 他是控制两个(或多个)对等实体进行通讯的规则的集合。 网络协议也简称为协议。

  协议是由语法、语义和同步三部分组成的。其中语法规定了传输数据的格式;语义规定了所要完成的功能,即需要发出何种控制信息、完成何种动作以及做出何种应答; 同步规定了执行各种操作的条件、时序关系等等。

  (2)接口

  接口是同一节点内相邻两层信息的连接点,是一个系统内部得规定。每一层只能为临近的层次定义接口,不能跨层定义接口。

  (3)服务

  服务是下层为紧相邻的上层提供的功能调用。 

 

11. 计算机提供的服务可以按以下三种方式分类:

(1)面向连接服务和无连接服务

  面向连接服务具有连接建立、数据传输和连接释放这三个阶段。即通信双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信可以正常进行。传输完成之后释放连接和所占用的资源。如电话。

  无连接服务是指两个实体之间的通信不需要建立连接,需要发送数据时可以直接发送,是一种不可靠的服务。 这种服务经常被描述为“尽最大努力交付”,如写信交邮局。

(2)有应答服务和无应答服务

  有应答服务是指接收方在收到数据后向发送发给出相应的应答,该应答有传输系统内部实现,而不是用户实现,所发送的应答可以是肯定应答也可以是否定应答,通常在接收方接受到错误时就发送否定应答。 如文件传输服务就是一种有应答服务。

(3)可靠服务和不可靠服务

  可靠服务是指网络具有纠错、检错、应答机制,能保证数据准确可靠的传送到目的地。

  不可靠服务是指网络只是尽可能正确、可靠地传送,但不能保证数据正确、可靠地传送到目的地,是一种尽力而为的服务。

 

12. 一般网络上的分层主要有三种方式:(1) ISO/OSI 即开放系统互联参考模型 (2)TCP/IP  由于应用广泛成了事实上的标准  (3)将两者综合,我们在研究时就是使用的这种方式

 

13. ISO/OSI 参考模型

  国际标准化组织ISO提出的OSI(开放系统互联参考模型),ISO和OSI刚好反过来,提出名字的时候应该也是故意考虑了吧。

  OSI有七层, 自下而上分别是物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。 (先绘画,再平铺,最后可以用了)

  下面的三层称为通信子网,他是为了联网而附加上去的通信设备,完成数据的传输功能;高三层统称为资源子网,它相当于计算机系统,完成数据的存储等功能。运输层承上启下。

(1) 物理层

  Physical Layer  主要定义了数据终端设备和数据通信设备的物理和逻辑连接方法。 物理层的功能是在物理媒体上透明地传输比特流。

  请注意:传输信息所利用的一些物理媒体,如双绞线、光缆、无线信道等,并不在物理层协议之内而在物理层协议的下面,所以有人把物理媒体当做第0层。

(2)数据链路层

  由于外界的噪声干扰, 传输的比特流可能会产生错误,而数据链路层(Data Link Layer)的主要功能就是检测并校正物理层传输介质上发送的传输错误。

  数据链路层的主要功能为:成帧、差错控制、流量控制和传输管理等四个方面。

(3)  网络层

  网络层会把传输层中产生的报文段或用户数据封装成分组(包)进行传送。 常用的协议是IP。 所以因特网的网络层又叫做网际层或IP层

(4)  传输层

  传输层也叫做运输层。 他的工作是端到端或进程到进程的功能层次,使用传输层的服务,高层用户就可以直接进行端到端的数据传输,而忽略通信子网的存在。 传输层的任务就是为高层用户提供可靠地、透明地、有效的数据传输服务,实现端到端(进程到进程)的数据传输管理、差错控制、流量控制和复用管理。

(5) 会话层

  会话层(session Layer)允许不同主机上各进程之间的会话。会话层利用的是传输层提供的端到端的服务,想表示层提供他的增值服务。  

  会话层负责主机间各进程的会话,包括建立、管理以及终止进程间的会话。 

(6)表示层

  表示层(Presentation Layer)主要用于处理在两个通信系统中交换信息的表示方式。 不同机器采用的编码和表示方法不同,使用的数据结构也不同。为了使不同表示方法的数据可以互相交换,表示层采用抽象的标准方法定义数据结构,并采用标准的解码方式。 

(7)应用层

  应用层(Application Layer)是OSI模型的最高层,是用户与网络的界面  。

  应用层的主要目的是为用户特定类型的应用集成提供访问OSI环境的手段。 应用层也是最为复杂的一层,因为用户的实际应用多种多样。 典型的协议有万维网应用的HTTP,电子邮件使用的SMTP,文件传送的FTP。

 

14. TCP/IP 模型

  此模型和OSI模型不同,它认为从低到高分为4层:网络接口层、网际层、传输层和应用层。TCP/IP由于应用广泛,称为了事实上的标准。

(1)网络接口层

  盖层表示与物理网络的接口。 他的责任是从主机或节点接受IP分组,并把它们发送到指定的物理网络上。

(2)网际层

  这是TCP/IP的关键部分,他和OSI网络层在功能上非常相似。网际层定义了标准的分组格式和协议,即IP。 当前采用的IP是第4版,即IPv4,下一个版本是IPv6。

(3)传输层

  传输层的功能和OSI中的传输层类似,其主要使用下面的两种协议

  • 传输控制协议(TCP) - 面向连接的,数据传输的单位是报文段,保证提供可靠地交付。
  • 用户数据报协议(UDP) - 无连接的,数据传输的单位是用户数据报,不保证提供可靠地交付,只能提供尽可能的交付。

(4) 应用层

  包括文件传输协议(FTP)、域名解析服务(DNS)和电子邮件协议(SMTP)

 

15. OSI与TCP/IP比较

  • 同:两者都采用了分层的体系结构,将庞大的问题划分为若干个比较容易处理、范围较小的问题,而且分层的功能大体上相似。
  • 不同:OSI参考模型的最大贡献就是定了:服务、接口、协议。 而TCP/IP在这三个概念上却没有明确的区分。
  • 不同:OSI模型产生在协议发明之前,没有偏向于任何特定的协议,通用型良好。但是设计者由于在协议方面没有太多的经验,所以不知道吧哪些功能放到哪一层会更好。而TCP/IP的产生是在协议出来了之后,所以不会出现协议和模型不匹配的情况,但是TCP/IP模型不适合任何其他非TCP/IP的协议栈。
  • 不同:OSI参考模型在网络层支持无连接的和面向连接的通信,但是在传输层只有面向连接的通信,而TCP/IP参考模型认为可靠性是端到端的问题,所以他在网际层只有一种无连接的通信模式,但在传输层中支持无连接的和面向连接的两种通信模式

 

 16. 由于无论是OSI模型还是TCP/IP模型都有一定的局限性,所以我们再讨论的时候是综合起来讨论的,即综合两者的优点,采用有五层协议的体系结构,即我们熟知的物理层、数据链路层、网络层、传输层和应用层。 

 

  物理层(数据)

数据链路层(数据包、帧)

网络层(IP包、分组)

传输层(报文段)

应用层(报文)

 

网关和路由的区别是什么?

  1. 网关相当于一个网络里的关卡,出入的流量都要经过它。路由器可以做,那么防火墙、三层交换机等也可以做。
  2. 大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway)[1]  就是一个网络连接到另一个网络的“关口”。也就是网络关卡
  3. 网关是一个IP地址。是一个网络连接到另一个网络的“关口”.路由器是一个物理设备。一般局域网的网关就是路由器的IP地址
  4. 通常我们说网关其实是一个逻辑概念,而路由器是一个具体的硬件
  5. 路由是设备,连接公网和子网。网关是这设备里边的大门供信息出入。。关系就跟机场和海关差不多如果把数据比喻成人的话。

  在cmd中可以使用 route print查看详细信息。

 

 

 

 

第二章: 物理层

1.  数据、信号和码元

 数据时传送信息的实体。

 信号是数据的电气的或电磁的表现,是数据传输过程中的存在形式。

 数据和信号都可以使用“模拟的”和“连续的”来修饰,如连续变化的数据(或信号)称为模拟数据(信号),而取之仅允许为几个优先的离散数值的数据(信号)称为数字数据(信号)。

 数据的传输方式有并行 -- 多个比特通过多条通信信道传输, 也有串行 -- 一个一个比特按照时间顺序传输。

 码元 -- 这是数字通信中数字信号的计量单位,1码元可以携带多个比特的信息量。

2. 信源、信道与信宿

 数据通信就是指数字计算机或其他数字终端之间的通信。 一个数据通信系统可以划分为信源、信道和信宿三个部分。

 信源: 产生和发出数据的源头。

 信宿: 接受数据的终点。

 信道:包括信号的传输介质及有关的设备,如双绞线、中继器等。

 

3. 基带信号和宽带信号

 基带信号是将数字信号1和0直接用两种不同的电压表示,然后送到数字信道(传送数字信号的信道)上去传输(基带传输)。

 宽带信号是将基带信号进行调制之后形成的频分复用模拟信号,然后传送到模拟信道上去传输(宽带传输)。

 

4. 从通信双方信息的交互方式来看,可以有三种基本的方式:

  • 单工通信 只有一个方向上的通信而没有反方向的交互,仅需要一条信道
  • 半双工通信  通信的双方都可以发送或接受信息,但任何一方不能同时发送和接受,需要两条信道。
  • 全双工通信  通信的双方可以同时发送或接受信息,需要两条信道。

 

5. 速率、波特和带宽

  • 速率  也称为数据率,是指数据的传输速率,表示单位时间内传输的数据量,可以用码元传输速率信息传输速率表示。
    • 码元传输速率 - 即单位时间内数字通信系统所传输的码元个数(脉冲个数),单位是波特(Baud)。 一波特即单位时间传输1码元。这里的码元可以二进制,也可是多进制。
    • 信息传输速率 - 即单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒(bit/s)。

  

6. 奈奎斯特定理和香农定理

  奈奎斯特定理指出在理想低通(没有噪声、带宽有限)的信道中,极限码元传输率为2W Baud。 其中,W是理想低通信道的带宽,单位为hz。 它指出码元传输速率是有上限的,但是没有指出对信息传输速率的限制。

  香农定理给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率,即  

        信道的极限数据传输速率 = Wlog2(1+S/N)  (bit/s)

  根据香农定理,可以得出以下的结论:

  • 信道的带宽或信道的信噪比越大,则信息的极限传输速率越高。
  • 只要信息的传输速率低于信道的极限传输速率,就可以找到某种办法来实现无差错的传输。

 

7. 编码和调制

  数据无论是数字的还是模拟的,为了传输的目的都必须转变成信号,  

  把数据变换成为模拟信号的过程是调制,

  把数据变换成数字信号的过程就是编码。

 

8.  根据调制和编码的概念我们就可以得知有下面四种方法:

(1) 数字数据编码为数字信号

    即将0和1用某种其他的方式表示,就是编码。原则上将1和0区分开即可。

    方法有以下的三种:非归零码、曼彻斯特编码、查分曼彻斯特编码、4B/5B编码

  • 非归零码 - 用两个电压表示二进制数字,低压为0,高压为1 .....

 (2) 数字数据调制为模拟信号 

、  数字数据调制技术即在发送端将数字信号调制为模拟信号,在接收端将模拟信号解调为数字信号, 这分别对应着调制解调器的调制和解调过程。 

 (3) 模拟数据编码为数字信号

  这主要包括了三个步骤,即抽样、量化和编码。

(4) 模拟数据调制成模拟辛哈

 

9.  传输介质之双绞线

  双绞线是最古老、又最常用的传输介质,它由两根采用一定规则并排绞合、相互绝缘的铜线组成。为了提高抗电磁干扰能力,可以在双绞线的外面再加上一个有金属丝编织成的屏蔽层,这就是屏蔽双绞线, 无屏蔽层的双绞线称为非屏蔽双绞线。

  特点:价格便宜、在局域网和传统电话网中普遍使用、其带宽取决于铜线的粗细和传输的距离,模拟传输和数字传输都可以使用双绞线, 其通信一般为几公里到数十公里。 距离太远时,对于模拟传输,可以使用放大器来放大衰减的信号; 对于数字传输,要用中继器将失真的信号整形。

  

10 传输介质之同轴电缆

  同轴电缆是由导体铜质芯线、绝缘层、屏蔽层和塑料外层构成。 由于外导体屏蔽层的作用,同轴电缆具有良好的抗干扰特性,其传输距离远,但价格较双绞线贵。

 

11. 传输介质之光纤

  光纤通信就是利用光导纤维(简称光纤)传递光脉冲来进行通信。 有光脉冲则表示1,无光脉冲就表示0,。

  光纤主要是由纤芯和包层组成。

  若是多条不同角度入射的光线在一条光纤中传输,称为多模光纤,其光源为发光二极管,会失真,所以只适合近距离传输。

  若是一条光线在一条光纤中传输,称为单模光纤,其制造成本较高,光源为定向性很好的激光二极管,切单模光纤的衰耗较小,适合远距离传输。

  

知识补充:

1、在电磁波频谱中,按波长长到短,排列了若干种电磁波类型,波长最长的是无线电波,再短一些的是红外线,再后面是可见光,再是紫外线,X射线和伽玛射线。从这个序列中,可见无线电波是电磁波的一种类型,而微波不是。

2、微波实际上是无线电波的一种,属于波长比较短的无线电波,无线电波按波长可以分为长波,中波,短波,如果波长比短波更短,就成了微波了

3、不同类型的无线电波,传输方式和作用是不一样的。

(1)比如长波,主要采用地波传输,可以实施远距离对潜通信(注意:对潜);传输距离最远可以达到1万公里以上。

(2)中波、短波一般采用天波传输(电离层反射),可以用来传输广播信号;中波和短波的传输距离要比长波短,一般有几百到几千公里。

(3)微波一般采用视距传输(直线),可以用来传输电视信号。电视信号所属微波传输距离比较短,一般在几十到一两百公里,所以在没有卫星电视的年代,央视的新闻联播就需要通过微波中继站,一站站接力传输到全国各地。现在在很多高山上可以看到一些电视转播塔,就是这个原因。

微波波长很短,波长极短的微波还可以用于雷达测距和卫星通信等等,雷达探测距离长短跟波长、输出功率有关系,像输出功率极大的地面大型雷达站甚至可以探测远达4000-5000公里外的目标。

总结: 无线电波的波长最长,频率最短,其传播方式是全方向的。
    微波、红外线、激光的波长很短,频率很高,其传播方式为视距传输。
    无论是无线电波、微波、红外线.... 他们都是电磁波。

电磁波谱

 

12. 传输介质之无线电波

  无线电波很容易产生,具有较强的穿透能力,可以传输很长的距离,因此被广泛应用于通信领域,如无线手机通信, 还有计算机网络中的无线局域网(WLAN)。

  因为无线电波是全方向的,所以他讲信号发往各个方向,接受设备就不需要正对着它,所以大大简化了通信连接,这也是无线电波的很大的一个优点。

  

13. 传输介质之微波、红外线和激光

  目前高带宽的无线通信主要使用三种技术:微波、红外线和激光。

  他们都需要在发送方和接受方之间有一条视线通路,有很强的方向性,都是沿着直线传播,有时统称为视线介质。  

  卫星通信是利用地球同步卫星作为中继来转发微波信号,可以克服地面微波通信距离受限的缺点。三颗相隔120°的同步卫星几乎能覆盖整个地球表面,因此可以实现全球通信。

  卫星通信的优点是通信容量大、距离远、覆盖广,缺点是端到端的传播延迟时间长。

 

14. 传输媒体是物理层码? 传输媒体和物理层的区别是什么?

  传输媒体不是物理层。 有时候,我们成传输媒体是第0层。

  在传输媒体中传输的是信号, 但是传输媒体并不知道传输的信号是什么。 也就说传输媒体不知道传输的信号是0还是1。

  但是物理层由于规定了电气特性,因此可以识别所传送的比特流。

 

衡量网络上数据传输速率的单位是bps,其含义是: 每秒传送多少个二进制位。 其中bps即 bits per second的意思。 即每秒多少位。

 

第三章:数据链路层

 1. 数据链路层在物理层提供服务的基础上向上给网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的道路。 

 2. 数据链路层的功能有:

  • 为网络层提供服务,包括无确认的无连接服务,有确认的无连接服务,有确认的面向连接服务。
  • 链路管理
  • 帧定界、帧同步与透明传输
  • 流量控制
  • 差错控制 

  着重介绍 帧定界、帧同步和透明传输。

  两个工作站之间传输信息是,必须将网络层的分组封装成帧,以帧的格式进行传输。 将一段数据的前后分别添加首部和尾部就构成了帧, 首部和尾部中含有很多控制信息,他们的一个作用就是确定帧的界限,即帧定界。

  帧同步指的是接收方能从二进制的比特流中区分出帧的起始和结束。 如在HDLC中通信规程中,用标识符F(01111110)来标识帧的开始和结束。如果在数据中恰好出现了与帧定界符相同的比特组合,就要采取有效的解决这个问题的措施即透明传输。

  

3. 组帧

   数据链路层之所以要把比特组合成帧为单位进行传输,是为了在出错时只需要重发出错的帧,而不必重发所有的数据,从而提高了效率。 为了能使得接收方正确的接受并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组组装成帧(称为组帧)。组帧主要是解决帧定界、帧同步、透明传输等问题。下面的四种方法可以实现组帧:

3.1  字符计数法

  字符计数法首先用一个特殊的字符来表示帧的开始,然后用一个记数字段表明帧内的字符数,然后就知道了后面应该紧跟的字符数,从而也就可以确定结束的位置。

  问题:一旦计数字段出错,即失去了帧边界划分的依据,接收方就无法判断开始于结束,于是失去了同步。

3.2 字符填充的首尾定界法

  该方法使用一些特定的字符来定界一帧的开始(DLE STX)和结束(DLE ETX)。为了使得信息中出现的特殊字符不被误判为帧的首尾定界符,可以在特殊字符钱添加一个转义字符(DLE),这样就实现了数据的透明传输。

  如网络层发出的数据是A DLE B ,经数据链路层填充之后就成了 A DLE DLE B,接收方传送给网络层的数据是 A DLE B,所以最后就实现了透明传输。

3.3 比特填充的首尾标志法

  即首尾标志法使用一组特定的比特模式(01111110)来标志一帧的开始和结束,其中有6个1,为了防止数据和比特模式相同,在数据链路层中,一旦遇到了连续的5个1,我们就在第5个1的后面添加一个0,这样就不会和比特模式一样了,然后接收方同样地在接收时,如果遇到了连续的5个1,并且连续的5个1后面是个0,那么就删除这个0,这样就可以透明传输了。此法可以通过硬件来实现,性能优于字符填充方法。

3.4 违规编码法

  

4. 差错控制

  传输很有可能会出现差错。 一般情况下,传输中的差错都是由噪声引起的。 

  噪声有两类:一类是信道固有的、持续存在的随机热噪声;  另一类是外界特定的短暂原因所造成的冲击噪声。 

  对于前者,我们可以提高信噪比来减少或避免干扰; 但是后者不可能靠提高信号幅度来避免干扰造成的差错,这就是差错产生的重要原因。

  我们通常利用编码方法来进行差错控制,主要有两类:

第一类:自动请求重传(Automatic Retransmission Request,  ARQ) 这种方法就是:接收方发现有差错时,就让发送发重新发送,直到接受的数据没有问题为止。

第二类:前向纠错(Forward Error Correction)这种方法在发现了问题之后,没有重新请求,而是决定自己来改正其中的错误。

  在第二类方法中,我么可以看到 我们不仅仅需要检查出错误,还要改正错误,于是,差错控制又可以分为检错编码和纠错编码。

 

5. 检错编码

  常见的检错编码有奇偶校验码和循环冗余码。  

6. 纠错编码

  常见的纠错编码有海明码和汉明编码。

 

7. 流量控制、滑动窗口机制

  流量控制涉及链路层上字符或帧的发送速率的控制,以使得接收方在接受前有足够的缓冲存储空间来接受每一字符或帧。

  常见的方式有两种:

  1. 停止-等待流量控制基本原理

   发送方每发送一帧,接受方在接收后反馈应答信号,表示可以接受下一帧,发送方再发送一帧。。。 如果接收方在接收到后,没有反馈应答信号,说明不接受下一帧,则此时发送方就要等待反馈信号才能进行下一帧的发送,但问题是这样的效率很低。

  2. 滑动窗口流量控制基本原理

   即发送方有一个窗口,显示哪些帧可以发送,哪些帧不能发送,哪些帧已经发送; 而接收方也有一个窗口,显示哪些帧我需要接受,哪些不需要,于是,就根据窗口来控制流量。

 

8. 可靠传输机制

  数据链路层的可靠传输通常使用确认超时重传两种机制来完成。

  确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接受。有些情况下为了提高传输效率,就会将确认捎带在一个回复帧中,称为捎带确认。 

 

9. 介质访问控制

  介质访问控制是解决当局域网中共用信道的使用产生竞争时,如何分配信道的使用权问题。

  用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为介质访问控制(Medium Access Control)。

  常见的介质访问控制方法有:信道划分介质访问控制、随机访问介质访问控制和轮询访问介质访问控制。其中前者是静态划分信道的方法,后两者是动态划分信道的方法。

9.1 信道划分介质访问控制

9.2 随机访问介质访问控制

9.3 轮询访问介质访问控制

  在轮询访问中,用户不能随机地发送信息,而是通过一个集中控制的监控站,以循环的方式轮询每一个节点,在决定信道的分配。 当某节点使用信道时,其他的节点都不能使用信道。 典型的轮询访问介质访问控制协议是令牌传递协议,他主要使用在令牌环局域网中。

 

10 局域网

  即Local Area Network , LAN, 他是在一个较小的地理范围(如一个学校)内将各种计算机、外部设备和数据库等互相连接起来组成的计算机通信网络 。 局域网的特点是:

  • 为一个单位所拥有,且地理范围和站点数目均有限。
  • 所有的站共享较高的总带宽。
  • 较低的时延和较低的误码率。
  • 各站为平等关系而不是主从关系。
  • 能进行广播和组播。

  局域网的特性主要由三个要素决定:

  补充:常见的拓扑结构

      技术分享图片

  • 拓扑结构 -- 局域网可以使用 星形拓扑结构、环形拓扑结构、总线型拓扑结构以及星形和总线型结合的复合型拓扑结构。
  • 传输介质 -- 可以使用双绞线、铜缆、光纤等多种传输介质,最常用的是双绞线。
  • 介质访问控制形式 --- 主要有 CSMA/CD、令牌总线和令牌环。   其中前两种主要用于总线型局域网,令牌环主要用于环形局域网。

11. 三种特殊的局域网拓扑实现(我们用的局域网全局限于这三种之中的):

  • 以太网(目前使用最为广泛的局域网)-- 逻辑拓扑是总线型结构、物理拓扑是星形或拓展星形结构(很有优势)。
  • 令牌环(Token Ring)-- 逻辑拓扑是环形结构,物理拓扑是星形结果。
  • FDDI -- 逻辑拓扑是环形结构,物理拓扑是双环结构。

  

12. 在链路层中有两个子层,一个是逻辑链路控制协议(LLC)、另一个是介质访问控制协议(MAC)

  其中MAC是以太网协议,因为以太网在局域网市场中取得了垄断地位,所以以太网几乎成了局域网的代名词,所以802委员会制定的LLC子层作用已经不大,古现在的许多网卡仅仅装有MAC协议没有LLC协议。

 

13. 以太网逻辑上采用了总线型的拓扑结构,以太网所有计算机共享同一条总线。(理解逻辑拓扑结构) 以太网的物理拓扑结构是扩展星形拓扑,逻辑拓扑结果是总线型拓扑。

  以太网的信息使用广播方式发送,为了保证数据通信的方便性和可靠性,以太网简化了通信流程并且使用了CSMA/CD的方式对总线进行访问控制。

 

CSMA/CD协议:即载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Dection), 该协议是CSMA协议的改进方案,适用于总线型网络或半双工网络环境。“载波监听”就是发送前监听,即每一个站在发送数据之前先要检测一下总线上是否有其他的站在发送数据,如果有,则暂时不要发送数据,要等待信道变为空闲时再发送。“碰撞检测”就是边发送边监听,即适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他是否也在发送数据。 

CSMA/CD的工作流程可以概括为“先听后发,边听边发,冲突停发,随机重发”,注意:这四个短语中每一个都有一个“发”字,因为合适得时候发送数据时非常重要的。

  注意:以太网采用了两项措施来简化通信:采用无连接的工作方式; 不对发送的数据帧编号,也不要求接受方发送确认,即以太网尽最大努交付数据,提供的是不可靠服务,对于差错的纠正则由高层完成。这里尽最大努力就是努力的发数据,其他的什么都不管。

 

14.  以太网常用的传输介质有:粗缆、细揽、双绞线和光纤。

   计算机与外界局域网的连接是通过主机箱内插入一个网络接口板。网络接口板又称为网络适配器(adapter)或网络接口卡(Network Interface Card, 简称网卡),网卡上装有处理器和存储器,是工作在数据链路层的网路组件。

  

15. 以太网的MAC帧

  每一块网卡都有一个MAC地址,也称为物理地址; MAC地址长6B,一般由冒号分隔的6个十六进制数表示。高24位是厂商代码,后24位是厂商自行分配的网卡序列号。

  由于总线上使用的是广播通信,因此网卡从网络上每收到一个MAC帧,首先要用硬件检查MAC帧中的MAC地址。如果是发往本站的就收下,否则丢弃。

 

16. 在15中我们讨论的是局域网中的以太网,这是局域网中具有垄断地位的老大,局域网还有其他的实现方式,如令牌环网。

   令牌环网的每一站通过电缆和环接口干线耦合器(Trunk Coupling Unit, TCU)相连。TCU的主要作用是: 传递所有经过的帧、为接入(即接入令牌环中)站发送和接受数据提供接口。对应地,TCU的状态也有两个:收听状态、发送状态。 令牌环网中令牌和数据的传递过程如下:

  • 当网络空闲时,环路中只有令牌环在循环传递。
  • 令牌传到有数据要发送的站点处,该站点就修改令牌中的一个标志位,然后在令牌中附加自己需要传输的数据,这样就将令牌改换成了一个数据帧,源站点然后将这个数据帧发送出去。
  • 数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地地址。 如果相同,就接受。
  • 。。。。

17. 广域网

  广域网通常是指覆盖范围广的长距离网络。 广域网是因特网的核心部分。其任务是通过长距离运送主机所发送的数据。 连接广域网各节点交换机的链路都是高速链路,其距离可以使几千公里的光缆线路,也可以是几万公里的点对点卫星线路。 广域网不等于互联网,互联网可以连接不同类型的网络(既可以是局域网,也可以连接广域网),通常使用路由器来连接。 这样,局域网就可以通过广域网和另一个相隔很远的局域网进行通信。广域网由一些节点交换机(不是路由器)以及连接这些交换机的链路组成。 从层次上考虑,广域网和局域网的区别很大,因为局域网使用的协议主要在数据链路层(还有少量物理层的内容),但是 局域网使用的协议在网络层。

  区别与联系:

  • 局域网在OSI中占有两层,而广域网是三层。
  • 他们都是互联网的重要组成构件。从互联网的角度看,二者地位相等
  • 连接在一个广域网上的或一个局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址即可。

 

18. 网桥的概念及其基本原理

  网桥用于局域网之间的连接,网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。

 

19 局域网交换机

  桥接器的主要限制是在任一时刻通常只能执行一个帧的转发操作,于是就出现了局域网交换机。 从本质上说,局域网交换机就是一个多端口的网桥,工作在数据链路层。交换机能够经济地将网络分成小的冲突域,为每一个工作站提供更高的带宽。

 

 

 

 

 

 

第4章:网络层

  

1. 网络层的功能: 异构网络互连路由与转发拥塞控制 

2. 异构网络互连

  要在全世界范围内将数以百万级的网络互连起来,并且相互之间可以通信,需要解决很多问题,而网络层的目的之一就是实现异构网络互连。

  所谓的异构网络互连将两个以上的计算机网络通过一定的方法用一种或多种通信处理设备(即中间设备)相互连接起来,构成更大的网络系统

  

3. 中间设备

  中间设备又称为中间系统或中继系统。根据中继系统所在的层次可以分为下面四中不同的中继系统:

  • 物理层中的中继系统: 中继器(用于放大信号)、集线器(把一个网络扩大了)
  • 数据链路层中的中继系统:网桥或交换机(同样也是把一个网络放大了)
  • 网络层的中继系统:路由器(实现网络互连)
  • 网络层以上的中继系统:网关

  我们可看到物理层和数据链路层的中继系统仅仅是扩大了某一个网络,并没有实现多个网络的互连,但是网络层中的中继系统可以实现多个网络的互连而形成一个更大的网络。

4. 网络层可把多个计算机网络进行异构互连,这样,原来处于不同网络的主机之间就可以像处于一个网络一样进行通信了,于是我们使用了IP是这些性能各异的网络看起来是同一个网络。

 

5. 网络层实现路由与转发

  我们知道在局域网内进行通信是可以通过以太网的广播的形式,但是如果说使用了路由将多个网络连接起来,又该如何通信呢?

  这时就是网络层发挥作用的时候了,网络层首先进行路由选择,即对于这里来的数据需要去这里,那里来的数据需要去那里.....然后由此构造出路由表,

  接着再进行分组转发,即根据转发表将用户的IP数据报从合适的端口转发出去。

  注意:路由表是根据路由选择得出的,转发表是根据路由表得出的。

 

6. 在通信子网内,由于出现过量的数据包而引起网络性能的下降的现象为拥塞。

  为了避免拥塞现象,要采用能防止拥塞的一系列方法对子网进行拥塞控制。 

 

7. 静态路由与动态路由

  静态路由:即非自适应路由选择,是指由网络管理员手工配置的路由信息。当网络中的拓扑结构发生了变化时,网络管理员需要手工去改变路由表中相关的静态路由信息。 大型和复杂的网络环境通常不宜采用静态路由。

  动态路由选择: 是指路由器上的路由表项是通过相互链接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息是在一定的时间间隙里不断更新,以适应不端变化的网络,以随时获得最优的寻路效果。

 

8. 距离 - 向量路由算法

  这种算法中,所有的结点都定期的将他们的整个路由选择表传送给所有与之直接相邻的结点。 注意:这个路由选择表包括:

  • 每条路径的目的地(即此节点到其他任意一个节点的向量
  • 每条路径的代价(即此节点到其他任意一个节点的距离

  在这个算法中,所有的节点都必须参与到路由选择表的交换,以保证路由的有效性和一致性。

  如果在得到了其他节点的的路由选择表之后发现:

  (1) 被告知了一条新的路由 - 即自己的路由表本身不存在这个路由

  (2) 发现有的路由的距离比自己的路由表中的距离要短

  遇到上面的这两种情况, 自身的路由表就要做出相应的更新。

  注意:显然,如果节点总数越多,那么其中的一个节点就要发送更多的自身的路由选择表给其他的节点,同时它又要接受更多的路由选择表来更新自己,这样,在通信子网上传送的路由选择信息的数量很容易变得很大。

 

9. 链路状态路由算法

  链路状态路由算法要求每一个参与该算法的节点都有完全的网络拓扑信息。他们执行下面的两个任务:

  • 第一:主动测试并记住所有的邻接节点的状态。(邻接节点:两个共享一条链接的节点是相邻节点,他们链接到同一条链路,或者链接到同一广播形物理网络)
  • 第二:定期的将链路状态传播给所有其他的节点。

  我的理解:先去测试邻接节点,然后记住发生了什么变化,更新并发出链路状态,其他的节点接受到这些状态,然后就可以使用这些状态信息去更新自己额网络拓扑和状态“视野图”,一旦链路状态发生了变化,节点对更新了的网络图利用Dijsktra最短路径算法重新算的路由,从单一的源出发计算到达所有目的节点的最短路径。

 

10. 层次路由

  当使用层次路由时, OSPF将一个自治系统(AS)再划分为若干个区域(Area),每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域内的内部结构。

  采用分层次划分区域的方法虽然使得交换信息的种类增多了,同时也是的OSPF协议更加复杂了。 但这样做却能使得每一个区域内部的交换路由信息大大减少,因而使OSPF协议能够用于大规模的自治系统中。

 

11.  IPv4

  一个ip分组是由首部和数据两部分组成的。 首部包括固定部分和可变部分,首部的前一部分是固定长度的固定部分,共20B,是所有IP分组必有的。 在首部固定部分的后面是可变部分,其长度是可变得,用来提供错误检测和安全等机制。IP数据报的格式如下:  

技术分享图片

  IP首部的部分说明了IP数据报的基本信息,其重要字段含义有:

  • 版本,指ip的版本,目前广泛使用的是IPv4
  • 首部长度:即说明IP数据报的首部的长度,一般为20B
  • 总长度:即首部和数据报长度之和,最大的长度是 2 16-1 = 65535 ,单位B
  • 标识:一个计数器,每产生一个数据报就加1,用以表明不同的IP数据报。 注意:当分组长度大于IP最大传送单元(MTU)(个人理解:包含IP分组的容器的最大存储量为MTU),必须分片,此时每片都复制一次标识号就可以重新组合起来这个分组,这也就是标识的很重要的意义。
  • 标志:有DF 和 MF,其中如果DF=0,即DF(Don’t Fragment) = false,这时我们就可以分片,否则是不能分片的。 另外MF如果等于1,即more fragment = true说明后面还有分片; MF=0表示最后一个分片。
  • 片偏移:指出了 较长的分组 分片后 在原分组中 的相对位置。片偏移以8B为偏移单位。 也就是说每个分片的长度一定是8B(64位)的整数倍。
  • 首部检验和。IP数据报中的首部检验和只教研分组的首部,而不校验数据部分。
  • 生存时间TTL。 标识分组在网络中的寿命,以确保分组不会永远在网络中循环。
  • 协议:标识上层协议,即分组携带的数据应该交给那个传输层协议,如TCP、UDP等。其中如果是6表示TCP,否则表示UDP。
  • 原地址字段: 标识发送方的IP地址。
  • 目的地址字段:标识接收方的IP地址。 

  

12. 刚刚我们说了如果在标志中的DF=0;那么我们就可以分片,因为当IP数据报中的长度大于了MTU,就一定要分片。

  一个链路层数据报能承载的最大数据量叫做最大传输单元(MTU)。 因为IP数据报被封装在链路层数据报中,所以链路层的MTU严格限制着IP数据报的长度。如果链路层协议不同,那么MTU也就大小不一样。

  当IP数据报的总长度大于链路层MTU时,就需要将IP数据报中的数据分装在两个或更多的小的IP数据报中,这些较小的IP数据报就是片。 

  片在目的地的网络层被重新组装。当创建一个IP数据报时,发送主机为他添加一个标识号。 如果分片,这几个小的IP数据报会有相同的标识号,最后只要把相同标识号的小的IP数据报重新组装起来即可。

 

13. 网络层转发分组的流程(重点)

  网络层的路由器执行的分组转发算法如下:

(1)从数据报的首部提出目的主机的IP地址D,得出目的网络地址为N;

(2)如果网络N与此路由器直接相连,则把数据报直接交付目的主机D; 否则,间接交付(执行下一步)

(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行下一步

(4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的默认路由器; 否则: 报错。

 

14. IPv4地址

  连接在Internet上的每一台主机(或路由器)都会分配一个32bit的全球唯一的标识符,即IP地址。 传统的IP地址是分类的地址,分为A、B、C、D、E五类。

  IP地址都是由网络号和主机号组成的。 其中网络号标志主机(或路由器)所连接到的网络,一个网络号在整个因特网范围内必须是唯一的。而主机号是用来表示该主机(路由器)的。一个主机号在其前面所指明的网络范围内必须是唯一的。   

  所以,一个iP地址在整个因特网范围内是唯一的。

  在各类的ip地址中,有一些ip地址是用于表示特殊用途的,不用于做主机ip地址:

  • 主机号全为0表示本网络本身:如202.98.174.0
  • 主机号全为1表示本网络的广播地址: 如2.2.98.174.255
  • 127.0.0.0网络保留作为环路自检地址,此地址表示任意主机本身,所以目的地址为环回地址的IP数据报永远不会出现在任何网络。
  • 32位全是0,即0.0.0.0表示本网络上的本主机。
  • 32位全为1,即255.255.255.255表示整个TCP/IP网咯的广播地址。
    •  注意:实际上使用是路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。

  广播地址补充;

     技术分享图片

  

15. IP地址中不得不知道的事情:

  1. 每个主机的IP地址由网络号和主机号组成。 因此IP地址是一种分等级的地址结构。 好处:(1)网络信息中心(Network Information Center, NIC)在分配IP时只分配网络号(第一等级),而主机号(第二级)由得到该网络的单位自行分配,这方便了IP地址的管理。 (2) 路由器仅仅根据网络号来转发分组。而不用考率主机号,这样减小了路由器所占用的存储空间。
  2. IP地址是标志一个主机(或路由器)和一条链路的接口。  注意: 路由器每个端口至少分配一个iP地址。
  3. 用转发器或者桥接器(如Hub、Switch等)连接起来的若干个LAN仍是一个网络(同一个广播域),因此此网络中所有主机的IP地址网络号必须相同,但主机号必须不同。
  4. 在IP地址中,所有分配到网络号的网络(无论是LAN还是WAN)都是平等的。
  5. 在同一个局域网中的主机或路由器的IP地址中的网络号必须是一样的。 路由器总是具有两个或者两个以上的IP地址,路由器的每一个接口都有一个不同网络号的IP地址。

16. 网络地址转换(Network Address Translation,即NAT)

  这是一种将私有IP地址(或可重用IP地址,或专用网络地址)转换为公用地址(如Internet),从而对外隐藏了内部管理的iP地址。

  说明:为了网络安全,划出了部分IP地址为私有IP地址。  私有IP地址仅用于LAN,不用于WAN连接,注意:正是因为不能用于WAN连接,所以私有IP地址不能直接用于Internet,必须通过网关利用网络地址转换NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Inernet,并且允许私有的IP地址被LAN重复使用。这有效的解决了IP地址不足的问题。 私有IP地址的网段如下:

  • A类,一个A类网段,即10.0.0.0~10.255.255.255 (在公司使用bitbucket的时候就是使用的这种私有IP地址,所以离开了公司就不能使用了)
  • B类,16个B类网段,即172.16.0.0~172.31.255.255
  • C类,256个C类网段,即192.168.0.0~192.168.255.255 (在上英语课和C++课程时,使用的都是这样的网段)

  注:在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。 

  使用NAT时,需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。 当使用本地地址的主机和外界通信时, NAT路由器使用NAT转换表将本地地址转换为全球地址,或将全球地址转换为本地地址。

 

17. 子网划分与子网掩码

  (1)子网划分

  两级IP的缺点: IP地址空间的利用率很低; 给每一个物理网络分配一个网络号会使得路由变得太大而使得网络性能变坏; 两级的IP地址不够灵活。

  1985年起,在ip地址中又增加了“子网号字段”,使两级的IP地址变成了三级的IP地址。 这种做法叫做划分子网。 划分子网已经成了因特网的正式标准协议。那么3级的ip地址为: 

      IP地址 = {<网络号>,<子网号>,<主机号>}

  注意:1.划分子网纯属于一个单位内部的事情。单位对外仍然表现不出划分子网的网络。

           2. 划分子网只是把iP地址的主机号这部分进行了再划分,而不改变IP地址原来的网络号。因此从一个IP数据报的首部并无法判断主机或目的主机所连接的网络是否进行了子网划分。

     3. RFC950文档规定,对分类的IPv4地址进行子网划分是,子网号不能全部为0或全部为1,但是现在全1和全0也可以使用了,但使用前一定要谨慎。

 

18. 子网掩码

子网掩码是一个与IP地址相对应的长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号和子网号,而0对应于主机号。 计算机只要将IP地址和与他对应地子网掩码逐位进行与运算,就可以得出相应子网的网络地址。   也就说可以通过子网掩码来获得子网。

技术分享图片

 

  个人认为,在这个例子中,6和62就是子网号。  必须网络号和子网号完全一致的时候,才能认为两者处于一个局域网内。

  注意:

  • 一个主机在设置IP地址信息的同时,必须设置子网掩码
  • 同属于一个子网的所有主机以及路由器的相应端口,必须设置相同的子网掩码
  • 路由器的路由表中,所包含的信息其主要内容必须有:目的网络地址、子网掩码、下一跳地址。

  

  

19. 无分类编址 CIDR

 

20.ARP、ICMP 

  ICMP协议,即Internet Control Message Protoco, 即互联网控制消息协议,它是网络层的协议,通常用于返回的错误信息或是分析路由。ICMP错误消息总是包括了源数据并返回给发送者。 ICMP错误消息的例子之一是TTL值过期。每个路由器在转发数据报的时候都会把IP包头中的TTL值减一。如果TTL值为0,“TTL在传输中过期”的消息将会回报给源地址。 每个ICMP消息都是直接封装在一个IP数据包中的,因此,和UDP一样,ICMP是不可靠的。

  通常与ICMP相关的是ping命令,该命令用于检查网络状态、丢包情况,如下,我分别ping了百度和谷歌,结果如下:

 技术分享图片

 我们可以看到,在ping的时候使用的就是ICMP协议,他是属于网络层的, 在ping 谷歌的时候,发送的数据包都丢失了,而ping github的时候,丢失了50%。  

 这里的时间应当是“时延”的意思,即由发送到送达的时间消耗。 那么TTL是什么呢? 我们先看维基百科的解释:

存活时间(英语:Time TLive,简写TTL)是电脑网络技术的一个术语,指一个数据包在经过一个网络时,可传递的最长距离(跃点数)。每当数据包经过一个路由器时,其存活时间就会被减一。当其存活时间为0时,路由器便会取消数据包并发送一个ICMP TTL数据包给原数据包的发出者。其设计目的是防止数据包因不正确的路由表等原因造成的无限循环而无法送达及耗尽网络资源。

 在一篇博客中说到:

TTL是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。当对网络上的主机进行ping操作的时候,本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。

  默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。

  显然,TTL值大的网络其更容易访问

 

21.路由器的组成和功能 

 

22.DHCP

   DHCP即动态主机设置协议(Dynamic Host Configuration Protocol)。它是属于局域网的处于网络层的协议,使用UDP协议工作。

  其主要用途有二:

  • 用于内部网络或网络服务供应商自动分配IP地址给用户。  
  • 用于内部网络管理员作为对所有电脑做中央管理的手段。

  DHCP是一种使网络管理员可以集中管理和自动分配IP网络地址的通信协议。 在IP网络中,每一个连接Internet的设备都需要分配唯一的IP地址。 DHCP是网络管理员可以从中心结点监控和分配IP地址,当某台计算机移到网络中的其他位置时,能自动收到新的IP地址。 

  DHCP使用了租约的概念,或称为计算机IP地址的有效期。 租用时间不是固定的,主要取决于用户在某地连接Internet需要多久,这对于教育行业和其他用户频繁改变的环境是很实用的。 通过较短的租期,DHCP可在一个计算机比可用IP地址多的环境中动态地重新配置网络。DHCP也支持为计算机分配静态地址,如需要永久性IP地址的Web服务器。

  功能概述:

  DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率

  当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置.

  DHCP的主要功能如下:

  • 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
  •  DHCP应当可以给用户分配永久固定的IP地址。
  •  DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
  • DHCP服务器应当向现有的BOOTP客户端提供服务。 

 

   DHCP有三种方式来分配IP地址:

(1)自动分配方式(Automatic Allocation)

  DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

(2)动态分配方式(Dynamic Allocation)

  DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

 (3)手工分配方式(Manual Allocation)

  客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

 

DHCP中的报文

(1) DHCP ACK

(2)DHCP REQUEST

 (3)DHCP DISCOVER

(4) DHCP OFFER

需要了解上述报文是谁发送的,就得知道他们的工作原理是怎么样的!

技术分享图片

  • DHCP Client 以广播的方式发出 DHCP Discover报文,广播是广播给所有的DHCP Server。(即寻找ip,找工作,海投的方式,得生存啊)
  • 所有的DHCP Server能够接收到DHCP Client发送的DHCP Discover报文,并且所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。 在所有的DHCP Offer中都有一个“Your(client) IP Address”字段,该字段就是DHCP Server能够提供给DHCP Client的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。 且每一个DHCP Server在发出DHCP Offer之后都会存在一个已经分配IP地址的记录(你找工作,刚好我需要人,我就向你发出offer)
  • DHCP 最后只能处理其中的一个DHCP Offer报文,一般都是处理最先受到的。 DHCP Client 会发出一个广播的DHCP Request报文,在选项字段中加入选中的DHCP Server的IP地址和需要的IP地址。(即我会选择最先给我offer的公司,最有诚意啊,所以请求过去)
  • 相应的DHCP Server受到了DHCP Request报文后,判断选项字段中的IP地址是否和自己的相同,如果不同,就不做任何处理而只清理掉相应IP的分配记录; 如果相同,DHCP Server 就会向DHCP Client发送一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。(就是你愿意来好啊,我先看看你的Requst是不是有问题,有问题,就不要你了, 如果没有问题,我就要你,即给你一个回应,我同意了,你来吧,于是把三方发了过来)
  • DHCP Client在接收到了DHCP ACK报文之后,先检查分配的IP是否可以用,如果可以,就直接使用并根据IP地址使用租期自动启动续延过程; 如果该IP已经被使用,那么DHCP Client就发出DHCP Decline报文,通过DHCP Server禁用这个IP地址,然后DHCP Client开始新的申请过程。(即拿到三方之后,如果可以接受,就直接上班了,如果发现公司已经招了人了,你还来找人,就会让公司停止这个职位的招聘,即 decline,以后再招吧你~ 所以我又得重新找工作了)
  • DHCP在成功获取了IP地址之后,随时可以发送DHCP Release报文释放自己的IP地址,DHCP Server收到了DHCP Release报文后,会回收相应的IP地址并重新分配。(即根据《劳动法》规定,我的特权高啊, 不想干就不干了)。

 

 

 

第五章  传输层

1.传输层的功能:

  (1) 提供应用进程之间逻辑通信(即端到端的通信)。与网络层的区别是,网络层提供的是主机之间的逻辑通信

         注意: 从IP层(网络层)来说,通信的双方是两个主机,IP数据报的首部给出了这两个主机的IP地址。 但是“两个主机之间的通信”实际上是两个主机中的应用程序的通信,应用程序之间的通信又称为端到端的逻辑通信

         这里“逻辑通信”的意思是:传输层之间的通信好像是沿着水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接

  (2) 复用和分用。复用是指发送方不同的应用程序都可以使用同一个传输层协议传递数据。分用是指接收方的传输层在剥去报文首部后能够把这些数据正确交付到各个不同目的应用程序。

  (3)传输层还要对收到的报文进行差错检测。而网络层只检查IP数据报的首部,不检查数据部分是否出错。

  (4)提供两种不同的传输协议。 即面向连接的TCP和无连接的UDP。 而网络层不可能同时出现两种协议。  

     注意: 这里一个面向连接的,一个是无连接的,而不是不面向连接的,要分清专业词汇。

 

2. 传输层的特点: 传输层向高层屏蔽了底层网络核心的细节(如网络拓扑、路由协议等),它使得应用进程看见的就好像在两个传输层之间有一条端到端的逻辑通信信道

    这条逻辑信道对上层的表现却因传输层的不同而有很大的差别。 在传输层使用面向连接的TCP时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。但是如果使用的是无连接的UDP时,这种逻辑信道仍然是一条不可靠信道。

 

3. 端口的作用

  端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将报文段中的数据向上通过端口交付给应用层相应的进程。  

  端口号在传输层中的作用相当于IP地址在网络层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的都是主机,而端口标识的主机中的应用进程。(******)

  注意:端口号只具有本地意义,即端口号只是为了标志计算机应用层中的各进程。 在因特网中不同计算机的相同端口号是没有联系的。

  补充对端口的理解:

     技术分享图片

       技术分享图片

     个人理解: 物理层就是用于交换不同的数据的, 数据链路层就是为了有一个检测机制并将数据封成帧的且其中局域网的概念也非常重要,而网络层就是保证无论你在哪我都可以可得到你,传输层就是说我可以把得到的数据通过端口分发给不同的应用进程,所以传输层的作用就是传输数据给不同的应用进程。

 

 

4.  端口号

  应用进程通过端口号进行标识:分为两类:

(1) 服务端使用的端口号

   服务器端使用的端口号也分为两类:

  • 熟知端口号,数值为0~1023,IANA(互联网地址指派机构)把这些端口号指派给了TCP/IP中最重要的应用程序,让所有的用户都知道。
  • 登记端口号,数值为1024~49151。它是为没有熟知端口号的应用程序使用的,使用这类端口号必须在IANA登记,以防止重复。

(2) 客户端使用的端口号

  

  数值在 49152~65535,由于这类端口号仅仅在客户端运行时才动态选择,因此又叫做短暂端口号,或者是临时端口号。 通信结束后,刚才使用过的客户端口号就不存在了,这个端口号就可以供其他的客户进程使用。

  关键:PID就是端口号,之前在操作系统这门课中说过,只要分配了一个进程,就会有一个PID,即Port ID,端口号的意思

     

5. 套接字

  在网络中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程。 在网络中采用发送方和接受方的套接字(Socket)组合来识别端点。 

   所谓套接字就是指一个通信端点,即,  套接字 = (主机IP地址, 端口号),它唯一的标识了网络中的一个主机和其上的一个应用(进程)

  在网络通信中,主机A发送给主机B的报文段中包含目的端口号和源端口号。其中目的端口号就是B的端口号,源端口号就是A的端口号。源端口号就是作为“返回地址”的一部分,即当B需要发回给一个报文段给A时,B到A的报文段中的目的端口好就是A到B报文段中的源端口号。

 

 

6. 无连接服务与面向连接服务

  面向连接的服务就是在通信之前,必须先建立一个连接,在通信过程中,整个连接的情况一直被实时地监控和管理。 当通信结束时,应该释放这里连接

  而无连接的服务是两个实体之间的通信不需要先建立好连接,需要通信的时候,直接将信息发送到网络,而该信息的传递在网上尽力而为的往目的地传送。

  

7. TCP/IP协议族在IP层之上使用了两个传输协议: 一个是面向面向连接的传输控制协议TCP,另一个是无连接的用户数据报协议UDP。

8. TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送之后要释放连接。 TCP不提供广播或组播服务。由于TCP面向连接的可靠地传输服务,因此不可避免的增加了许多开销,如确定、流量控制、计时器以及连接管理等等。这不仅使得协议数据单元的头部开销很大,且还要占用很多的处理机资源。 因此TCP主要适合用于可靠性更重要的场合,如文件传输(FTP)、超文本传输协议(HTTP)、远程登录(TELNET)等。

9. UDP是一个无连接的非可靠地传输层协议。他在IP之上仅仅提供了两个附加服务:多路复用和对数据的错误检查。 IP知道怎么把分组投递给一台主机,但是不知道怎么把它们投递给主机上的具体的应用。 UDP在传送数据之前不需要先建立连接,远程主机的传输层收到UDP报文之后,不需要给出任何确认。  优点: UDP比较简单,其执行速度比较快、实时性好。 使用UDP的应用主要包括小文件传送协议(TFTP)、DNS、SNMP和实时协议(RTP)。

 

10 UDP数据报

  概述: RFC定义的UDP只是做了传输协议所能做的最少的工作,只提供了: 复用和分用以及差错检测。  如果应用程序开发者选用UDP而不是TCP,就相当于直接和IP打交道。

       但是UDP并不是没有用的,因为其优点如下:(1)UDP不会引入建立连接的延时,因为他是无连接的。如果把DNS运行在TCP之上而不是UDP之上,那么DNS 的速度就会慢很多。 HTTP使用了TCP而不是UDP,是因为对于急于文本数据的web网页来说,可靠性是至关重要的。(2) 无连接状态。TCP在端系统中需要维护连接状态,此状态包括接受和发送缓存、拥塞控制参数和序号与确认号的参数,而UDP不需要连接状态也不跟踪这些参数,一次某些专用应用服务器使用UDP时,就可以支持更多的活动客户机。(3) 分组首部的开销小。 TCP报文段有20B的首部开销,而UDP仅仅只有8B的首部开销。 (4) 应用层能更好的控制要发送的数据和发送时间。 

    总结:UDP常用于一次性传输少量数据的网络应用,如DNS和SNMP等等,因为对于这些应用,若采用TCP,将为创建连接和维护带来很大的开销。 

 

11. UDP的首部格式

  UDP报文包含两个部分:UDP首部和用户数据,整个UDP报文作为IP数据报的数据部分封装在IP数据报中。

  技术分享图片

  • 源端口(来源连接端口) - 在需要对方回信是选用,不需要时可全用0.
  • 目的端口(目的连接端口) - 这在终点交付时必须要用到。
  • 报文长度 - UDP报文的长度(包括首部和数据),其最小值为8(仅有首部).
  • 校验和 - 检验UDP报文在传输中是否有错,有错就丢弃。   

  

 

12 .  TCP概要

  TCP是在不可靠的IP层上实现的可靠地数据传输协议,它主要解决的是可靠、有序、无丢失和不重复的问题。特点是:

  • TCP是面向连接的传输层协议,UDP也是传输层协议,但是无连接的。
  • TCP提供可靠交付的服务,保证传送的数据无差错、不丢失、不重复且有序,UDP只是尽可能的传递,没有任何保证。
  • TCP提供全双工通信允许通信双方的应用进程在任何时候都可以发送数据,为此TCP连接的两端都设有发送缓存和接受缓存。
  • TCP是面向字节流的,虽然应用程序和TCP的交互式一次一个数据块(大小不等),但tCP把应用程序叫下来的数据看成字节流。

13. TCP报文段

  TCP传送的数据单元称为报文段。一个TCP报文段分为TCP首部和TCP数据两个部分。

  整个TCP段作为IP数据报的数据部分封装在IP数据报中。

  TCP报文段首部如下:

    技术分享图片

  各字段的意义如下:

  • 源端口和目的端口 - 各站2B,端口是运输层和应用层的服务接口。 运输层的复用和分用功能都要通过端口才可以实现。
  • 序号字段 - 占4B。  TCP连接中传送的数据流中的每一个字段都编上一个序号。序号字段的值指的是: 本报文段所发送的数据的第一个字节的序号。
  • 确认号字段 - 是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 数据偏移 - 指出了TCP报文段的数据起始处距离TCP报文段的起始处有多远。
  • 保留字段 - 保留为今后使用。
  • 紧急位URG(即urgent,紧急的意思) - 当URG为1,表明紧急指针字段有效,它告诉系统此报文中有要紧的数据,应该尽快发送(相当于高优先级的数据)。
  • 确认位ACK (Acknowledgement, 确认的意思)- 只有当ACK = 1时才表明确认号字段有效。 当ACK为0,确认号无效。  TCP规定:在连接建立后,所有传送的报文段都必须把ACK设置为1.
  • 推送位PSH(PUSH) - 接受TCP收到PSH=1的字段,就尽快地交付接收应用进程,而不再等待整个缓存都填满了才交付。
  • 复位位(RST) - 当RST = 1时, 表明TCP连接中出现了严重的差错(由于主机崩溃或其他的原因),必须释放连接然后重新建立一个连接
  • 同步位SYN(即synchronize) 同部位为1表示这是一个连接请求或连接接受请求。
  • 终止位FIN(即finnish)- 用来释放一个连接。  FIN=1表明此报文段的发送方的数据已经发送完毕,并要求释放传输连接。
  • 窗口字段。 接收方的数据缓存空间是有限的,所以使用窗口值来作为接收方让发送发设置其发送窗口的依据。
  • 检验和 - 检验和字段检验的范围包括首部和数据这两部分。 在计算检验和时,要在TCP报文段的前面加上12B的伪首部。
  • 紧急指针字段 - 指出本报字段中紧急数据共有多少字节(紧急数据放在本报文段数据的最前面)。
  • 选项字段 - 长度可变,
  • 填充字段 - 这是为了让整个首部长度为4B的整数倍

  

 

14. TCP连接管理(重点掌握)

  TCP是面向连接的协议,所以每一个TCP连接都有三个阶段: 连接建立数据传送连接释放。 

  而TCP连接的管理就是使得运输连接的建立和释放都可以正常的进行。在TCP连接过程中需要解决以下的三个问题:

  • 要使每一方都能够确知对方的存在。

  • 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项以及服务质量等)
  • 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配

  TCP连接的建立采用客户/服务器方式。 主动发起连接建立的应用进程叫做客户机(Client),而被动等待建立连接的应用进程叫做服务器(server)

  

(1) TCP连接的建立(三次握手)

  技术分享图片

  (1)第一步: 客户机的TCP首先向服务器端的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部的SYN = 1 (表示这是一个连接请求)seq = x ,这是客户端随机选择的一个起始序号,故连接请求报文不携带数据,但是需要消耗掉一个序号。  TCP连接中传送的数据流中的每一个字节都编上了一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

  (2)第二步: 服务器的TCP收到请求连接请求报文段之后,如同意建立连接,就向客户端发送确认并为TCP连接分配TCP缓存和变量。 在确认报文段中,SYN设置为1(表示这是一个连接接收报文),ACK设置为1(在服务器发送确认连接报文以及之后C和S发送报文都要有ACK=1),并且服务器随机产生起始序列号seq = y (同样,TCP连接中的每个TCP报文段都要有序号,即sequence number,第一次的序号是随机发的)。确认号字段的值设置为x+1,即ack = x + 1; 确认报文段同样不含有应用层数据。注意:之所以确认号字段为x+1,有2个原因,其一:得知道确认字号段的含义,即期望接收对方的下一个报文段的数据的第一个字节的序号其二因为客户端发送TCP请求连接报文段时,只因为序列号消耗了一个字节,所以下次发送的字节是 x + 1;

  (3)第三步当客户机收到了确认报文段之后,还要向服务器给出确认(不仅服务器需要确认,客户端在得到服务器的确认之后还要确认),并且也要给该连接分配缓存和变量。这个报文段的ACK=1(刚刚说了,只要是在服务器确认连接的报文和之后的报文,都要添加 ACK = 1),seq = x + 1, 序号即这次需要发送的第一个字节的序号,和服务器发出的 ack 是相等的, 确认字段号为y+1(这个很容易理解,即客户端希望下次接受的TCP报文段的第一个字节的序号为y+1,因为上次客户端的是y,并且只有一个字节)。

    注意:在成功执行了上面三步之后,TCP连接就建立了,接下来就可以传送应用层数据了。TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都可以发送数据。

   另外,值得注意的是: 服务器端的资源是在第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的。这就使得服务器端容易收到SYN的攻击。 

 

(2)  TCP链接的释放

  天下没有不散的筵席,对于TCP亦是如此。 参与TCP链接的两个进程中的任何一个都可以终止链接。 

  TCP连接释放的过程通常称为“四次挥手”,如下图:

      技术分享图片

 

  (1) 第一步: 客户端打算关闭连接,就向其TCP发送一个连接释放报文段,并停止再发送数据,主动关闭TCP连接,该报文段的FIN标志设置为1,seq=u。(FIN报文段就是不携带数据,也要消耗掉一个序号)

  (2) 第二步: 服务器收到连接释放报文后即发出确认,确认号是ack = u + 1; 这个报文段自己的序号是v,此时,从客户机到服务器这个方向的连接被释放了,TCP处于半关闭状态,但是服务器发送数据,客户机仍然接受,即从服务器到客户机的连接还没有关闭。

  (3)第三步: 若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时发送FIN = 1的连接释放此报文段。

  (4) 第四步: 客户机收到连接释放报文段之后,必须发送确认。在确认报文段中,ACK为1,确认号为ack = w+1; 序号是seq=u+1. 此时的TCP连接还没有释放掉,必须经过等待计时器设置的2MSL后,A才进入连接关闭状态。

 

15. TCP可靠传输

  TCP的任务是在IP的不可靠额、尽力而为服务的基础上建立一种可靠数据传输服务。 TCP提供的可靠数据传输服务就是要保证接收方从缓存区读出的字节流和发送方发出的字节流是完全一样的。

  TCP使用了校验、序号、确认和重传等机制来达到这个目的。

 

 

 

 

 

 

 

 

 

第六章 应用层

1. 网络应用模型

(1) 客户/服务器(Client/Server)模型

  在客户/服务器模型(Clinet/Server, C/S)中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求。

  工作流程是:

  • 服务器处于接收请求的状态。
  • 客户机发出服务请求,并等待接收结果。
  • 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。  

  故: 在C/S模型中,客户机是服务请求方,服务器是服务提供方。

 常见的使用客户/服务器模型的应用包括Web、文件传输(FTP)、远程登录和电子邮件等。

 

(2)P2P(Peer-to-Peer )模型

  可以看出在C/S模型中,服务器的好坏至关重要。 因为整个网络中,少数服务器担任管理工作。且客户机之间没有直接通信。且可扩展性不佳,受服务器硬件和网络宽带的限制,服务器支持的客户机数量有限。而P2P的思想是整个网络中的传输内容不再被保存在中心服务器上,每个节点都同时具有下载、上传的功能,其权利和义务都是大体对等的。

  特点:其任意一对计算机都可以相互通信。 每个节点既可以作为客户机访问其他节点的资源,也可以作为服务提供资源给其他的节点。他们的关系是Peer,即对等的。

 

故C/S与P2P的区别:C/S中服务器就是服务器,客户机就是客户机,且服务器的数量远远小于客户机的数量。 而P2P中,客户机也是服务器,服务器也是客户机。

 

 

2. DNS系统概述

  域名系统(Domain Name System)是因特网使用的命名系统,用来把便于人们记忆的含有特定含义的主机名(如www.baidu.com)转换为便于机器处理的IP地址。

  DNS系统采用客户/服务器模型,其协议运行在UDP之上,使用53号端口。

 

3. 层次域名空间

www.baidu.com

  这就是一个域名,其中www是三级域名baidu是二级域名, com是顶级域名。每一个域名都是由标号序列组成,而各个标号之间使用 . 来隔开。 

  关于域名,有以下的几点需要注意:

  • 域名中的英文不区分大小写。如输入www.baidu.com和输入www.BaiDu.com的效果是一样的。
  • 域名中处理使用连字符("-")之外不能使用其他任何的特殊符号。
  • 每一个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。
  • 级别最低的域名写在最左边,而级别高的域名写在右边。

  顶级域名(Top Level Domain, TLD)有以下几类:

  • 国家顶级域名(nTLD):常见的有“.cn”表示中国,“.us”表示美国,“.uk”表示英国,“.hk”表示香港。
  • 通用顶级域名(gTLD):常见的有“.com”(公司企业)、“.net”(网络服务机构)、“.org”(非盈利形的组织)、“.gov”(美国的政府部门等)。

  

4. 域名服务器(域名服务器也都是有域名和IP地址的)

  DNS使用了大量的DNS服务器,他们以层次方式组织,并且在全世界范围内。 没有一台DNS服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS服务器上。

  采用了分布式设计的DNS服务器,是一个在因特网上实现分布式数据库的精彩范例。主要有四种类型的域名服务器。

  (1) 根域名服务器

  根域名服务器的层次最高,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址,它也是最重要的域名服务器。

  不管是哪一个本地域名服务器,对因特网上的任何一个域名进行解析,如果自己无法解析,就首先求助于根域名服务器。

  因特网上有13个根域名服务器,但是他们都不是单个的,不是说真的全世界只有这13个,而是每台“服务器”实际上是冗余服务器的集群,以提供安全性和可靠性。

  需要注意的是,根域名服务器用来管辖顶级域(如.com),但是它并不会直接把 待查询的域名 直接转换为IP地址,而是给你指路 - 即告诉你(你就是本地服务器啊)应该去哪里找到哪一个顶级域名服务器进行查询。

 

  (2)顶级域名服务器

  顶级域名服务器负责管理着在该顶级域名服务器注册的所有二级域名。 当收到了DNS查询请求时,就给出相应的回答(可能是最后的结果也有可能是再给你指个路 - 告诉你你下一步应该去找哪个DNS服务器 - 告诉你下一个你需要找的DNS服务器的iP地址)。

 

  (3)授权域名服务器(权威域名服务器/权限域名服务器)

  每一个主机都必须在授权域名服务器处登记。 为了更加可靠地工作,一个主机最好至少有两个授权域名服务器。  

  实际上, 许多的域名服务器同时充当本地域名服务器和授权域名服务器。 授权域名服务器总是可以将其管辖的主机名转换为该主机的IP地址。

 

  (4)本地域名服务器

  (重要:)当一个主机发出了DNS请求时,这个查询请求报文就会发给本地的域名服务器。 每个因特网服务提供者ISP,或一个大学,甚至是大学里的一个系就可以有一个本地域名服务器。

  注:我的理解是本地域名服务器就相当于当地的运营商的DNS服务器。

 

 

5. 域名解析过程

 技术分享图片

  

注:(1) 主机向本地域名服务器的查询采用的是递归查询

  (2) 本地域名服务器向根域名服务器的查询采用迭代查询

 

如我们希望得到www.baidu.com这个域名的IP会经历下面的八个步骤:

  1. 客户机向本地服务器发出DNS请求报文。
  2. 本地域名服务器收到请求后,查询本地缓存,如果有,就返回,查询结束;若查询不到,则以DNS客户的身份向根域名服务器发出请求。
  3. 根域名服务器接收到请求之后,他不可能直接告诉你域名对应的IP,而是将.com域对应地顶级域名服务器的IP地址返回给本地域名服务器。
  4. 本地域名服务器向顶级域名服务器dns.com发送解析请求报文。
  5. 顶级域名服务器.com收到了请求之后,如果他知道就直接告诉你对应地IP,否则就会判断他属于baidu.com域,于是返回本地域名服务器baidu.com的授权域名服务器的IP地址。
  6. 本地域名服务器向授权域名服务器dns.baidu.com发起解析请求报文。
  7. 授权域名服务器收到请求之后,将查询结构返回给本地域名服务器。
  8. 本地域名服务器将查询结构保存到本地缓存,同时返回给客户机。

  

 

6. 文件传输协议FTP

  文件传输协议(File Transfer Protocal, FTP)是因特网上使用的最为广泛的文件传送协议,功能有:

  • 提供不同种类主机系统之间的文件传输能力
  • 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
  • 以匿名FTP的方式提供公用文件共享的能力。

  注: FTP的工作方式是 客户/服务器的工作方式,它使用TCP可靠地传输服务。 一个FTP服务器进程可以同时为多个客户进程提供服务。 

  FTP的服务器进程由两大部分组成:一个主进程,负责接收新的请求; 另外有若干个从属进程,负责处理单个请求。 工作步骤如下:

   (1)打开端口21(控制端口),使用户可以连接上

   (2)等待客户进程发送链接请求。

   (3) 启动从属进程来处理客户进程发来的请求。

   (4) 回到等待状态,继续接受其他客户进程的请求。 主进程与从属进程并发执行。

7. FTP中的控制链接和数据连接

  FTP在工作时使用两个并行的TCP连接,一个是控制链接,一个是数据连接。 使用两个不同的端口号可以使得协议更加简单和更容易实现。

(1)控制链接

  用来传输控制信息(如连接请求、传送请求)。 并且控制信息都是以7位ASCII格式传送的。 

(2)数据连接

  数据连接用来连接客户端和服务器端的数据传送进程, 数据传送进程实际完成晚间的传送,。

 

问: 当一台计算机从FTP服务器下载文件是,在该FTP服务器上对数据进行封装的5个装换步骤是:数据、数据段、数据报、数据帧、比特

 

8.  电子邮件

  SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议

  因特网电子邮件结构主要有3个组成部分:

  1. 用户代理(User Agent):它就是一个运行在PC上的程序,常见的有Outlook、Foxmail等
  2. 邮件服务器(Mail Server): 组成了电子邮件系统的核心。 邮件服务器的功能是发送和接收邮件。同时还要向发信人报告邮件传送的情况(如已发送、未发送、丢失等)。邮件服务器采用C/S模式,每一个邮件服务器既是用户也是服务器。例如,当邮件服务器A向邮件服务器B发送邮件时,A就是SMTP客户,B就是SMTP服务器;当B向A发送邮件时,B就是SMTP用户,A就是SMTP服务器。
  3. 邮件发送协议读取协议(电子邮件使用的协议) 邮件发送协议用于用户代理向邮件服务器发送邮件或邮件服务器之间发送邮件,通常使用的是SMTP 邮件读取协议用于用户代理从邮件服务器中读取邮件,如POP3

  需要注意的是:SMTP采用的是推(push)的方式,即在用户向邮件服务器发送邮件以及邮件服务器之间发送邮件时,SMTP客户端主动将邮件“推”到SMTP服务器端。 而POP3采用的是拉(Pull)的通信方式。 当用户读取邮件时,用户代理形邮件服务器发出请求,“拉”取用户邮箱中的邮件。

 

电子邮件的收发过程:

  1. 发信人调用用户代理来编辑要发送的邮件,然后用SMTP将邮件传送给 发送端邮件服务器
  2. 发送端邮件服务器将邮件放入邮件队列缓存中,等待发送。
  3. 运行在发送端邮件服务器的进程发送邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器发起TCP连接的建立。
  4. TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件。当所有的待发邮件都发送完了,就关闭TCP连接。
  5. 运行在接收端的邮件服务器在收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人方便时进行读取。
  6. 收信人打算收信时,调用用户代理,使用POP3或IMAP协议将自己的邮件从接收端邮件服务器的用户邮箱中取回。

 

9. 电子邮件格式

 电子邮件地址的规定格式为“收件人邮箱名@邮箱所在主机的域名”如[email protected],其中用户名(即收件人邮箱名)在qq.com这个邮件服务器上必须是唯一的。 这也就保证了 [email protected]这个邮件地址在整个因特网上都是唯一的。

 

10 MIME (多用途网际邮件扩充)

  即Multipurpose Internet Extensions,由于SMTP只能传送一定长度的ASCII码,许多其他非英语国家的文字(如中文、俄文、甚至带重音符号的德语)都无法传送,且无法传送可执行文件和其他的二进制对象,因此提出了多用途网际邮件扩充(MIME)。

  它并没有改动SMTP或者是取代它,而是继续使用目前的格式,但增加了邮件主题的结构,即MIME邮件可以在现有的电子邮件和协议下传送。 

  MIME和SMTP的关系是,如果用户的邮件中是非ASCII码,那么MIME就将它转化成ASCII码,然后继续使用STMP来传送。

 

11. WWW的概念和组成结构

  万维网(World Wide Web, WWW)是一个资料空间。 在这个空间中:一样有用的食物,称为一样资源; 并且这个资源使用“统一资源定位符”(URL)来标识。 这些资源通过超文本传输协议HTTP传送给使用者, 而后者通过单机连接来获取资源。

  万维网的内核部分是由三个标准构成的:

  • 统一资源定位符(URL)
  • 超文本传输协议(HTTP)
  • 超文本标记语言(html

  URL的一般形式是:<协议>://<主机>:<端口>/<路径>

12. 互联网、因特网和万维网的区别

  互联网泛指多个计算机网络,按照一定的通信协议,相互连接而成的一个大型计算机网络。因特网(Internet)是指由ARPA网基础上发展而来的世界上最大的全球性互联网络。可以认为,因特网只是互联网中最大的一个。

  万维网是无数个网络站点和网页的集合,他们在一起构成了因特网最主要的部分(因特网还包括电子协议和新闻组)。故 互联网包含因特网,因特网包含万维网。

 

 

13. 超文本传输协议HTTP

  它定义了浏览器(万维网客户进程)怎么样向万维网服务器请求万维网文档,一起服务器怎么把文档传送给浏览器。它使用TCP链接进行可靠的传输,端口号是80。 

  工作流程: 每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便立即与浏览器建立连接。TCP连接建立后,浏览器就向服务器发送要求获取某一个web页面的http请求。 服务器收到了http请求后,将构件所请求的web页面所必须的信息,并通过HTTP响应返回给浏览器。 浏览器再将信息进行解释,然后将web页显示给用户。最后TCP连接释放。

 

  所以有了这个知识,我们就可以回答输入url之后,一旦回车发生了什么?

  1. 浏览器分析超链接指向页面的URL:http://govcloud.cn,并解析所要使用的协议是HTTP。
  2. 浏览器向DNS解析出政务云服务器的IP地址。
  3. 浏览器与该服务器建立TCP连接(默认端口号为80)。
  4. 浏览器发出HTTP请求获取index.html
  5. 服务器通过HTTP响应把文件Index.html给了浏览器。
  6. TCP连接释放。
  7. 浏览器对文件index.html进行解释,并将web页面显示给用户。

14.HTTP协议的特点

  • HTTP协议是无状态的。 即同一个客户第二次访问同一个服务器的页面时,响应相同,服务器不记得这个客户访问过,也不知道访问了多少次。这样的好处在于简化了服务器的设计,使得服务器容易支持大量并发的HTTP请求。在实际的操作中,经常使用Cookie数据库的方式来跟踪用户的活动(如记录用户最近购买的商品等)。Cookie是一个存储在用户主机的文本文件,里面含有一串“识别码”,如“123456”,用于Web主机用户。Web服务器根据Cookie就能从数据库中查询到该用户的活动记录,进而执行一些人性化的工作,如根据用户之前浏览过的商品向其推荐新产品等。
  • HTTP既可以使用非持久连接也可以使用持久连接,对于非持久连接:每一个网页元素对象(如一个图片,一个js文件等)的传输都要建立一个TCP连接, 也就是说请求一个万维网文档所需的时间是该文档的传输时间加上两倍的往返时间RTT(其中的一个RTT用于TCP连接,另一个用于请求和接受文档)。 也可以是持久连接: 在万维网服务器在发送响应之后仍然保持这条连接,同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求和响应报文
  • 在上面介绍了持久连接,持久连接还可以分为非流水线和流水线两种方式。对于非流水线方式,即客户只能在接收到前一个请求的响应之后才能发送新的请求。 而HTTP/1.1的默认模式是流水线的持久连接。 这种情况下,HTTP客户每遇到一个对象引用就可以立即发送一个请求,因而HTTP客户可以一个接一个连续发出引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用到的对象共经历1个RTT延迟,而不是像非流水线版本那样,每个引用都必须有一个RTT。

 

 

15.HTTP 报文结构

  • 请求报文 - 从客户向服务器发送的请求报文
  • 响应报文 - 从服务器到客户的回答

  技术分享图片技术分享图片

      

         前者是请求报文、后者是响应报文

 

   可以看到,HTTP的请求报文和响应报文都是由三部分组成的。 他们的整体上的区别就是 开始行不同

   开始行, 用于区分是请求报文还是响应报文。 在请求报文中叫请求行,而在响应报文中叫做状态行。 开始行的三个字段之间都使用空格隔开。 

        值得注意的是: 请求报文的请求行包括: 请求方法、请求资源、HTTP版本。  而状态行包括了Http版本,响应状态和响应文本(短语)。

   首部行, 用来说明浏览器服务器报文主体的一些消息。首行可以有好几行,且必须要用到。每一个首部行都有首部字段和他的值。 每一行的结束都要有“回车”“换行”。 整个首部结束之后,还要用一个空行将首部和后面的实体分开

   实体主体, 在请求报文中一般都不使用这个字段,而在有些响应报文中也可能没有这个字段。 

 

 

17. SNMP协议

  首先需要知道的是它是应用层协议  简单网络管理协议(Simple Network Management Protocal)。且是基于UDP的。

(1) 网络管理的历史

  美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事。在80年代未和90年代初,网络迅速发展,许多子网数目的增多使监视网络活动成为一种必须。在网络管理的初期,对网络的管理停留在使用ICMP和PING的基础上,但是随着网络内主机数据的不断增多,这种简单的工具已经不可能完成网络管理的工作了。

 (2)SNMP历史

  随着网络数目与网络内主机数目的日益增多,单纯依靠一些网络专业进行网络管理已经不可能了,必须有一种通行的网络管理标准以及相应的管理工具使普通人也能够管理网络。第一个相关的协议是SGMP,它提供了一种直接监视网关的方法,也因此成了一种通用的网络管理工具。下来,有三种可供选择的管理工具:HEMS,SNMP和建立在TCP/IP基础上的CMIP(CMOT),因为需要使用ISO/OSI模型进行网络管理,SNMP首选CMOT作为管理工具。基本的SNMP已经被广泛使用了,所有的网络产品都提供对SNMP的支持,新开发的具有远程管理能力的SNMP是RMON,它使管理人员可以将整个子网进行管理,而不是对整个子网内的设备进行管理。

(3) 一些定义

SNMP,Simple Network Management Protocol:简单网络管理协议它是一个标准的用于管理IP网络上结点的协议。此协议包括了监视和控制变量集以及用于监视设备的两个数据格式:SMI和MIB。

MIB,Management Information Base:管理信息库由网络管理协议访问的管理对象数据库,它包括SNMP可以通过网络设备的SNMP管理代理进行设置的变量。

SMI,Structure of Management Information:管理信息结构用于定义通过网络管理协议可访问的对象的规则。SMI定义在MIB中使用的数据类型及网络资源在MIB中的名称或表示。

ASN.1,Abstract Syntax Notation One:抽象语法定义用于定义语法的正式语言,在SNMP中它用于定义SNMP协议数据单元和对象的格式。

PDU,Protocol Data Unit:协议数据单元在网络中传送的数据包。

BER,basic encoding rules:基本编码规则由CCITT (X.209)和ISO (ISO 8825)指定的编码规则,它描述了如何将ASN.1类型表示为字符串。

 注意: 一般说简单网络管理协议由那几个部分构成:我们认为是: 

    1. 管理信息结构 SMI
    2. 管理信息库 MIB
    3. SNMP本身

























以上是关于计算机网络的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

golang代码片段(摘抄)

从JVM的角度看JAVA代码--代码优化

arx代码片段