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

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

举一个典型交互过程:

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

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

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

    Web表单 Web 表单是 Web 应用程序的基本功能. 它是HTML页面中负责数据采集的部件.表单有三个部分组成:表单标签.表单域.表单按钮.表单允许用户输入数据,负责HTML页面数据采集,通过表单 ...

  2. 词频统计 ——Java

    github地址 :https://github.com/NSDie/personal-project 一.计划表 PSP2.1 Personal Software Process Stages 预估 ...

  3. APUE学习笔记——10信号——信号接口函数 signal 和 sigaction

    signal函数     signal函数是早起Unix系统的信号接口,早期系统中提供不可靠的信号机制.在后来的分支中,部分系统使用原来的不可靠机制定义signal函数,如 Solaris 10 .而 ...

  4. node中的一些诡异bug

    这种bug一般是监听的端口号被占用了导致的,换个端口号!!!!

  5. VS2010上写QT代码,但是显示不出来QString的值-解决办法

    我的配置是vs2010和qt,debug下看不到 QString的值 根据 http://www.cnblogs.com/russinovich/archive/2012/06/29/2569898. ...

  6. caffe配置

    2016年最开心的事哈哈哈. 基本参照它. http://www.linuxdiyf.com/linux/12708.html 有时间在稍微写点. linux下:(装上GPU之后,在bois貌似禁止了 ...

  7. Loj 538 递推数列

    Loj 538 递推数列 出题人:这题提高难度吧.于是放在了%你赛的 \(D1T2\) . 递推式为 \(a_i=k*a_{i-1}+a_{i-2}\) , 注意到 \(k\in \mathbb{N_ ...

  8. BZOJ1304 CQOI2009 叶子的染色 【树形DP】

    BZOJ1304 CQOI2009 叶子的染色 Description 给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根.内部结点和叶子均可)着以黑色或白色.你的着色方 ...

  9. hbase单机及集群安装配置,整合到hadoop

    问题导读:1.配置的是谁的目录conf/hbase-site.xml,如何配置hbase.rootdir2.如何启动hbase?3.如何进入hbase shell?4.ssh如何达到互通?5.不安装N ...

  10. Clairewd’s message(哈希模板+)

    个人心得:一开始就是知道用哈希,但是无从下手,很明显是对哈希不太了解和思维不太好. 先来看一下这一题涉及到的哈希吧和这题的思路吧,思路就是对所给的密文用原文和翻译后进行hash处理,那么必然存在后面那 ...