[TOC] # 什么是协议 > 协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序 * 为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。 * 协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。 * 协议总是指某一层的协议。准确地说,它是在同等层之间的实体通信时,有关通信规则和约定的集合就是该层协议,例如物理层协议、传输层协议、应用层协议。 * 网络协议三要素: (1)语法:即数据与控制信息的结构或格式; (2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应; (3)时序(同步),即事件实现顺序的详细说明。 # 基本原理 ## ISO/OSI协议模型 * 国际标准化组织(ISO)为了规范协议层次的划分制定了开发系统互联(OSI,Open Systems Interconnection)模型,即ISO/OSI参考模型。 * 此模型根据网络功能制定出7层网络协议结构,每层都可以有几个子层。 * OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端,点到点的数据流。 :-: ![OSI模型](https://img.kancloud.cn/01/91/0191a2960ebcb7d5b3c88f5b85bde090_253x511.png) * 物理层:简单地说,物理层协议对与基本物理信号传输有关的机械、电气等功能进行描述。若生产相互连接的两个设备的两个厂商都遵循相同物理层规范,则二者必定能被连接在一起,并能接收对方发来的电、光或其他的物理信号,而且能正确地将这些物理信号理解为二进制的0和1序列。物理层只负责正确地接收和发送比特,并不关心这些比特的具体含义。 * 数据链路层:数据链路层简称链路层,它依赖物理层提供的比特传输能力把数据组织成为有边界的传输单位,称为“帧”。链路层把来自网络层的数据组织成“帧”,然后再通过物理层向外发送。当然,链路层也要负责从来自物理层的比特序列(或者字节序列)中区分出一个个的帧,并将帧中的数据传递给网络层。为了将各个帧区分开来,需要在帧的头部和尾部附加一些特点的信息,这个过程称为“封装”,其相反的过程称为“解封装”。“封装”的概念不只在链路层中存在,在更高的各层协议中同样存在。所有层上的“封装”问题的共同特征是把来自高层的封装单位根据本层的需要附加上特定信息形成本层的封装单位,然后向低层传递,同时把来自低层的数据解封装后向高层传递。另外,链路层还可以有其他的诸如差错校验、流量控制等功能,但要理解整个协议体系,则首先应记住它和帧之间的密切关系,因为帧使无头无尾的比特序列变成容易控制的有界单位。 * 网络层:网络层解决如何标识通信各方和数据如何从源到达目的这个问题。网络层用特定的网络层地址来标识整个网络中的一个节点,并负责使来自传输层的应该到达某个网络层地址的数据能够被送达这个网络层地址所对应的网络节点。网络层的封装单位称为“包”,“包”需要被进一步封装成链路层的帧然后才能通过物理层发送出去,而在接收方,包在链路层的帧中被解封装出来。最典型的的网络层协议就是在Internet中使用的IP协议,它使用IP地址唯一地标识Internet中的一台主机,路由设备根据IP包中的目的IP地址将IP包一步步转发至目的主机。 * 传输层:依赖物理层、数据链路层和网络层,任意一个网络节点都能把任何信息传递到其他任意节点,而传输层在物理层、数据链路层和网络层提供的节点间的通信能力基础上进一步提供了面向应用的服务。传输层向上层提供屏蔽了传输细节的数据传输服务,将来自高层的数据进行分段并将来自低层的数据重组,对数据传输进行差错恢复和流量控制。通过对每个网络节点的多个进程进行标识,传输层可以实现对网络层的多路复用。 * 会话层:会话层用于建立和管理不同主机的两个进程之间的对话。会话层可以管理对话,可允许对话在两个方向上同时进行,也可以强制对话同时只在一个方向上进行。在后一种情况下,会话层可以提供会话令牌来控制某时刻哪一方可以发生数据。会话层还可以提供同步服务,它可以在数据流中插入同步点,每当因网络出现故障而造成大量数据传输中断时,通过同步点机制可以使两个进程之间的数据传输不需要从头开始,而是从最后一个同步点开始继续传输。 * 表示层:表示层协议规定对来自应用层的数据如何进行表达,例如采用什么样的文字编码、是否及如何进行压缩、是否及如何加密等。 这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。 * 应用层:应用层四ISO/OSI模型中最靠近用户的一层,应用层协议直接面对用户的需求,例如与发送邮件相关的应用层协议可以规定诸如邮件地址的格式、邮件内容的段落表示、客户与服务器进行交互的命令串等。 # 常用的协议 ## TCP/IP协议 **TCP/IP**协议作为互联网的基础协议,没有它就根本不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。不过TCP/IP协议也是这三大协议中配置起来最麻烦的一个通过局域网访问互联网的话,要详细设置IP地址,网关,子网掩码,DNS服务器等参数。 TCP/IP尽管是最流行的网络协议,但TCP/IP协议在局域网中的通信效率并不高,使用它在浏览“网上邻居”中的计算机时,经常会出现不能正常浏览的现象。此时安装NetBEUI协议就会解决这个问题。 ## NetBEUI协议 **NetBEUI**即NetBios Enhanced User Interface ,或NetBios增强用户接口。它是NetBIOS协议的增强版本,曾被许多操作系统采用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI协议在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议。NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。所以建议除了TCP/IP协议之外,小型局域网的计算机也可以安上NetBEUI协议。另外还有一点要注意,如果一台只装了TCP/IP协议的WINDOWS98机器要想加入到WINNT域,也必须安装NetBEUI协议。 ## IPX/SPX协议 **IPX/SPX**协议本来就是Novell开发的专用于NetWare网络中的协议,但是也非常常用–大部分可以联机的游戏都支持IPX/SPX协议,比如星际争霸,反恐精英等等。虽然这些游戏通过TCP/IP协议也能联机,但显然还是通过IPX/SPX协议更省事,因为根本不需要任何设置。 # OSI参考模型中每个分层的作用及常用协议 :-: ![OSI参考模型中每个分层的作用及常用协议](https://img.kancloud.cn/17/f3/17f30ade48d52912c88ff017de965b5c_494x760.png) :-: ![](https://img.kancloud.cn/4a/d8/4ad82f07275b326e79baa86df9f2aea4_512x383.png) :-: ![](https://img.kancloud.cn/46/e9/46e9ac3bac038043c276adc8a451e351_1120x1587.png) ## 物理层 * 物理层:负责0、1 比特流(0/1序列)与电压的高低、逛的闪灭之间的转换 规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性;该层为上层协议提供了一个传输数据的物理媒体。只是说明标准 在这一层,数据的单位称为比特(bit) 属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi令牌环网等 ## 数据链路层 * 数据链路层:负责物理层面上的互联的、节点间的通信传输(例如一个以太网项链的2个节点之间的通信);该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 在这一层,数据的单位称为帧(frame) 数据链路层协议的代表包括:ARP、RARP、SDLC、HDLC、PPP、STP、帧中继等 ## 网络层 * 网络层:将数据传输到目标地址;目标地址可以使多个网络通过路由器连接而成的某一个地址,主要负责寻找地址和路由选择,网络层还可以实现拥塞控制、网际互连等功能 在这一层,数据的单位称为数据包(packet) 网络层协议的代表包括: (1)IP(Internet Protocol)网络之间互连的协议 (IPV4或IPV6),设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务。 (2)ARP(Address Resolution Protocol ) 地址解析协议,实现通过IP地址得知其物理地址,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 (3)RARP(Reverse Address Resolution Protocol ) 反向地址转换协议允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN (4)ICMP(Internet Control Message Protocol)Internet 控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 (5)IGMP(Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP 主机向任一个直接相邻的路由器报告他们的组成员情况。 IPX.该协议运行在主机和组播路由器之间。IGMP协议共有三个版本,即IGMPv1、v2 和v3。 (6)RIP(路由信息协议)是一种在网关与主机之间交换路由选择信息的标准,基于距离矢量算法的路由协议,利用跳数来作为计量标准。在带宽、配置和管理方面要求较低,主要适合于规模较小的网络中。 (7)OSPF(Open Shortest Path First )开放式最短路径优先,是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路,也支持多种路由形式,如特定主机路由和子网路由等。 (8)BGP(Border Gateway Protocol)边界网关协议,用来连接Internet上独立系统的路由选择协议。是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。 ## 传输层 * 传输层:只在通信双方的节点上(比如计算机终端)进行处理,而无需在路由器上处理,传输层是OSI中最重要、最关键的一层,是唯一负责总体的数据传输和数据控制的一层; 传输层提供端到端的交换数据的机制,检查分组编号与次序,传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息主要功能 在这一层,数据的单位称为数据段(segment) 主要功能: ①:为端到端连接提供传输服务 ②:这种传输服务分为可靠和不可靠的,其中Tcp是典型的可靠传输,而Udp则是不可靠传输 ③:为端到端连接提供流量控制,差错控制,服务质量(Quality of Service,QoS)等管理服务 包括的协议如下: Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。 (1)TCP(Transmission Control Protocol)传输控制协议,传输效率低,可靠性强,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。 (2)UDP(user datagram protocol )用户数据报协议,适用于传输可靠性要求不高,数据量小的数据(比如QQ),UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法. (3)DCCP(Datagram Congestion Control)数据报拥塞控制协议 (4)SCTP(Stream control transmission)流控制传输协议,是一种在网络连接两端之间同时传输多个数据流的协议。SCTP提供的服务于UDP和TCP类似。 (5)RTP(Real-time Transport Protocol )实时传送协议,为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于底层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。 (6)RSVP(Resource ReSer Vation Protocol )资源预留协议,是一种用于互联网上质量整合服务的协议。RSVP 允许主机在网络上请求特殊服务质量用于特殊应用程序数据流的传输。路由器也使用 RSVP 发送服务质量(QOS)请求给所有结点(沿着流路径)并建立和维持这种状态以提供请求服务。 (7)PPTP(Point to Point Tunneling Protocol)点对点隧道协议,就是点对点协议(PPP)为基于点对点连接的多协议自寻址数据包的传输提供了一个标准方法. ## 会话层 * 会话层:负责建立和断开通信连接(数据流动的逻辑通路),记忆数据的分隔等数据传输相关的管理 >应用层、表示层、会话层这三层,协议可以共用: :-: ![](https://img.kancloud.cn/50/e6/50e64bf4edf283b108095fb53458d9fe_690x226.png) ## 表示层 * 表示层:将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式;主要负责数据格式的转换,确保一个系统的应用层信息可被另一个系统应用层读取 具体来说,就是将设备固有的数据格式转换为网络标准传输格式,不同设备对同一比特流解释的结果可能会不同;因此,主要负责使它们保持一致 ## 应用层 * 应用层协议如下: (1)域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。也就是一种用以将域名转换为IP地址的Internet服务 (2)文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。提供交互式的访问,基于客户服务器模式,面向连接 使用TCP可靠的运输服务 主要功能:减少/消除不同操作系统下文件的不兼容性 (3)简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能。Client/Server模式,面向连接 基本功能:写信、传送、报告传送情况、显示信件、接收方处理信件 (4)超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。这是一种最基本的客户机/服务器的访问协议;浏览器向服务器发送请求,而服务器回应相应的网页 (5)简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。 (6)远程登录协议(Telnet):用于实现远程登录功能。客户服务器模式,能适应许多计算机和操作系统的差异,网络虚拟终端NVT的意义 (7)NFS(Network File System),网络文件系统能使使用者访问网络上别处的文件就像在使用自己的计算机一样,NFS 允许计算的客户 — 服务器模型。服务器实施共享文件系统,以及客户端所连接的存储。客户端实施用户接口来共享文件系统,并加载到本地文件空间当中. (8)简单文件传送协议TFTP:客户服务器模式,使用UDP数据报,只支持文件传输,不支持交互,TFTP代码占内存小 (9)简单网络管理协议(SNMP): SNMP模型的4个组件:被管理结点、管理站、管理信息、管理协议 SNMP代理:运行SNMP管理进程的被管理结点 对象:描述设备的变量 管理信息库(MIB):保存所有对象的数据结构 (10)DHCP动态主机配置协议: 发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名 Options –可选参数字段,参考定义选择列表中的选择文件 (11) Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议),Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。允许用户使用层叠结构的菜单与文件,以发现和检索信息,它拥有世界上最大、最神奇的编目。这是一种互联网没有发展起来之前的一种从远程服务器上获取数据的协议。Gopher协议目前已经很少使用,它几乎已经完全被HTTP协议取代了。 (12)IRC (Internet Relay Chat )网络聊天协议,因特网中继聊天,一般称为互联网中继聊天,简称:IRC。 IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。 IRC用户使用特定的用户端聊天软件连接到IRC服务器,通过服务器中继与其他连接到这一服务器上的用户交流,所以IRC的中文名为“因特网中继聊天”。 (13)NNTP (Network News Transport Protocol) 网络新闻传输协议 (14)POP3 (Post Office Protocol 3)邮局协议的第三个版本,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。 (15)RPC (Remote Procedure Call Protocol)远程过程调用协议,SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。 (16)NTP(Network Time Protocol) 网络校时协议,是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。 原文链接:https://blog.csdn.net/xxx0028/article/details/104561535