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

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

举一个典型交互过程:

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

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

如今,各类协议在网络中被执行,因此,做一个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. canvas 遮罩

    上一篇介绍了CSS3可以实现mask的方式,本篇介绍canvas同样也可以实现遮罩的方法: 原理: canvas是在画布上绘图,可以绘制各种形状,同时可以在一个层上重复画图,默认情况下后面的会覆盖前面 ...

  2. 【javascript基础】JS计算字符串所占字节数

    废话不说,直接正题吧. 最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是U ...

  3. Windows平台编程涉及的函数

    VirtualAlloc 调用进程的虚拟地址空间 GetTickCount 返回从操作系统启动到当前所经历过的毫秒数 malloc.h内存分配函数,需要头文件malloc.h

  4. New Concept English three(11)

    Customs Officers are quite tolerant these days, but they can still stop you when you are going throu ...

  5. web.xml文件模板

     Servlet 2.3 deployment descriptor 注:web.xml中提示错误The content of element type "web-app" mus ...

  6. 《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件

    结果条件 在Java中,如果有重复的代码我们会考虑进行重构,抽取公共方法或继承父类,以减少相同的代码在多处出现,达到代码的最优管理和不必要的麻烦.Drools同样提供了类似的功能.下面我们以实例来逐步 ...

  7. [置顶] flume高并发优化——(15)中间件版本升级

    在系统平稳运行一年的基础上,为提供更好的服务,现针对java,kafka,flume,zk,统一进行版本升级,请各位小伙伴跟着走起来,不要掉队啊! 名称 老版本号 新版本号 jdk 1.7.0_25 ...

  8. Elasticsearch安装配置和测试

    官方教程:https://www.elastic.co/guide/en/elasticsearch/reference/master/_installation.html 中文教程:https:// ...

  9. iOS开发:UITableView的优化技巧-异步绘制Cell

    最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优 ...

  10. pandas.read_csv()参数(转载)

    文章转载地址 pandas.read_csv参数整理 读取CSV(逗号分割)文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见:http://pandas.pydata.org/p ...