array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 计算机网络协议模型——看了这篇文章就明白了 - 爱码网

 计算机网络协议内容庞杂而且复杂,总让人学起来头大。但其实如果我们换个思路,按网络从无到有的创建过程来理解,学起来就没那么难了。

接下来我们就假设来到了计算机网络发明前的年代,全世界就只有你和我各有一台电脑,然后我们思考自己来一步步实现两台电脑的互联,完成后再考虑让更多的电脑加入这个网络,形成互联网。(文中的讲述的主要的思路和方法,具体细节可能与技术细节有出入)

  • 1 首先我们来思考什么是通信?

   所谓通讯,其实就是一个完整的沟通过程。比如,我因为有某个需求(想请你吃饭),找到你以后我把需求告诉你,然后你对我提出的需求做出回应。等我的请求都表达完了,你的回复也完成了,我就会告诉你,事情就这么定了,这次通讯业就结束了。

  • 2 通讯可以远程实现吗?

   上面的通讯非常直接有效,但却需要你我见面才能实现。那么能不能让你我不见面就实现通讯呢?当然可以。之所以需要面对面沟通,是因为你我发出的声音都是通过空气自然传播的,而空气传播的声音递减非常快,距离稍远就无法完成传输了。如果我们能借助其他传输媒介让声音传输得更远,自然就可以远程通信了。于是电话的发明就帮我们实现了。
(注:信号的远距离传输是很复杂的技术,背后涉及到很多物理和信号处理的知识,大致的意思是,在传输信号前,我们先把需要传输的信号放到载波上(就好比把货物放到运输的货轮上),然后载波会把信号发送到远方。最后,远方的接收端会接收到载波+传输信号的混合电磁波,从载波中分离出传输信号(就好比从货轮上把货物卸载下来)就能得到原本传输的信号。这个传输过程都是通过模拟信号来实现的,因为任何通信介质,都只能传输模拟信号,我们通信网就主要是基于模拟信号的)。

  • 3 什么是计算机通讯?

  计算机通讯本质上也是上面的过程,我们的计算机通讯实际上也正是借助通信网来实现通讯的。只不过,当我们把通讯用的电话换成电脑的时候,还要解决一个信号转换的问题:通讯网使用模拟信号传输,而计算机使用的是数字信号。要想借助通信网传输,就需要在计算机发出信号前,先转化成模拟信号,然后传输。同时接收端的计算机在接收信号之前,先把信号转化成数字信号再读取。完成这个工作的设备叫做调制解调器,也就是我们常说的“猫”。

  • 4 什么是网络协议?为什么要用协议?

  至此我们大致明白了两台计算机之间通信的含义。接下来假如,有第三个、第四个...第N个电脑要加入我们的通讯中来,那问题就变复杂了,各种各样的新问题就会浮现出来。比如:

  •     传输介质没有智能,它不能识别出那个是第三计算机,那个是第四台计算机,我如何区分网络中不同的电脑呢?
  •     某个电脑可能想用不同的波段来传输信号。
  •     第四个、第五个电脑可能同时都想给第二个电脑发消息。第二台该怎么处理?
  •     一台使用Linux的电脑如何跟一台使用windows的电脑如何通讯呢?
  •     第五台电脑发出信号给第六台电脑,可是由于信号干扰的原因,信号丢失了。双方如何才能知道信号丢失了呢,如果认识到信号丢失了,如何处理等等?

总得来说就是,如果每个计算机都按照自己的方式去参与通讯,那整个系统就无法实现了。要想实现这样的系统,则参与系统的每个电脑都必须遵守共同的规定--协议。

网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。

  • 5 网络协议为什么要分层?

   计算机互联网是个很庞大的系统,里面牵扯了非常多的设备和系统(比如,服务器,交换机,路由器,集线器,打印机,光纤收发器,UNIX系统,Linux系统,Window系统,安卓系统等等),因此网络协议也必然非常庞大的,远远超出了个人和集体的理解范围。那要建设互联网是不是就必须要找一个精通协议所有内容的超大规模公司来做呢?显然不是。许多网络的组建是由很多独立的个人和团队完成的,比如你我家里的局域网。为什么可以这样呢?因为网络协议是分层设计的。有了网络协议的分层,不同的设计人员可以专注于网络设计的不同分层,而不需要关注协议的其他部分。只要每个参与者都是严格按照协议的要求来实现设计,那即使这些人之间没有沟通,也可以设计出一个完整的网络系统。

  • 6 分层的模型是什么?

 ISO公布的“开放系统互联参考模型”即著名的OSI/RM模型,将计算机网络体系结构的通信协议划分为七层:自下而上依次为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。它是一个参考标准,解释协议相互之间应该如何相互作用。
而真正让互联网成为了目前这个样子的标准,则是美国国防部基于此发明的TCP/IP协议。TCP/IP协议中的应用层处理开放式系统互联模型中的第五层、第六层和第七层的功能。TCP/IP协议中的传输层并不能总是保证在传输层可靠地传输数据包,而开放式系统互联模型可以做到。TCP/IP协议还提供一项名为UDP(用户数据报协议)的选择。UDP不能保证可靠的数据包传输。基于TCP/IP协议的五层模型如下:物理层,数据链路层,网络层,传输层,应用层(应用层+表示层+会话层)。

  • 7,每个层都规定了哪些内容?有哪些代表协议?

第一层:物理层(PhysicalLayer):
规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械 特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率 距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组 操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。在这一层,数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
第二层:数据链路层(DataLinkLayer):
在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
第三层是网络层
在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、RIP、OSPF等。
第四层是处理信息的传输层
第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。
第五层是会话层
这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。
第六层是表示层
这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。
第七层应用层
应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

  • 8 这些层听起来太抽象了,在数据传输的过程中,这些层到底做了什么?有没有一个直观的图帮我理解下?

                             计算机网络协议模型——看了这篇文章就明白了

如果没有了协议,我们的物理媒体上传输的就是一连串的比特流。有了协议,这些比特流在输出前就被分割成了一个个数据块,还在块头增加了实现各种功能的数据头(比如添加IP地址,添加校验码等 ),如此就能实现我们在中要求的各种功能。在数据块被接收以后,接收方在按照协议,一步步剥离数据块的头数据,还原出数据本来的面貌。如此我们就完成协议下数据的。    

相关文章: