计算机网络之五层协议体系概述

在计算机网络中,最重要的概念概念莫过于网络的体系结构。在1977年之前不同的公司设备都有属于自己的网络体系结构。在这种情况下公司对于自己的设备进行了垄断,而且在不同公司设备之间无法进行网络通信。制定一个通用的网络体系结构迫在眉睫。1977年ISO开始制定了著名的七层网络协议(OSI)。但是后来最广泛使用的还是TCP/IP协议。为了采取一种折中的办法出现了五层协议体系结构。如下图所示:
这里写图片描述
下面分别介绍各层的作用。
1、运用层
作为体系结构中的最高层,运用层的作用是通过运用进程间的交互来完成特定的网络运用。运用层协议定义的是运用进程间的通信和交互的规则。这里的进程指的是正在运行的程序。并且对于不同的运用需要不同的协议。比如:在浏览器上我们浏览网页,浏览器向服务器请求数据就是通过HTTP协议。我们发送邮件采用的是SMTP协议。进行文件传输可以采用FTP协议。查找域名IP采用的是DNS协议等。运用层之间的交互数据单元为报文。什么是报文呢?就拿HTTP写来说,我们无论是发送请求或者接受响应都是通过报文的格式。在我一篇HTTP协议文章解释了报文的内容,其中包括报文报文首部(请求行)、消息报头、报文主体。如下图:
这里写图片描述
2、运输层
运输层的任务是负责向两个主机中进程之间的通信提供通用的数据传输服务。运用层进程利用该服务传送运用层报文。还是以HTTP协议为例,HTTP协议之所以属于运用层,是因为HTTP协议只是为请求和接收指定规则,并不负责主机之间的报文传输工作。这个工作是交给处于运输层的协议。在这里解释一下通用的概念,在运用层对于不同功能的运用进程需要不同的协议,但是运输层并不针对特定的运用层运用(协议),多种运用(浏览器请求响应、发送邮件、FTP文件传输)都可以使用同一个运输层服务。由于一台主机允许多个进程同时进行,所以运输层有复用和分用的功能。复用就是多个运用层进程可以同时使用运输层服务,分用就是运输层可以将收到的信息分别交给不同的运用层进程。
主要的两种运输层协议:
i、传输控制协议 TCP(Transmission Control Protocol)
TCP协议是一种面向连接的、可靠地数据传输服务,传输的单位是报文段,也就是说,通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达,TCP提供全双工通信,TCP是面向字节流的,TCP把应用程序交下来的数据块看成无结构的字节流,TCP不保证接收方应用程序收到的数据块和发送方应用程序所发出的数据块具有对应的大小关系。例如:
发送方应用程序交给发送方TCP共10个数据块,但接收方的TCP可能只用4个数据块就把收到的字节流交付给了上层的应用程序,但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样)。(后面一篇将专门讲解)
ii、用户数据报协议 UDP
提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),UDP是面向报文的,UDP没有拥塞控制,因此网络出现的拥塞不会使源主机发送速率降低,UDP支持一对一、一对多、多对一、多对多的交互通信,UDP的首部开销小。其数据传输的单位是用户数据报。

3、网络层
网络层负责为分组交换网不同的主机提供通信服务,在发送数据时,网络层是把运输层产生的报文段或者用户数据报分装成报进行传输。网络层使用的是IP协议,所以也叫做IP数据报简称为数据报。网络层不提供服务质量的承诺,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。如果主机中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。IP协议是该层的核心协议,IP协议的主要功能就是无连接的数据报传输、数据报路由选择。

4、数据链路层
数据链路层的作用是将网络层交下来的IP数据报组装成帧。每一帧包括数据和必要的控制信息(同步信息、地址信息、差错控制)
在接受数据时,控制信息使接收端能够知道一个帧从那个比特开始到哪个比特结束,当数据链路层接收到一个帧后就可以提取数据部分,然后提交到网络层。
控制信息还可以使得接收端检测到所收的帧有无差错,发现差错就放弃差错的帧,然后采用可靠传输协议来纠正出现的差错。
数据链路层协议有许多种,但是有三个基本问题则是共同的,这三个问题就是:封装成帧、透明传输、差错检测。关于差错控制,比特在传输过程中可能0变1,1变0,这叫做比特差错,数据链路层广泛使用了循环冗余检验CRC(Cyclic Redundancy Check)。数据链路层使用两种信道:点对点信道和广播信道,点对点协议PPP(point-to-point protocol)则是点对点信道常用的协议,也是该层最广泛的协议,工作在该层的硬件是网桥。

5、物理层
物理层不是指具体的物理设备或者信号传输的物理媒体(包括双绞线、同轴电缆等),而是指在物理媒体之上为上一层(链路层)提供一个传输原始比特流的物理连接。它的作用在于为链路层传输比特流。

最后通过两个主机之间的一次数据传输来理解各层之间的关系以及作用
这里写图片描述

如图:
假定左边的是主机1,右边的是主机2,主机1的一个应用进程要给主机2传送数据。
1、运用程序要传送的数据先传送到运用层进行打包,打包成报文的格式(有控制信息H5以及数据)。报文格式就是下一层(运输层)的数据单元、
2、运输层接收到数据单元后加上本层的控制信息H4打包成报文段或者用户数据包作为下一层(网络层)的数据单元。
3、以此类推,最后要传送的数据变成了比特流。需要注意的是在链路层控制信息被分成两部分。而且物理层不带控制信息。传送比特是从首部开始的。
4、比特流通过物理媒体传送到主机2(这里忽略了经过路由),主机2的的物理层接收到比特流之后按照上面的反方向传送到运用层,最后运用程序获取到主机1发送的数据。这就像是一个栈一样,所有有人称这个过程为协议栈。

总结:
1、下一层的总是服务于它的上一层。
正是由于这个原因,我们经常说的协议都是针对同层而言的,就如上图的虚线所示,在我们看来数据传输就像是在同层在传输的。比如HTTP协议而言,在我们看来数据就像是直接在HTTP层面上传输的,没有去考虑下一层所做的贡献。这也是网络体系结构的一大优点。只要各层之间很好地提供服务,我们只要考虑同一层之间的协议即可。
2、协议与服务是不同的
我是这样理解协议的,协议就像是上图的虚线,是水平的,是针对同一层而言的,比如HTTP协议,我们只是关心两个主机在运用层之间请求和响应的规则。而服务是垂直的,比如运用层与传输层的关系,传输层是为运用层提供服务的(通过交换服务原言)。下图可以很好地理解。其中实体是对每一层的一个抽象。
这里写图片描述

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值