• home > theory > CST > network >

    细说OSI七层协议模型及OSI参考模型中的数据封装过程?

    Author:[email protected] Date:

    今天我将用大家都能理解的比喻形式把以太网的协议层的概念讲解清楚。大家应该会接触网络基础这门课程,在那里边会提到以太网的7层协议,技术人员很少会对此深究,只是作为基础掌握一些知道有哪几层就可以了

    OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems InterconnectionReference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。

    超详细的七层通信协议图例

    OSI/RM协议是由IS0(国际标准化组织)制定的,它有三个基本的功能:提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。



    OSI的层次划分:OSI将计算机网络体系结构(architecture)划分为以下七层:

    • 物理层 Physical Layer :物理接口规范,传输比特流,网卡是工作在物理层的。

    • 数据链路层 Data Link Layer:成帧,保证帧的无误传输,MAC地址,形成EHTHERNET帧

    • 网络层 Network Layer:路由选择,流量控制,IP地址,形成IP包

    • 传输层 Transport Layer:端口地址,如HTTP对应80端口。TCP和UDP工作于该层,还有就是差错校验和流量控制。

    • 会话层 Session Layer:组织两个会话进程之间的通信,并管理数据的交换使用NETBIOS和WINSOCK协议。QQ等软件进行    通讯因该是工作在会话层的。

    • 表示层 Presentation Layer:使得不同操作系统之间通信成为可能。

    • 应用层 Application Layer:对应于各个应用软件

    它和我们常用的TCP/IP的协议层有些相似,TCP/IP把1和2封装为一层,3和4还是独立的层,5和6和7封装成为一层,也就是说TCP/IP只有四层,具体如图所示:

    TCP网络层七层协议

    但是在此我讲述的7层的具体意义

    情景化七层含义

    在这里我将假设一个场景,那就是把要传输数据的一方视为某个公司的经理,网络传输被视为这个经理要把一件事情告诉另一个公司的经理。

    网络的A端:

    1. 应用层:A公司经理把他想要告诉B公司经理的事情用嘴讲了出来。

      用户的应用程序与网络之间的接口  老板

    2. 表示层:秘书就把A公司经理说的事情翻译成为英文然后写在了纸上。

      协商数据交换格式 相当公司中简报老板、替老板写信的助理

    3. 会话层:行政的职员把秘书写的这封信,装到了信封封装好了,写上了信封的信息。

      允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书

    4. 传输层:A邮局的职工把这封信取走。

      提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员

    5. 网络层:A邮局的分派的职工,把这封信分派到指定送信区域。

      使用权数据路由经过大型网络 相当于邮局中的排序工人

    6. 数据链路层:A邮局的装箱的职工,就把一同送往这个区域的信封装到一个木箱子里,然后送到A邮局物流站。

      决定访问网络介质的方式 相当于邮局中的装拆箱工人

    7. 物理层:A邮局的物流职工把木箱运到铁路

      将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人

    这里的铁路就是网络连接物理介质

    网络的B端:

    7、物理层:B邮局的物流职工把木箱从铁路运到邮局的物流站。

    6、数据链路层:B邮局的拆箱的职工把物流站的木箱拆箱然后把所有的信件取出来。

    5、网络层:B邮局的分派的职工,把这封信分派到指定送信区域。

    4、传输层:B邮局的职工把这封信送到B公司。

    3、会话层:B公司行政的职员把公司的信件整理并且拆封信件(假设这是公司允许的情况下)并送到各自部门的秘书手里。

    2、表示层:B公司秘书把信上的英文翻译成为中文。

    1、应用层:B公司经理听秘书转述给他这封信的内容。

    到此为止一个完整的通过这7层的网络通讯顺利完成。接下来我将用技术术语并结合TCP/IP中的应用再描述一遍这7层协议。

    用技术术语并结合TCP/IP中的应用描述

    (1)应用层:

    与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。

    应用层为操作系统或网络应用程序提供访问网络服务的接口。

    应用层是模型中的最顶层,是用户与网络的接口,该层通过应用程序来完成网络用户的应用需求。该层的数据放在TCP数据包的数据部分,该层定义了一个很重要的协议——Http协议,我们一般的Web开发都是基于应用层的开发, 所以后面专题将会和大家介绍下Http协议。

    既然知道http是大家在应用层的一个协议比如我们浏览网页什么的就是http应用IOS上层也是基于http的协议比较简单些,效率高灵活的比较难。

    示例: Telnet(远程登录协议)、FTP (File Transfer Protocol)HTTP (Hyperrext Transfer Protocol)、SNMP(simple Mail Transfer Protocol) BOOTP(Boot trap.Protocol)  AFP (Apple Talk文件协议--Apple公司的网络协议族,用于交换文件) SNMP (Simple Network Management Protoco1)

    NCP (NetWare Core Protoco1) NFS (Network File System)

    (2)表示层:

    这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASII格式,发送方将把文本从发送方的字符集转换成标准的ASII后发送数据。在接收方将标准的ASII转换成接收方计算机的字符集。示例:加密,ASII等。

    表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

    示例:

    EBCDIC(extended binary coded decimal interchange code)、ASCII(Amercia Standard Code for Information Interchange);

    图像标准:JPEG(Joint Photographic Experts Group)、TIFF(Tagged Image File Format)、GIF

    视频标准:MIDI(Musical Instrument Digital Interface)、MPEG(Motion Picture Experts Group)、QuickTime等。 

    (3)会话层:

    他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。

    会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

    示例:

    • SSHSecure Shell

    • ZIPZone Information Protocol

    • SDPSockets Direct Protocol

    • ADSP:AppleTalk的数据流协议

    • ASP:AppleTalk的动态会话协议

    • H.245, Call Control Protocol for Multimedia Communication

    • ISO-SP, OSI Session Layer Protocol(X.225, ISO 8327)

    • iSNS, Internet Storage Name Service

    • NetBIOS, Network Basic Input Output System

    • PAP, Password Authentication Protocol

    • PPTP, Point-to-Point Tunneling Protocol

    • RPC, 远程过程调用

    • RTCP, 实时传输控制协议

    • SMPP, Short Message Peer-to-Peer

    • SCP, Secure Copy Protocol

    (4)传输层:

    这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。

    通过MAC和IP地址,我们可以找到互联网上任意两台主机来建立通信。然而这里有一个问题,找到主机后,主机上有很多程序都需要用到网络,比如说你在一边听歌和好用QQ聊天, 当网络上发送来一个数据包时, 是怎么知道它是表示聊天的内容还是歌曲的内容的, 这时候就需要一个参数来表示这个数据包是发送给那个程序(进程)来使用的,这个参数我们就叫做端口号,主机上用端口号来标识不同的程序(进程),端口是0到65535之间的一个整数,0到1023的端口被系统占用,用户只能选择大于1023的端口。

    传输层的功能就是建立端口到端口的通信,网络层就是建立主机与主机的通信,这样如果我们确定了主机和端口,这样就可以实现程序之间的通信了。我们所说的Socket编程就是通过代码来实现传输层之间的通信。因为初始化Socket类对象要指定IP地址和端口号。

    在传输层有两个非常重要的协议:UDP 协议和TCP协议

    采用UDP协议话传输的就是UDP数据包,同样UDP数据包也由头和数据两部分组成,头部分主要标识了发送端口和接受端口,数据部分就是具体的内容信息。同样UDP数据包是放入IP数据包中的"数据"部分,IP数据包再放入数据帧中在网络上传输。

    由于UDP协议的可靠性差(数据发送后无法确定对方是否收到),所以又定义了一个可靠性高的协议——TCP协议,TCP协议采取了握手的方式要确保对方收到了数据。

    示例:TCP(Transmission Control Protocol)UDP (User Datagram Protocol)、SPX(SequenCed Packet ExChange Protocol)等。 ATP(AppleTalk Transaction Protocol),NBP(名字绑定协议) NetBEUI(NetBIOS Extended User Internet)

    (5)网络层:

    这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。

    网络层负责对子网间的数据包进行路由选择。网络层还可以实现拥塞控制、网际互连等功能。

    在这一层,数据的单位称为数据包(packet)。


    该层通过寻址(寻址地址)来建立两个节点之间的连接,大家都知道我们的电脑连接上网络后都一个IP地址,我们可以通过IP地址来确定不同的计算机是否在同一个子网路。如果我们的电脑连接上网络后就有两种地址:物理地址和网络地址(IP地址),网络上的计算机要通信,必须要知道通信的计算机“在哪里”, 首先通过网络地址来判断是否处于同一个子网络,然后再对物理地址(MAC)地址进行处理,从而准确确定要通信计算机的位置。

    在网络层中有我们熟悉的IP协议(即规定网络地址的协议),目前广泛采用的是IP协议第四版(IPv4),这个版本规定,网络地址由32位二进制位组成。我们可以自己配置IP地址也可以自动获得的方式得到IP地址,Ip地址分成两部分,前24位代表网络,后8位代表主机号, 如192.168.254.1和192.168.254.2就处于同一个子网络里,因为这两个IP地址的前24位相同。

    网络层中以IP数据包的形式来传递数据,IP数据包也包括两部分:头(Head)和数据(Data),IP数据包放进数据帧中的数据部分进行传输。

    示例: IP (Internet Protocol)IPX(Internet work Packet Exchange)DDP (Datagram Delivery Protoco1)   ICMP(Internet Control Message Protocol) APPLETALK、

    网络层协议除了众所周知的互联网协议(IP)之外,实际上还有其他一些协议,这些协议在特定的环境或者某些特定的技术领域中使用。以下是一些除了IP以外的网络层协议:

    • 互联网数据报协议(IPX):主要在诺威尔(Novell)的网络操作系统NetWare中使用。

    • AppleTalk:苹果公司为Macintosh网络推出的一套网络操作协议。

    • X.25:主要用于早期的分组交换网络中。

    • DECnet:数字设备公司(DEC)开发的一套网络协议,主要用于其计算机及设备。

    • CLNP (Connectionless Network Protocol):基于ISO的OSI参考模型的网络层,主要用于一些特定的通信系统。

    至于TCP/IP为何能战胜其它竞争者成为互联网的基石,原因有几方面:

    • 开放性和适应性:TCP/IP从一开始就是为了多网络环境设计的,这使它能够适应不同网络技术。这种开放性和适应性意味着它不受特定硬件或软件平台的限制,有利于在全球范围内的推广。

    • 政策因素美国国防部高级研究计划局(DARPA)对于TCP/IP的支持对其推广起到了关键作用。美国政府和军方在网络通讯领域的需求和投资,直接推动了TCP/IP协议族的发展和普及。随着时间的推移,越来越多的开发者社群和IT产业开始支持TCP/IP,后面互联网开始快速增长的时候,TCP/IP已经相对成熟且得到了一些关键基础设施和网络服务的支持

    • 简单和效率:与一些竞争对手(如OSI模型的协议栈)相比,TCP/IP提供了一套相对简单、高效的解决方案,可以高效地处理网络通信需求,尤其在初期的网络环境中。

    苏联在同期也发展了自己的网络技术和协议,最著名的是由苏联科学家和工程师开发的OGAS(全国自动化会计和信息处理系统)计划,但因经济问题(经济是核心)夭折了。同期,苏联的RASNet(俄罗斯科学院网络),以及用于军事和政府通信的安全网络,都随着苏联经济奔溃而灰灰湮灭!——————好比苏联三进制的计算机(并不是三进制超越了时代,而是苏联的电子工业拖了时代的后腿

    尽管苏联自身的网络协议没有成为主流,但苏联及其后继国家的科学家和工程师对全球计算机网络技术的发展做出了重要贡献,特别是在网络安全和加密技术方面。


    (6)数据链路层:

    他定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。

    数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

    在这一层,数据的单位称为帧(frame)。

    该层对接受到物理层传输过来的比特流进行分组,一组电信号构成的数据包,就叫做"帧",数据链链路层就是来传输以"帧"为单位的数据包,把数据传递给上一层(网络层),帧数据由两部分组成:帧头和帧数据,帧头包括接受方物理地址(就是网卡的地址)和其他的网络信息,帧数据就是要传输的数据体。数据帧的最长为1500字节,如果数据很长,就必须分割成多个帧进行发送。

    示例: ARP、RARP、SDLC、HDLC、PPP、STP、帧中继等。

    (7)物理层:

    OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。

    物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。只是说明标准

    在这一层,数据的单位称为比特(bit)。

    示例:802.3EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi令牌环网等。。

    OSI是一个定义良好的协议规范集,并有许多可选部分完成类似的任务。

    它定义了开放系统的层次结构、层次之间的相互关系以及各层所包括的可能的任务。是作为一个框架来协调和组织各层所提供的服务。

    但是OSI参考模型并没有提供一个可以实现的方法,而是描述了一些概念,用来协调进程间通信标准的制定。即OSI参考模型并不是一个标准,而是一个在制定标准时所使用的概念性框架。

    WIFI物理层结构

    事实上的标准是TCP/IP参考模型

    PPPOE机制

    另外,还有一个最广泛的例子就是PPPoE,在以太网上走PPP业务,也没有用到ARP。它的实现机理是这样的:我要跟外界通信,首先我发一个PADI广播包;如果在这个以太网上有PPPoE服务器(即BRAS),那么回复一个PADO单播给我;然后我再发一个PADR给PPPoE服务器请求建立连接,服务器收到后,则回复一个PADS单播包,分配一个SessionID,PPPoE连接建立。

    ARP、RARP

    1)当ADSL拨号成功时没有建立IP和MAC的映射。拨号链接是一种点到点链路,这种链路的特点是一端发送的数据总被另一端原顺序的接受到。(即使两端的IP不在同一段上也能够收到)里面有一个确定性:一定别对端收到;唯一性:一定被唯一的对端收到;顺序性:包不会乱续;这样的链路是不需要什么MAC的。


    2)你说的拨号可能说的是PPPOE拨号,这个是有IP和MAC的关系的,但使用的而不是ARP协议,而是PPPOE自身的保证机制。这也就是PPPOE能够防止ARP病毒的根本所在。

    如果说道信元的话那是ATM的东西。映射的不是IP和MAC,应该说的IP和VPI VCI对。

    任何三层地址都需要映射到二层地址,以太网是IP和MAC,FR是IP和DLCI,ATM是IP和vpi/vci,当没有映射时,在路由器上debug会看到“encapsulation failed”


    3)得出以下结论:

    1. 如果计算机在访问internet的时候,不论是客户机基于以太网,还是服务器基于以太网技术,都必修使用ARP和RARP协议。

    2. 如果计算机在访问internet的时候,客户计算机或服务器都使用FDDI或其他非以太网技术,可以不使用ARP和RARP协议。

    最大感觉就是你总结的东西都不对味

    简单的说两句吧

    1. arp和rarp 和以太网之间就是地址解析和反向地址解析协议,是基于以太网的技术,这没什么好说的

    2. 如果你非要把 arp和rarp 和internet联系上的话 这里面的 的关系就没你说的那么简单,绝对和狭隘了,internet包含的东西很多,但是和 arp和rarp 有关系的几乎没有,这个是你对概念的含糊和理解的不清楚的原因

    3. fddi 是光纤类东西,不论是技术还是概念都与arp和rarp 没关系 那就更不要在说信员是什么了

    那么,在最深层次上说, 数据在 以太网 里面传输的时候,用到的是模拟信号转为数字信号 也就是用 0和1来处理数据的电平的

    一般说来 arp和rarp 用在内网中就是起到解析地址的作用(以前就是这么定义的,而且这也是最主要的作用) 基本是在设备(pc or sever)端上做处理的 广义上说可以更本就不用关心他们之间是怎么连的,那就更不需要关心又是什么网络~

    fddi 是光纤传输,是将模拟信号转为光信号来处理传送的,在两个局端之间有转换设备来处理,然后同理也是在另一端复员信号送到局端通过arp和rarp协议来处理数据具体走向的

    那么 arp和rarp 和internet的联系 无论是基于ATM 还是 FR 还是ADSL拨号的 PPP/MP 等等网络"中间"技术 和arp和rarp的关系简单来说就一句话,那就是没联系,8杆子都打不着

    最后 必须这两个字 在做下结论的时候,在不是很清楚的情况下 最好别用 否则就是在吾人子弟的

    多看看书吧


    4)ADSL只是种接入方式


    5)首先说,我不是什么高手,但是对于你所讲的这些东西,自信还有一点了解。

    ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。这里已经说的很清楚,arp不是每种网络都需要的实现。实质上你是可以实现一个二层链路完全由非以太网跟令牌环网构成的网络,这里根本不牵涉arp什么事情。

    对于TCP/IP来讲,它是可选的,可有可无的。它既不是TCP/IP协议族最初额实现,也不是必须或者必要的实现,如果你不怕麻烦,完全可以不要它的存在(对于RARP协议来讲,情况稍微有些特殊)。从这个意义上来讲,ARP/RARP根本就没有追究存在必要不必要的问题。

    举个例子,我们的农业生产什么是根本?种子、土地,人,阳光,环境。除了这些之外,其它的东西就是可有可无的,农业社会,大家是刀耕火种,现在是机械化。ARP/RARP的有无就跟机械化的有无是一样的。不是必要的,但是现在如果你说不要耕种设备了行不行啊,答案是行,也不行。行是因为没有一样可以做,不行是因为现在没有人再想去面朝黄土背朝天的劳作了,没有了大家可能真的就不习惯了。

    总之来讲,讨论arp跟rarp存在的必要与否本身,根本就没有什么意义。

    至于什么P2P根本就跟这个帖子的内容没有什么关系了。说是什么技术,有些牵强。算是一个思想吧,一种软件组织的架构。至于什么改变互联网基础的潜能,让人听了却是摸不着头脑的感觉。跟之前提的什么C/S,B/S本是一类东西,至于是采用哪种组织软件,要看应用的特点,并不是万能良药,什么东西拿P2P来就万事大吉,选其它的就不行,反之也一样。

    你的主要问题在于,对网络实质内容理解本身就肤浅,却又自以为是。个人认为你需要做的是,静下心来,认真的理解网络的实质,不要搞些似是而非的东西出来,这样真的很误人的。


    6)目前的网络都有二层的地址,不过不一定叫MAC地址。譬如FR的DLCI,ATM的VPI VCI等等。


    下面我们讲一个实例化 两台电脑的一个通信过程,比如常见的:

    HTTP

    19125144-ecfbd43ee8c5430da9e5733b35f84814.jpg


    HTTP协议如何工作?

    大家都知道一般的通信流程:首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端。

    通信方法

    1. Request和Response的格式

    Request格式:

    HTTP请求行
    (请求)头
    空行
    可选的消息体

    注:请求行和标题必须以

    实例:

    http请求头

    2. 建立连接的方式

    HTTP支持2中建立连接的方式:非持久连接和持久连接(HTTP1.1默认的连接方式为持久连接)。

    1) 非持久连接

    让我们查看一下非持久连接情况下从服务器到客户传送一个Web页面的步骤。假设该贝面由1个基本HTML文件和10个JPEG图像构成,而且所有这些对象都存放在同一台服务器主机中。再假设该基本HTML文件的URL为:gpcuster.cnblogs.com/index.html。

    下面是具体步骡:

    1.HTTP客户初始化一个与服务器主机gpcuster.cnblogs.com中的HTTP服务器的TCP连接。HTTP服务器使用默认端口号80监听来自HTTP客户的连接建立请求。

    2.HTTP客户经由与TCP连接相关联的本地套接字发出—个HTTP请求消息。这个消息中包含路径名/somepath/index.html。

    3.HTTP服务器经由与TCP连接相关联的本地套接字接收这个请求消息,再从服务器主机的内存或硬盘中取出对象/somepath/index.html,经由同一个套接字发出包含该对象的响应消息。

    4.HTTP服务器告知TCP关闭这个TCP连接(不过TCP要到客户收到刚才这个响应消息之后才会真正终止这个连接)。

    5.HTTP客户经由同一个套接字接收这个响应消息。TCP连接随后终止。该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件,加以分析后发现其中有10个JPEG对象的引用。

    6.给每一个引用到的JPEG对象重复步骡1-4。

    上述步骤之所以称为使用非持久连接,原因是每次服务器发出一个对象后,相应的TCP连接就被关闭,也就是说每个连接都没有持续到可用于传送其他对象。每个TCP连接只用于传输一个请求消息和一个响应消息。就上述例子而言,用户每请求一次那个web页面,就产生11个TCP连接。

    2) 持久连接

    非持久连接有些缺点。首先,客户得为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接,TCP得在客户端和服务器端分配TCP缓冲区,并维持TCP变量。对于有可能同时为来自数百个不同客户的请求提供服务的web服务器来说,这会严重增加其负担。其次,如前所述,每个对象都有2个RTT的响应延长——一个RTT用于建立TCP连接,另—个RTT用于请求和接收对象。最后,每个对象都遭受TCP缓启动,因为每个TCP连接都起始于缓启动阶段。不过并行TCP连接的使用能够部分减轻RTT延迟和缓启动延迟的影响。

    在持久连接情况下,服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。整个Web页面(上例中为包含一个基本HTMLL文件和10个图像的页面)自不用说可以通过单个持久TCP连接发送:甚至存放在同一个服务器中的多个web页面也可以通过单个持久TCP连接发送。通常,HTTP服务器在某个连接闲置一段特定时间后关闭它,而这段时间通常是可以配置的。持久连接分为不带流水线(without       pipelining)和带流水线(with       pipelining)两个版本。如果是不带流水线的版本,那么客户只在收到前一个请求的响应后才发出新的请求。这种情况下,web页面所引用的每个对象(上例中的10个图像)都经历1个RTT的延迟,用于请求和接收该对象。与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善,不过带流水线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是,服务器送出一个对象后开始等待下一个请求,而这个新请求却不能马上到达。这段时间服务器资源便闲置了。

    HTTP/1.1的默认模式使用带流水线的持久连接。这种情况下,HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。如果所有的请求和响应都是紧挨着发送的,那么所有引用到的对象一共只经历1个RTT的延迟(而不是像不带流水线的版本那样,每个引用到的对象都各有1个RTT的延迟)。另外,带流水线的持久连接中服务器空等请求的时间比较少。与非持久连接相比,持久连接(不论是否带流水线)除降低了1个RTT的响应延迟外,缓启动延迟也比较小。其原因在于既然各个对象使用同一个TCP连接,服务器发出第一个对象后就不必再以一开始的缓慢速率发送后续对象。相反,服务器可以按照第一个对象发送完毕时的速率开始发送下一个对象。

    3. 缓存的机制

    HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来为此目的。后者减少了网络应用的带宽;HTTP用“验证(validation)”机制来为此目的。

    HTTP定义了3种缓存机制:

    l Freshness allows a response to be used without re-checking it on the origin server, and can be       controlled by both the server and the client. For example, the Expires response header gives a date when the       document becomes stale, and the Cache-Control: max-age directive tells the cache how many seconds the response       is fresh for.

    l Validation can be used to check whether a cached response is still good after it becomes stale. For       example, if the response has a Last-Modified header, a cache can make a conditional request using       the If-Modified-Since header to see if it has changed.

    l Invalidation is usually a side effect of another request that passes through the cache. For example, if       URL associated with a cached response subsequently gets a POST, PUT or DELETE request, the cached response will       be invalidated.

    4. 响应授权激发机制

    这些机制能被用于服务器激发客户端请求并且使客户端授权。

    详细的信息请参考:RFC 2617: HTTP Authentication: Basic and Digest Access

    5. 基于HTTP的应用

    1. 多线程下载

      1. 下载工具开启多个发出HTTP请求的线程

      2. 每个http请求只请求资源文件的一部分:Content-Range: bytes 20000-40000/47000

      3. 合并每个线程下载的文件

      4. HTTPS传输协议原理

      5. 两种基本的加解密算法类型

      6. 加解密

      7. 通信过程:

      8. 通信过程


    优点:

    1. 客户端产生的密钥只有客户端和服务器端能得到

    2. 加密的数据只有客户端和服务器端才能得到明文

    3. 客户端到服务端的通信是安全的

    4. 服务器和客户端交互:



    参考文章:http://blog.csdn.net/lisa890608/article/details/8231666

     http://www.cnblogs.com/qiqibo/p/3143964.html

     http://www.cnblogs.com/skyofbitbit/p/3713125.html

     http://www.cnblogs.com/lavenderone/archive/2011/10/14/2212523.html





    转载本站文章《 细说OSI七层协议模型及OSI参考模型中的数据封装过程?》,
    请注明出处:https://www.zhoulujun.cn/html/theory/ComputerScienceTechnology/network/2016_0316_7709.html