简析OCI七层协议及数据传输原理

在源博客基础上更改,特此感谢:
原文链接:http://blog.csdn.net/wenqian1991/article/details/42467643

简析OCI七层协议及数据传输原理_第1张图片
七层模型

七层模型
  1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
  2. 数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
  3. 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
  4. 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
  5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
  6. 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换吗(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
  7. 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
数据传输过程
简析OCI七层协议及数据传输原理_第2张图片

两个主机,其用户之间的通信是发送者主机从上至下,接收者主机从下往上。
完整流程为:

  1. 发送者用户(应用层)的数据经由传输层>网络层>链路层>通过物理层(媒介)连接到接收者的物理层;从接收者的物理层>链路层>网络层>传输层>应用层最终到达接收者。来回通信的话就是彼此交换发送者,接收者。
    接收方中的物理层接收信息单元,传输至数据链路层,链路层读取包含在发送方数据链路层预先添加在协议头中的控制信息,取出协议头和协议尾,将剩余部分传送至网络层,协议栈向上层层过滤,最后将数据传送至接收者应用层。
  2. 需要注意的是,从下往上,数据报是越来越大,因为包含的地址信息越来越多,有效载荷(数据包)是不变的。链路层首部包含双方的MAC地址,网络层添加了双方的网络地址,传输层则添加了双方的端地址,层层添加,反过来,从上至下则是层层过滤,数据传输的核心是数据链路层:

数据链路层肩负着上接网络层,下连物理层的中介作用,还需要处理其间的数据传输故障等。事实上,数据链路层在不可靠的物理介质上提供可靠的传输,该层的作用包括:物理地址寻址、数据的成帧、流量控制,数据的检错,重发等。


物理地址寻址:

通信当然得知道发送者的地址和接受者的地址,这是最基础的。以太网规定,所有连入网络的设备,都必须具有“网卡”接口。然后数据包是从一块网卡,传输到另一块网卡的。网卡的地址,就是数据包的发送地址和接收地址,叫做MAC地址,也叫物理地址,这是最底层的地址。每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。有了这个地址,我们可以定位网卡和数据包的路径了。
那么在实际通信时,我们怎么知道对方的MAC地址呢?这里我们是通过ARP协议(地址解析协议),就是根据IP地址(网络层)获取MAC地址的一个TCP/IP协议。上面有说到,发送者从上至下,就需要在已知IP地址的情况下,获取MAC地址发送给接收者,自然地,接收方从下往上时,需要逐步添加对方的地址信息,需要已知MAC地址的情况下,RARP协议(逆地址解析协议)获得对方的IP地址。
  那么知道了对方的MAC地址,连接是如何建立的呢?
  这里简单的说下广播方式(目的端为给定网络上的所有主机),系统将数据包(包含MAC地址)向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。


简析OCI七层协议及数据传输原理_第3张图片

上图,1号计算机向2号机算机发送一个数据包,同一个子网络的计算机都会收到这个包。它们读取这个包的首部,找到接受方的MAC地址,同自身的MAC地址相比较,如果两者相同,就接收这个包,作进一步处理,否则就丢弃。
事实上还有其余方式如单播和多播这里就不说明了。

数据帧封装:
  网络层传输的包(packet),在数据链路层中传输的是“帧”(frame)。数据包到达数据链路层后加上数据链路层的协议头和协议尾就构成了一个数据帧。前面说到,数据部分也就是有效载荷,其各个层都是一样的
封装简单说就是事先对数据包进行拆分和打包,在所发送的数据包上附加上目标地址,本地地址,以及一些用于纠错的字节等。对数据包进行处理时通信双方所遵循和协商好的规则就是协议。
  先说说当今TCP/IP采用的主要的局域网技术——以太网。
以太网(Ethernet)规定:一组电信号构成一个数据包,叫做“帧”(Frame),每个帧分为两个部分:首部(Head)和数据(Data)。

简析OCI七层协议及数据传输原理_第4张图片

“首部”自然是包含数据包的一些说明项,如发送者、接收者、数据类型等等,“数据”则是数据包的具体内容。不论是以太网帧还是后面网络层的IP数据报都是这么个格式类型。
  前面说到,数据链路层位于物理层和网络层之间。在发送端,数据链路层是接收来自网络层的数据分组,而在接收端它是接受来自物理层的比特流,所以数据链路层的成帧功能就包含两层含义:一是将来自物理层的一个个比特流组装成数据帧(成为帧同步),二是将来自网络层的数据分组封装成数据帧。
  在发送端数据链路层中的帧到达物理层后就会以比特位为单位进行传输,而不是以帧为单位进行传输,在物理线路上数据的传输单位是比特位。发送端以比特位方式一位位地传输到接收端的物理层,然后接收端的物理层把比特流向数据链路层传输,达到后又要将比特流封装成数据帧,添加的首部信息是通过读取对方这就是数据链路层的帧组装方式。
  帧同步的目的就是要使接收端的数据链路层对从物理层传输而来的一串串比特流以帧为单位进行区分,根据帧头和帧尾来区分一个完整帧。

以太网和IEEE 802封装

简析OCI七层协议及数据传输原理_第5张图片
Paste_Image.png

简析OCI七层协议及数据传输原理_第6张图片

各个字段的详细说明:
  目的地址(Destination Address,DA)和源地址(Source Address,SA):两种帧都采用6字节的目的地址和源地址(802.3允许16bit),也就是MAC地址,只有网络接口才能识别。

  • 长度(Length)或类型(Type):从网络层来的数据包,大小可以在46—1500字节之间变化。
  • 帧校验序列(Frame Check Sequence,FCS):FCS是位于帧尾的字段,它用来存放循环冗余校验(CRC)。
  • 数据链路层除了数据的封装成帧之外,还需要保证数据在该层的“透明”传输,即使在数据链路层上所传输的数据在内容、格式及编码上都没有限制,也要保证数据从发送端无差错地在数据链路上传输到目的接收端。

你可能感兴趣的:(简析OCI七层协议及数据传输原理)