协议?何谓协议?协议是用来干什么的?

与人类活动进行对比即可理解协议,因为我们无时无刻不在执行协议!

举一个典型交互过程:

  人类协议(至少说是好的行为方式)要求一方首先进行问候(张三对李四“你好”),以开始与另一个人的通信。对“你好”的典型响应是返回一个“你好”的报文。李四用一个热情的“你好”进行响应,隐藏着一种指示,表明张三能够继续向李四进行询问了。对最初的“你好”的不同响应(例如“不要烦我”“我不会说中文”或一些不合时宜的回答)也许表明了一个勉强的或者不能继续进行的通信。在此情况下,按照人类协议,张三也许不能继续向李四发送报文了。(注意在我们人类协议中,有我们发送的特定报文,也有我们根据接收到的应答报文或其他时间采取的动作,例如在某个时间内没有回答)。显然,这些报文的发送和接收或其他事件的出现时所采取的动作,这些在一个人类协议中起到了核心作用。如果人类适用不同的协议(例如,如果一个人讲礼貌,而另一个人不讲礼貌,或另一个人明白时间概念,而另一个人不知道),该协议就不能互动通信,因而不能完成部分工作。而在网络中这个道理是成立的。即为了完成一项工作,要求两个(或多个)通信实体运行相同的协议。

  而定义一个协议的关键元素是:一个协议定义了两个或者多个通信实体之间交换的报文格式和次序,以及报文发送和/或接受一条报文或其他时间所采取的动作。

如今,各类协议在网络中被执行,因此,做一个CheckList,先上大纲:

                    五层因特网协议栈

 应用层:

  应用层是网络应用程序及他们的应用层协议存留的地方。因特网的应用层包括许多协议,例如HTTP(它提供了Web文档的请求和传送),SMTP(它提供了电子邮件报文的传送)。

   应用层协议分布在多个端系统上,一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息的分组。我们将这种位于应用层的信息分组称之为报文。

传输层:

  因特网的传输层在应用程序端点之间传送应用层报文。在因特网中,有两个传输层协议,即TCP、UDP,利用其中的任一个都能传输应用层报文。TCP向它的应用程序提供了面向连接的服务(长连接)。这种服务包括了应用层报文向目的地的确保传递和流量控制(即发送方和接收方速率匹配)。TCP也将长报文划分为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。UDP协议向它的应用程序提供无连接服务。这是一种不提供不必要服务,没有可靠性,没有流量控制,也没有拥塞机制。

网络层:

  因特网的网络层负责将称为数据报的网络层分组从一台主机移动到另一台主机。在一台源主机中的因特网运输层协议(TCP或UDP)想网络层递交运输层报文段和目的地址,就像通过邮政服务寄信件时提供一个目的地址一样。

  因特网的网络层包括著名的IP协议,该协议定义了在数据报中的各个字段以及端系统和路由器如何作用于这些字段。仅有一个IP协议,所有具有网络层的因特网组件必须运行IP协议。因特网的网络层也决定路由的路由选择协议。它使得数据报根据该路由从源传输到目的地。因特网具有许多路由选择协议。因特网是一个网络的网络,在一个网络中,其网络管理者能够运行所希望的任何路由选择协议。尽管网络层包括了IP协议和一些路由选择协议,但通常把它简单地成为IP层,这反映了IP是将因特网连接在一起的粘合剂这样的事实。

链路层:

  因特网的网络层通过源和目的地之间的一些类路由器路由数据报。为了将分组从一个节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠该链路层的服务。特别是在每个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传送给下一个节点,在下个节点,链路层数据将数据报上传给网络层。

  由链路层提供的服务取决于应用于该链路的特定链路层协议。例如,某些协议基于链路提供可靠传递,从传输节点跨域一条链路到接收节点。值得注意的是,这种可靠的传递服务不同于TCP的靠靠传递服务,TCP提供从一个端系统到另一个端系统的可靠交付。链路层的例子包括以太网,WIFI和电缆接入网的DOCSIS协议。因为数据报从源到目的地传送通常需要经过几条链路,一个数据报可能被沿途不同链路上的不同链路层协议处理。例如,一个数据报可能被一段链路上的以太网和下一段链路上的PPP所处理。网络层将受到来自每个不同的链路层协议的不同服务。

物理层:

  虽然链路层的任务是将整个帧(链路层分组称为帧)从一个网络元素移动到临近的 网络元素,而物理层的任务是将该帧中的一个一个比特从一个节点移动到下一个节点。在这层中的协议仍然是链路相关的,并且进一步与该链路(如双绞铜线,单模光纤)的实际传输媒体相关。例如,以太网具有许多物理层协议:一个是关于双绞铜线的,另一个是关于同轴电缆的,还有一个是关于光纤的等等。在每种场合中,跨越这些链路移动一个比特是以不同的方式进行的。

                        OSI模型

  与因特网协议栈五层协议多出了表示层和会话层。(具体历史原因不计)

表示层:

  使通信的应用程序能够解释交换数据的含义。这些服务包含数据压缩,数据描述以及数据加密等。

会话层:

  提供了数据交换定界和同步功能,包括了建立检查点和恢复方案的方法。

                协议栈封装“信息”过程

            流行的因特网应用以及其下的运输层协议

协议栈CheckList的更多相关文章

  1. 基于netty http协议栈的轻量级流程控制组件的实现

    今儿个是冬至,所谓“冬大过年”,公司也应景五点钟就放大伙儿回家吃饺子喝羊肉汤了,而我本着极高的职业素养依然坚持留在公司(实则因为没饺子吃没羊肉汤喝,只能呆公司吃食堂……).趁着这一个多小时的时间,想跟 ...

  2. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  3. CANopen学习——协议栈

    协议,是双方都提前商量好的通讯约定. 例如:发送1代表灯亮,发送0代表灯灭. 但由于只是单bit的0和1在通信时,抗干扰太弱,且多种控制时不能区分,此时扩展一下协议. 例如:  头      地址   ...

  4. 【转】TCP/IP协议栈及OSI参考模型详解

    OSI参考模型 OSI RM:开放系统互连参考模型(open systeminterconnection reference model) OSI参考模型具有以下优点: 简化了相关的网络操作: 提供设 ...

  5. [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)

    说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...

  6. 企业管理咨询Interview Checklist

    企业管理咨询Interview Checklist 一. 企业战略 1. 您对公司所处行业的看法如何? 2. 请您介绍一下公司的发展历程,主要业务开展状况及核心竞争力.关键成功因素有哪些? 3. 在您 ...

  7. BLE 蓝牙协议栈开发

    1.由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(1) 2.由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(2) 3.由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(3)

  8. zigbee学习之路(十五):基于协议栈的按键实验

    一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BU ...

  9. zigbee学习之路(十四):基于协议栈的无线数据传输

    一.前言 上次实验,我们介绍了zigbee原理的应用与使用,进行了基于zigbee的串口发送协议,但是上个实验并没有实现数据的收发.在这个实验中,我们要进行zigbee的接受和发送实验. 二.实验功能 ...

随机推荐

  1. 實現多个checkbox單選功能(转)

    <script type="text/javascript">        function check(obj) {            var checkbox ...

  2. js函数的伪重载

    这也是今天写东西是遇到的一个问题,导致我联想起了函数重载的问题. 在javascript中是没有函数重载机制的,对于用惯了java开发的同学可能就表示吃惊了,我屮艸芔茻,函数 没有重载?那怎么搞?!! ...

  3. select2如何设置默认空值

    1.问题背景 select2搜索下拉框,当满足某种条件时,让它默认选中空值 2.问题原因 <!DOCTYPE html> <html> <head> <met ...

  4. EasyDSS流媒体服务器Linux emerg getpwnam("xxx") failed解决办法

    本文转自EasyDarwin开源团队Alex的博客:http://blog.csdn.net/cai6811376/article/details/73770943 EasyDSS 流媒体服务器是什么 ...

  5. VSS虚拟交换系统

    下面介绍一下如何在CISCO交换机上配置VSS,具体配置如下: //在CISCO1 上配置vss域,两台设备都要在同一个域中 Cisco-(confgi)#switch virtual domain ...

  6. Sqlalchemy 设置表编码及引擎

    1. 设置引擎编码方式为utf8. engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/sqldb01?ch ...

  7. 【pandas】pandas.Series.str.split()---字符串分割

    原创博文,转载请注明出处! 本文代码的github地址       series中的元素均为字符串时,通过str.split可将字符串按指定的分隔符拆分成若干列的形式. 例子: 拆分以逗号为分隔符的字 ...

  8. 【数据处理】OneHotEncoder编码

    原创博文,转载请注明出处! # OneHotEncoder编码      OneHotEncoder编码称为"哑编码"或"独热编码",是将表示分类的数据扩维度, ...

  9. Unity是什么?

    Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 1. 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被 ...

  10. How to Change the Size of a Box-Plot Label in MATLAB

    Type "load carsmall" to load a sample data set included with MATLAB. Type "boxplot(Ho ...