美文网首页
计算机网络——网络层

计算机网络——网络层

作者: 蜗牛也有梦想 | 来源:发表于2017-08-27 21:05 被阅读96次

    ISP (Internet Service Provider) 互联网服务提供商,中国电信、中国联通、中国移动是国内三大ISP。
    ISP 可以从互联网管理机构申请很多IP地址,个人或机构向某个ISP缴纳费用,就能从该ISP获取IP地址使用权,上网就是指通过该IP地址接入互联网。

    主机A和主机B进行通信,实际上指的是运行在主机A上的某个程序和运行在主机B上的另一个程序进行通信。进程就是指运行着的程序,所以也可以说是主机A上的某个进程和主机B上的另一个进程通信。也简称计算机之间的通信。

    网络边缘端系统之间的通信可以分为两种:

    客户-服务器(Client - Server)即C/S方式(Browser-Server B/S 浏览器-服务器,C/S的特例)

    客户和服务器都是指通信中所涉及的两个应用进程。主机A运行客户程序,主机B运行服务器程序,此时A是客户B是服务器,A向B发出服务请求,B向A提供服务。
    A是服务请求方,B是服务器提供方,两者都要使用网络核心部分提供的服务。
    客户端程序:
    1被用户调用后运行,通信时主动向服务器发起通信(请求服务),客户端必须知道服务器程序的地址。
    2不需要特殊的硬件和很复杂的操作系统。
    服务器端程序:
    1是一种专门提供某种服务的程序,能同时处理多个客户的请求。
    2系统启动后自动调用并一直不断运行,被动地等待并接受来自客户的通信请求,服务器端程序不需要知道客户程序的地址。
    3需要强大的硬件和高级操作系统支持。

    对等方式(peer - peer) 即 p2p

    两台主机不区分哪一个是服务请求方哪一个是服务提供方,只要两台主机都运行了对等连接软件(P2P软件),就能够进行平等的、对等连接通信。双方都可以下载对方存储在硬盘中的共享文件。对等连接也可以看做C/S架构,只不过每台主机即使客户又是服务器。

    分组交换

    分组交换采用存储转发技术,表示把一个报文划分为几个分组后再进行传送。通常把要发送的整块数据称为一个报文(message),在发送报文之前先把较长的报文划分为一个个更小的等长数据段。每个数据段前面加上一些表要的控制信息(目的地址、源地址等)组成首部(header),由此构成一个分组(packet)。分组也叫包,首部也叫包头。分组是互联网中传送的数据单元。

    网络边缘的主机和网络核心部分的路由器都是计算机,但两者作用不同。主机帮用户进行信息处理,和其他主机通过网络交换信息。路由器则负责转发分组;路由器收到一个分组,先暂存并检查首部,按照首部中的目的地址,找到合适的接口把分组交给下一个路由器,这样最终把分组交给目的主机。各个路由器之间必须经常交换彼此掌握的路由信息,以便创建和动态维护路由器中的转发表,使其及时更新。

    计算机网络体系结构的形成

    设想最简单的情况:连接在网络上的两台计算机相互传送文件,显然两者之间要有一条传送数据的通路。但仅仅是这样还不够,
    还有下面几项工作需要完成:
    1 发起通信的计算机必须将数据通信的通道激活(activate),所谓激活就是发出一些信令,保证传送的计算机数据能在通途上正确的发送和接收。
    2 告诉网络识别需要接收数据的计算机
    3 发起通信的计算机需要知道接收数据的计算机是否开机和连网。
    4 发起通信的计算机的应用程序需要知道对方计算机的文件管理程序是否已做好接收文件和存储文件的准备工作。
    5 若计算机的文件格式不兼容,至少其中一台计算机需要完成格式转换功能。
    6 对出现的各种差错和意外,如数据传送错误、重复、丢失,网络中某个节点交换机故障;应当有可靠的措施保证对方计算机最终能够收到正确的文件。
    还可以列举一些其他工作。

    协议与划分层次

    计算机网络中要做到有条不紊的交换数据,必须遵守一些事先约定好的规则。这些规则明确规定了所交换数据的格式以及有关同步问题。为进行网络中的数据交换而建立的规则、标准或约定称之为网络协议(network Protocol),也简称为协议。网络协议由以下三个部分组成:
    1 语法 即数据与控制信息的结构或格式
    2 语义 即需要发出何种控制信息,完成何种动作及做出何种响应
    3 同步 即时间实现顺序的详细说明
    协议通常有两种不同的形式,一种是便于人阅读和理解的文字描述,另一种是计算机能够理解的程序代码。

    应用层(application layer)

    应用层是体系结构中的最高层;作用是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。不同的网络应用需要不同的应用层协议,互联网中的应用层协议很多,如域名系统DNS,支持万维网的HTTP协议,支持电子邮件的SMTP等等,应用层交互的数据单元称为报文(message)。

    运输层(transport layer)

    运输层负责两台主机中进程之间的通信提供的通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”指并不针对特定网络应用,而是多种应用可以使用同一个运输层服务。一台主机可以同时运行多个进程,故运输层有复用和分用的功能。复用指多个应用进程可同时使用运输层的服务,分用指运输层将收到的信息分别交付到应用层中相应的进程。
    运输层主要使用TCP、UDP两种协议
    TCP(Transmission Control Protocol) 传输控制协议,提供面向连接的、可靠的数据传输服务,数据传输的单位是报文段(segment)
    UDP(User Datagram Protocol) 用户数据报协议,提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单文是用户数据报。

    网络层(network layer)

    网络层为分组交换网上的不同主机提供通信服务。发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组进行传送。TCP/IP体系中,网络层使用IP协议,因此分组也叫IP数据报,或简称数据报。
    网络层的另一个任务就是要选择合适的路由,使源主机运输层所传下来的分组能够通过网络中的路由器找到目的主机。

    数据链路层(data link layer)

    数据链路层也简称为链路层,两台主机之间数据的传输,是在一段段链路上传送的,需要使用专门的链路层协议。两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame),每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
    在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始到哪个比特结束。这样数据链路层在收到一个帧后,可以从中提取数据交给网络层。
    控制信息还使接收端能够检测收到的帧中有无差错,当发现差错时,数据链路层简单丢弃这个出错从帧,以免继续在网络中传送这个数据。若需要改正数据在数据链路层传输时出现的差错(即数据链路层不仅要检错,还要纠错),那么就要采用可靠传输协议来纠正出现的差错,这会使数据链路层的协议复杂些。

    物理层(physical layer)

    物理层上传送的数据单位是比特,物理层需要考虑用多大的电压代表1和0,接收方如何识别对方发送的比特。确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。当然,解释比特代表的含义不是物理层的任务,传递信息所利用的物理媒体,如光缆等,不是物理层协议的任务。
    下图简单假定两台主机通过一台路由器连接起来,表明数据在两个主机进程通信的过程。

    数据在进程间的传递过程

    虽然应用进程数据要经过上图中的复杂过程才能到达目的主机的进程,但是过程却是被屏蔽的,应用进程感觉是直接把数据交给了目的应用进程。

    研究开放系统中的信息交换时,实体(entity)表示任何可以发送或接收信息的硬件或软件进程。许多情况下,实体是特定的软件模块。
    协议是控制两个对等实体(或多个实体)进行通信的规则的集合。协议的语法方面的规则定义了所交换信息的格式,协议的语义方面定义了发送者或接收者要完成的操作。如在何种条件下,数据必须重传或丢弃。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。
    SAP(Service Access Point)服务访问点,指同一系统中相邻两层的实体进行交互(交换信息)的地方。SAP是一个抽象的概念,实际上就是一个逻辑接口,类似邮政信箱的作用。层与层之间交换的数据单位称为SDU(Service Data Unit)。SDU和PDU不一样,可以是多个SDU合成一个PDU,也可以是一个SDU分为几个PDU。
    计算机网络协议的一个重要特点是协议必须把所有不利的条件事先都估计到,不能假定一切都是正常和理想的。协议必须能应付各种异常的情况。
    按照范围的不同,计算机网络分为广域网WAN(Wide Area Network) 城域网MAN(Metropolitan Area Network) 局域网LAN(Local Area Network) 个人局域网(Personal Area Network)
    计算机网络最常用的性能指标是:速率、带宽、吞吐量、时延(发送时延、传播时延、处理时延、排队时延)、时延带宽积、往返时间和信道利用率

    以太网的MAC层

    在局域网中,硬件地址又称为物理地址或MAC地址。名字指出需要寻找的资源,地址指出资源在何处,路由指出如何到达该处。

    ARP(Address Resolution Protocol) 地址解析协议,ARP协议作用是根据一个网络IP地址得到具体的硬件地址
    ICMP(Internet Control Message Protocol) 网际控制报文协议
    IGMP(Internet Group Management Protocol)网际组管理协议

    层级 协议种类
    应用层 HTTP、FTP、SMTP等
    运输层 TCP、UDP
    网络层 ICMP、IGMP、ARP、IP (包括前面三个)
    IP地址与硬件地址

    TCP/IP之IP协议(网际协议)讲解这篇文章中详细讲述了从本机访问百度网站的过程,解释了如何根据目的IP地址找到目的MAC地址的过程。

    中文单位 中文简称 英文 进率(Byte=1)
    比特 bit(b) 1/8
    字节 字节 Byte(B) 1
    千字节 千字节 KB 2^10=1024
    兆字节 MB 2^20=1024*1024
    吉字节 GB 2^30=102410241024

    一个字节表示8位(2^8=256范围是0~255),一位表示一个二进制数位;1B=8b(8bit),汉字一般占用两个字节即16个二进制数位表示。IPv4网络地址一般用四个字节表示,转为十进制表示如192.168.0.1。IPv6则用八个字节表示。参考百度容量单位

    IP数据报格式中文版 IP数据报格式英文版

    从上到下从左到右介绍

    1. 版本version,指的是IP协议版本号,比如IPv4,IPv6,占用4位(bit)。
    2. 首部长度(internet header length),指IP数据报首部的长度。占4bit,单位是4个字节(32bit),4bit表示的最大十进制数是15,所以IP数据报首部长度的最大值是15*4个字节为60个字节。IP首部固定长度是20个字节,所以长度的最小值是5。为了实现IP协议方便,IP首部的长度会保持为4个字节的整数倍,不足的会在填充字段填充。
      3.区分服务(旧称服务类型),占用8位(一个字节),一般情况都不使用这个字段。
      4.总长度 首部长度+数据长度=总长度,单位是字节,用两个字节表示,所以IP数据报的最大长度为2^16-1=65535字节。所以数据长度的最大值为65535-20个字节。但运输层下的数据链路层规定了一个数据帧的最大长度MTU(Maximun Transfer Unit),如以太网MTU为1500字节,因此当IP数据报长度过大时,需要将其分片处理。
      虽然使用更长的IP数据报会提高传输效率(首部比例更小,数据内容更多),但短数据报路由器转发的更快。IP协议规定,互联网的主机和路由器,必须能够接受长度不超过576字节的数据报。这是假定上层交下来的数据长度为512字节,最长IP首部60字节,和4个富余字节,三者之和。主机发送长度超过576字节数据报时,需要先了解目的主机能否接受此长度的数据报,否则要进行分片。分片时,数据报首部的总长度则指的是分片后此部分的长度+首部长度之和。
      5.标识(identification),占16位两个字节,IP软件在存储器中维持一个计数器,产生一个数据报,计数器就+1,将此值赋给标识。但标识并不是IP数据报的序列号。IP是无连接服务,数据报不存在按序接收的问题。当数据报长度超过网络MTU分片时,标识字段的值就被赋到同一个IP数据报的所有分片中。这样能使分片后的数据报被正确重组回来。
      6.标志(flag) 占3位,目前只有两位有意义。
      标志的最低位记做MF(More Fragment),MF=1表示后面还有分片
      MF=0表示此分片是一个IP数据报分片中的最后一个。
      标志中间的一位记做DF(Don`t Fragment),意为不分片,DF=0时才允许分片。
      7.片偏移 占13位,单位是8个字节。表示该分片在IP数据报中的相对位置。因为单位是8个字节,所以每个分片的长度一定是8个字节(64位)的整数倍。
    片偏移计算

    8.生存时间,TTL(Time To Live)占8位即一个字节。表示数据报在网络中的寿命,由发出数据报的源点设置这个字段,目的是为了防止无法交付的数据报无限制的在互联网的传输白白浪费网络资源。最初TTL是以秒作为单位,每经过一个路由器就在TTL中减去在此路由器消耗的时间(不足一秒的按照一秒计算),当TTL为0时就丢弃此数据报。
    随着技术进步,TTL现在一般都远远小于1,所以现在被改为了最多经过路由器的个数。每个路由器在转发数据报的时候就把TTL减1。因为占8位,表示范围0~255,至多经过255个路由器。
    9.协议 占8位即一个字节,表示此数据报携带的数据是何种协议,便于目的主机的IP层知道将数据部分上交给哪个协议处理。

    常用协议的字段值 补充说明

    10.首部检验和 占16位两个字节。只检验数据报的首部,不包括数据部分。因为数据报每经过一个路由器,路由器都要重新计算一个首部检验和(一些字段,比如生存时间、标志、片偏移等可能都会表变化)。不检验数据部分是为了减少计算的工作量。IP首部的检验和不采用负载的CRC检验码,采用计算量更小的方法。在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零,用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码运算相加一次,将得到的和取反码,得出接受方检验和的计算结果。若首部未发生任何变化,则此结果必为0。于是就保留这个数据报,否则就认为有差错丢弃。

    IP数据报首部检验和计算过程

    11.源地址 占32位四个字节
    12.目的地址 占32位四个字节
    13.可变部分
    IP数据报首部的可变部分就是一个选项字段。用来支持排错、测量以及安全等措施。此字段长度可变,1~40个字节。某些选项项目只需要1个字节,只包括1一个字节的选项代码;有些选项需要多个字节,选项一个个拼接起来,中间无需分隔符,最后全0填充补齐为4个字节的整数倍。
    增加首部的可变部分是为了增加IP数据报的功能,但也使IP数据报的首部长度成为可变,增加路由器处理数据报的开销。但这些选项很少被使用,许多路由器不考虑IP首部的选项字段。新版IPv6数据报的首部长度是固定的。

    IP数据报的首部中没有指定目的路由器的IP地址,只有源IP地址和目的主机IP地址,中间要经过许多路由器,如何知道这些路由器的IP地址呢?
    当路由器收到一个待转发的数据报,会先从路由表中得出下一跳路由器的IP地址,将此IP地址交给数据链路层的网络接口软件。软件利用ARP将此IP地址转换成下一跳路由器的MAC地址,并放到链路层的MAC帧的首部。依次这样直到到达目的主机的上层路由器。由此可见,数据报在每个路由器都会经历查找路由表、ARP拿到下一跳路由器MAC地址、将MAC地址写入MAC帧首部,每次重复这些造成了一定的开销。

    参考资料
    计算机网络第七版

    相关文章

      网友评论

          本文标题:计算机网络——网络层

          本文链接:https://www.haomeiwen.com/subject/emrmdxtx.html