计算机网络学习(4):网络协议与标准

发布时间:2020-07-29 18:55:49 作者:lengxujun
来源:网络 阅读:1324

最知名的网络协议就是TCP/IP协议了。事实上,TCP/IP协议是一个协议集,由很多协议组成。TCP和IP

协议是这个协议集中两个,TCP/IP协议集是用这两个协议来命名的。

TCP/IP协议集中的每一个协议涉及的功能,都用程序来实现。TCP协议和IP协议有对应的TCP程序和IP程

序。

 

根据TCP协议我们了解到,网络协议是一个约定,该约定规定了:

① 实现这个协议的程序要完成什么功能;

② 如何完成这个功能;

③ 实现这个功能需要的通讯的报文包的格式。

 

如果一个网络协议涉及了硬件的功能,通常就被叫做标准,而不再称为协议了。网络标准还需要约定硬

件的物理尺寸和电气特性。

 

ISO发布了注明的开放系统互联参考模型(Open System Interconnection Reference Model),简称OSI。

OSI模型详细规定了网络需要实现的功能、实现这些功能的方法、以及通讯报文包的格式。但是,没有

一个厂家遵循OSI模型来开发网络产品。不论是网络操作系统还是网络设备,不是遵循厂家自己制订的

协议(Novell公司的Novell协议,苹果公司的AppleTalk、微软公司的NetBEUI、IBM公司的SNA),就是

遵循某个政府部门制订的协议(如TCP/IP协议)。而现在TCP/IP已经占主流。

 

4.1 OSI模型

    计算机网络学习(4):网络协议与标准

    图4.1 OSI模型的7层协议

 

    当需要把一个数据文件发送往另外一个主机之前,这个数据要经历这7层协议每一层的加工。例如我

    们要把一封邮件发送往服务器,当我们在Outlook中编辑完成,按发送键后,Outlook就会把我们的

    邮件交给第7层中按POP3或SMTP协议编写的程序。POP3或SMTP程序按自己的协议整理数据格式,然后

    发给下面层的某个程序。每个层(除了物理层,它是硬件电路和网线,不再加工数据)也会对数据

    格式做一些加工,还会用报头的形式增加一些信息。经过加工后的数据以帧的形式交给物理层,物

    理层的电路再以位流的形式发送数据到网络中。

    接受方的过程是相反的,物理层接收到数据后,以相反的顺序遍历OSI的所有层,使接收方收到这个

    电子邮件。接收方的主机,每一层都会阅读本层对应的报头,拆除自己层的报头把数据传送给上一

    层。

 

    计算机网络学习(4):网络协议与标准

    图4.2 OSI模型的7层协议功能描述

 

4.2 TCP/IP协议

    计算机网络学习(4):网络协议与标准

    图4.3 OSI模型和TCP/IP协议集模型对比

    

    TCP/IP协议是一个协议集,它由十几个协议组成。

    

    计算机网络学习(4):网络协议与标准

    图4.4 TCP/IP协议集中的各个协议

 

    主要的TCP/IP协议有:

    . 应用层:FTP,TFTP,Http,SMTP,POP3,SNMP,DNS,Telnet

    . 传输层:TCP,UDP

    . 网络层:IP,ARP,RARP,ICMP,RIP,IGRP,OSPF

    

    4.2.1 应用层协议

          FTP:文件传输协议。用于主机间文件交换。FTP使用TCP协议进行数据传输,是一个可靠的、

               面向连接的协议。FTP支持二进制文件和ASCII协议。

          TFTP:简单的文件传输协议。它比FTP简易,是一个非面向连接的协议,使用UDP进行传输,

                因此传送速度更快。该协议多用于局域网中,交换机和路由器把自己的配置文件传

                送到主机上。

          SMTP:简单邮件传输协议。

          POP3:邮件传输协议,比SMTP更科学,本不属于TCP/IP协议集。

          Telnet:远程终端仿真协议。可以使一台主机远程登录到其他机器,成为那台远程主机的显

                  示和键盘终端。

          DNS:域名解析协议。根据域名,解析出对应的IP地址。

          SNMP:简单网络管理协议。网管工作站搜集、了解网络中交换机、路由器等设备的工作状态

                所使用的协议。

          NFS:网络文件系统协议。允许网络上的其他主机共享某台机器目录的协议。

    

    4.2.2 传输层协议

          TCP/IP协议集在传输层只有两个协议:传输控制协议(TCP)和用户数据报协议(UDP)。

 

          TCP协议要完成5个主要功能:

          . 端口地址寻址;

          . 连接的建立、维护与拆除;

          . 流量控制;

          . 出错重发;

          . 数据分段。

 

          (1) 端口地址寻址

              端口地址到底有什么用呢?当数据报到达主机后,链路层的程序会通过数据报的帧报尾

              进行CRC校验,校验合格的数据帧被去掉帧报头向上交给IP程序。IP程序去掉报头后,

              再向上把数据交给TCP程序。待TCP程序把TCP报头去掉后,它把数据交给谁呢?这时,

              TCP程序就可以通过TCP报头中由源主机指出的端口地址,了解到发送主机希望目标主机

              的什么应用程序接收这个数据报。

              因此,端口地址寻址是对应用层程序寻址

 

              计算机网络学习(4):网络协议与标准

              图4.5 常用端口地址

 

              详细的端口号编排可以在TCP/IP的注释RFC1700查到。

              TCP/IP规定端口号的编排方法:

              低于255的编号:用于FTP、Http这样的公共应用层协议。

              255到1023的编号:提供给操作系统开发公司,为市场化的应用层协议编号。

              大于1023的编号:普通应用程序。

              端口号的编码范围从0到65535。从1024到49151的地址范围需要注册使用,49152到

              65535的地址范围可以自由使用。

 

              端口地址被源主机在数据发送前封装在其TCP报头或UDP报头中。图4.6给出了TCP报头

              的格式:

              计算机网络学习(4):网络协议与标准

              图4.6 TCP报头格式

 

              计算机网络中约定,当一台主机向另一台主机发出连接请求时,这台发送请求的机器被

              视为客户机,而那台接受请求的机器被视为服务器。通常,客户机在给自己的程序编端

              口号时,随机使用一个大于1023的编号。例如一台主机访问WWW服务器,在其TCP报头中

              的源端口地址封装为1391,目标端口地址则需要为80,指明与Http通讯。

              

          (2) TCP连接的建立、维护与拆除

              TCP协议是一个面向连接的协议,所谓面向连接,是指一台主机需要和另外一台主机通

              讯时,需先呼叫对方,请求与对方建立连接,只有对方同意,才能开始通讯。

              所谓呼叫,就是连接的发起方发送一个“建立连接请求”的报文给对方,对方如果同

              意这个连接,就简单的发回一个“连接响应”的应答包,连接就建立起来了。

              图4.7描述了TCP建立连接的过程。

              计算机网络学习(4):网络协议与标准

              图4.7 建立TCP连接

 

              主机A希望与主机B建立连接以交换数据,它的TCP程序首先构造一个请求连接报文包给对

              方,请求连接包的TCP报头中报文性质码标志为SYN(见图4.8),声明是一个“连接请求

              包”。主机B的TCP程序收到主机A的连接请求后,如果同意这个连接,就发回一个“确

              认连接包”,应答A主机。主机B的“确认连接包”的TCP报头中的报文性质码标志为

              ACK。

              

              计算机网络学习(4):网络协议与标准

              图4.8 SYN标志位和ACK标志位

              

              SYN和ACK是TCP报头中报文性质码的连接标志位(见图4.8),建立连接时,SYN标志置

              1,ACK标志置0,表示本报文包是个同步包;确认连接包,ACK置1,SYN置1,表示本报

              文包是确认包。

 

              从图4.7可以看到,建立连接的第3个包,是主机A对主机B的连接确认。主机A为什么要发

              送第3个包呢?

              注:这里的第3个包是这样计算得来的:主机A连接请求包是第1个包,主机B的应答包是

                  第2个包,主机A收到主机B的应答包后再发的包(ACK=y+1)就是第3个包了。

              继续讨论为什么要发第3个包。考虑这样一种情况:主机A发送一个请求包,但这个请求

              包在传输过程中丢失主机A再重发连接请求包,第2个连接请求包到达主机B,保证了

              连接的建立。但是如果连接请求包没有丢失而只是网络慢而导致主机A超时呢?这就会

              使主机B收到两个连接请求包,使主机B误以为第2个连接请求是主机A的又一个请求。第

              3个确认包就是为防止这样的错误而设计的。这样的连接机制被称为三次握手

              从TCP程序设计的深层看,源主机发送“连接请求包”是为了触发对方主机的TCP程序开

              辟一个对应的TCP进程。你的主机可以邀请对方开辟多个TCP进程,同时进行多路通讯。

              FLOOD******就是采用无休止的邀请对方建立连接,使对方主机开辟无数个TCP进程与

              之连接,最后耗尽对方主机资源。

 

              可以理解,当通讯结束时,发起连接的主机应该发送拆除连接的报文包,通知对方主机

              关闭响应的TCP进程,释放资源。拆除连接报文包的TCP报头中,报文性质码的FIN标志

              置1。

              为了防止连接双方的一侧出现故障后异常关机,而另外一方的TCP进程无休止地驻留,任

              何一方如果发现对方长时间没有通讯流量,就会拆除连接

              但是有时确实有一段时间没有流量,但还需要保持连接,就需要发送空的报文包,以维

              持这个连接。维持连接的报文包叫:keepalive。为了在一段时间内没有数据发送但还

              需要保持连接而发送keepalive包,被称为连接的维护

 

          (3) TCP报头中的报文序号

              TCP是将应用层交给的数据分段发送的。为了支持数据出错重发和数据段组装,TCP为

              每个数据段封装的报头中,设计了两个数据报序号字段,分别称为发送序号确认序

              号

              

              出错重发是指一旦发现有丢失的数据段,可以重发丢失的数据,以保证数据传输的完整

              性。如果数据没有分段,出错后源主机就不得不重发整个数据。为了确认丢失的数据是

              哪个数据段,报文就需要安装序号。

              

              数据分段可以使报文在网络中的传输非常灵活。一个数据的各个分段,可以选择不同的

              路径到达目标主机。由于网络中各条路径在传输速度上不一致性,有可能前面发出的数

              据段后到达,而后出发的数据段先到达。为了使目标主机能够按照正确的次序重新装配

              数据,也需要在数据段的报头中安装序号。

              

              TCP报头中的第3,4个字段分别是发送序号和确认序号。发送序号是指本数据段是第几个

              报文包,确认序号是指对方发来的下一个数据段该是第几号段。


              计算机网络学习(4):网络协议与标准

              图4.9 发送序号与确认序号

 

          (4) PAR出错重发机制

              在网络中有两种情况会丢失数据包。如果网络设备的负荷太大,当其数据包缓冲区满的

              时候,就会丢失数据包。另外一种情况是,如果在传输中因为噪声干扰、数据碰撞或设

              备故障,数据包就会受到损坏。在接受主机的链路层接受校验时就会被丢弃。

 

              发送主机应发现丢失的数据段,并重发出错的数据。

 

              TCP使用PAR(Positive Acknowledgement and Retransmission)的出错重发方案。

 

              TCP程序在发送数据时,先把数据段都放到其发送窗口中,然后发送出去。然后,PAR会

              为发送窗口中每个已发送的数据段启动定时器,被对方主机确认收到的数据,将从发送

              窗口中删除。如果某数据段的定时时间到,仍然没有收到确认,PAR就会重发这个数据

              段。

              

              计算机网络学习(4):网络协议与标准

              图4.10 PAR出错重发机制

 

              在图4.10中,发送主机的2号数据段丢失,接收主机只确认了1号数据段。发送主机从发

              送窗口中删除已确认的1号包,放入4好数据段,将2,3,4号发送出去,其中,2,3是重发

              的数据段。你会发现,尽管数据段3已经被接收主机收到,仍然被重发,这显然是一种

              浪费。但是PAR机制只能这样处理,因为只有一个确认序号字段,如果有丢失大于一个数

              据段,一个确认序号无法记录多个丢失数据包。而单独设计一个包来通知源主机也不

              行,因为这个通知包也丢失了该怎么办呢?

 

         (5) TCP流量控制

             如果接收主机同时与多个TCP通讯,接收的数据包的重新组装需要在内存中排队。如果

             接收主机的负荷太大,因为内存缓冲区满,就有可能丢失数据。因此,当接收主机无法

             承受发送主机的发送速度时,就需要通知发送主机放慢数据的发送速度。事实上,接收

             主机并不是通知发送主机放慢发送速度,而是直接控制发送主机的发送窗口大小。接收

             主机如果需要对方放慢数据的发送速度,就减小数据报中TCP报头里“发送窗口”字段

             的数值。对方主机必须服从这个数值,减小发送窗口的大小,从而降低了发送速度。

 

             计算机网络学习(4):网络协议与标准

             图4.11 TCP流量控制

              

             极端的情况,如果接收主机把窗口大小字段设为0,发送主机将暂停发送数据。有趣的

             是,尽管发送主机接受接收主机的窗口设置降低了发送速度,但是,发送主机会自己渐

             渐扩大窗口,这样做的目的是尽可能的提高数据的发送速度。也就是说,发送主机会降

             低发送速度,但不一定会减小窗口大小。

             在实际中,TCP报头中的窗口字段不是用数据段的个数来说明大小,而是以字节数来说

             明大小。

 

         (6) UDP协议

             TCP/IP协议集中设计了另外一个传输层协议:无连接数据传输协议(Connectionless

             Data Transport Protocol)。这是一个简化了的传输层协议。UDP去掉了TCP协议5个功

             能中的3个:

             连接建立、流量控制、出错重发,只保留端口寻址和数据分段2个功能。

 

             UDP通过牺牲可靠性换得通讯效率的提供。对于那些数据可靠性要求不高的数据传输,

             可以使用UDP协议完成。如DNS,SNMP,TFTP,DHCP。

              

             UDP的报头格式非常简单,核心内容只有源端口地址和目标端口地址两个字段。DHCP的

             细节详见RFC768。

 

             计算机网络学习(4):网络协议与标准

             图4.12 UDP报头格式

 

             UDP程序需要与TCP一样完成端口地址寻址和数据分段两个功能。但是它不知道数据包是

             否到达目标主机,接收主机也不能抑制发送数据的速度。由于数据报中不再有报文序

             号,一旦数据包沿不同路径到达目标主机的次序出现变化,目标主机也无法按正确的次

             序纠正这样的错误。

 

     4.2.3 网络层协议

           TCP/IP协议集中最重要的网络层协议是IP和ARP。除了这两个协议外,网络层还有一些其

           它的协议,如RARP,DHCP,ICMP,RIP,IGRP,OSPF等。这些协议的功能是:


           IP协议:

                   用于将多个包交换网络连接起来的。


           ARP(Address Resolution Protocol)协议

                   根据IP地址获取MAC地址


           RARP(Reverse Address Resolution Protocol)协议

                   将局域网中某个主机的MAC地址转换为IP地址


           BOOTP(Bootstrap Protocol)协议

                   是一种引导协议,基于IP/UDP协议,也称自举协议,是DHCP协议的前身。BOOTP用

                   于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址。通过

                   BOOTP协议可以为局域网中的无盘工作站分配动态IP地址,这样就不需要管理员去为

                   每个用户去设置静态IP地址。


           DHCP(Dynamic Host Configuration Protocol)协议

                   是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网

                   络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央

                   管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68

                   为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号

                   端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别

                   开启的服务,DHCP failover是用来做“双机热备”的。


           ICMP(Internet Control Message Protocol)协议

                    Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间

                    传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身

                    的消息。


           RIP协议

           是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由

                    信息的传递。RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即

                    metric)来衡量到达目标地址的路由距离。这种协议的路由器只关心自己周围的世界,只与

                    自己相邻的路由器交换信息,范围限制在15跳(15度)之内,再远,它就不关心了。RIP应

                    用于OSI网络七层模型的应用层。

                    各厂家定义的管理距离(AD,即优先级)如下:

                    华为定义的优先级是100,思科定义的是120。


           IGRP(Interior Gateway Routing Protocol)协议

           是一种内部网关路由协议,它由Cisco公司八十年代中期设计。


           OSPF(Open Shortest Path First 开放式最短路径优先)协议

                   是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统

                   (Autonomous System,AS)内决策路由

 

4.3 IEEE 802标准

    TCP/IP没有对OSI模型最下面两层的实现,TCP/IP协议主要是在网络操作系统中实现的。主机中的

    应用层、传输层、网络层任务由TCP/IP程序来完成,而主机OSI模型的最下面两层数据链路层和物

    理层的功能由网卡制造厂商的程序和硬件电路来完成。

      

    网络设备厂商在制造网卡、交换机、路由器的时候,其数据链路层和物理层的功能是依照IEEE

    802规范,也没有按照OSI的具体协议开发。


    IEEE制订的802规范标准规定了数据链路层物理层功能是:

    . 物理地址寻址

      发送方需要对数据包安装帧报头,将物理地址封装在帧报头中。接收方能够根据物理地址识别

      是否是发给自己的数据。


    . 介质访问控制

      如何使用共享传输介质,避免介质使用冲突。

      知名的介质访问控制技术有以太网技术、令牌网技术、FDDI技术等。


    . 数据帧校验

      数据帧在传输过程中是否受到损坏,丢弃损坏了的帧。      


    . 数据的发送和接收

      操作内存中的待发送数据向物理层电路中发送的过程。在接收方完成相反的操作。

 

    IEEE 802根据不同功能,有相应的协议规范,统称为IEEE 802x标准。

    图4.13列出了现在流行的IEEE 802标准。

    

    计算机网络学习(4):网络协议与标准

    图4.13 IEEE协议标准


    由图4.13可见,OSI模型把数据链路层又划分为两个子层:

    逻辑链路控制(LLC: Logical Link Control)子层

    和

    介质访问控制(MAC: Media Access Control)子层


    LLC子层任务是提供网络层程序与链路层程序的接口,使得链路层主体MAC子层的程序设计独立于

    网络层的某个具体协议程序。这样设计是有必要的,例如新的网络层协议出现时,只需要为这个新

    的网络层协议程序写出对应的LLC子层接口程序,就可以使用已有的链路层程序,而不需要全部推翻

    过去的链路层程序。

    

    MAC子层完成所有OSI对数据链路层要求完成的功能:物理地址寻址、介质访问控制、数据帧校验、

    数据发送与接收的控制。


    IEEE 802.2协议对应OSI模型的LLC子层。


    IEEE 802x的核心标准是10余个跨越MAC子层和物理层的设计规范。下面列出了一些常见的IEEE 802

    协议:


    IEEE 802.3

    以太网标准协议规范,提供10M局域网的介质访问控制子层和物理层设计标准。


    IEEE 802.3u

    快速以太网标准规范,提供100M局域网的介质访问控制子层和物理层设计标准。


    IEEE 802.3ab

    千兆以太网标准规范,提供1000M局域网的介质访问控制子层和物理层设计标准。


    IEEE 802.5

    令牌环网标准规范,提供令牌环网的介质访问控制子层和物理层设计标准。


    IEEE 802.11

    无线局域网标准规范,提供2.4G微波波段1-2Mbps低速WLAN的介质访问控制子层和物理层设计标准。

    

    IEEE 802.11a

    无线局域网标准规范,提供5G微波波段54Mbps高速WLAN的介质访问控制子层和物理层设计标准。


    IEEE 802.11b

    无线局域网标准规范,提供2.4G微波波段11Mbps高速WLAN的介质访问控制子层和物理层设计标准。


    IEEE 802.11g

    无线局域网标准规范,提供IEEE 802.11a和IEEE 802.11b兼容标准。

    

    IEEE 802.14

    有线电视网标准规范,提供Cable Model技术所设计的介质访问控制子层和物理层设计标准。



推荐阅读:
  1. redis学习4---集群
  2. 你应该这个姿势学习PHP(4)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

网络 计算机 网络学习

上一篇:死磕 java线程系列之线程池深入解析——生命周期

下一篇:cocos2d-x3.0beta版+NDK-r9b在android上的启动过程

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》