一、网络协议模型体系结构介绍
前面说过,协议分层的概念,这里引进几个不同的协议结构参考模型。OSI的七层协议体系参考模型的结构概念比较清楚和完整,但它既复杂又不实用,(如图1)。TCP/IP体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP是一个四层的体系结构,(如图2)。它包含应用层、传输层、网络层、网络接口层。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构(如图3)。这样既简洁又能将概念阐述清楚,可以称为TCP/IP 5层参考模型。
不管什么参考模型都是下层为上层服务,现在自上而下地非常简要地介绍一下各层的主要功能。实际上,参考模型是抽象的,对于网络原理的理解就是要理解这些模型各层的作用。
OSI七层参考模型解释
应用层(application layer):提供与用户的接口
表示层(presentation layer):用来定义传输信息的语法和语义
会话层(session layer):建立用户间的会话关系
传输层(transport layer):典型硬件设备‘防火墙’其功能是实现网络中不同主机上用户进程之间的数据传输根据port
网络层(network layer):典型硬件设备‘路由器’其功能是实现数据从原端到目的断的传
输在数据包的头部封装和目的端封装逻辑地址ip来而根据路由表地址选择最佳的路径将数据送达目的端
数据链路层(data link layer):典型硬件设备‘交换机’其功能是以物理地址mac来转发数据
物理层(physical layer):典型硬件设备‘网卡’其主要功能是完成相邻节点之间原始比特流的传输
PS:通常我们把1-3层称为点到点协议,4-7层称为端到端的协议。
二、TCP/IP五层参考模型
应用层(application layer):应用层是体系结构中的最高层。应用层直接为用户的应用进程提供服务。这里的进程就是指正在运行的程序。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等等。
传输层(transport layer):传输层的任务就是负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此传输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面传输层的服务,分用则是传输层把接收到的信息分别交付给上面应用层中的相对的进程。传输层主要使用两种协议:TCP传输控制协议和UDP用户数据报协议。
网络层(network layer):网络层负责为分组交换网上的不同主机提供通信服务,在发送数据时,网络层把传输层产生的报文分段或用户数据包封装层分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报(packet)。
数据链路层(data link layer):简称链路层,我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间(主机和路由器之间或两个路由器之间)传送数据是直接传送的。这时就需要使用专门的链路层的协议。在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧framing,在两个相邻结点间的链路上透明地传送帧中的数据。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。
物理层(physical layer):在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。也就是说,发送方发送1或0时,接收方应当收到1或0而不是0或1,因此物理层还要连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。当然,哪几个比特代表什么意思,则不是物理层所要管的。请注意,传递信息所利用的一些物理媒体,如双绞线、光缆、电缆、无线信道等。并不在物理层协议之内而是在物理层协议的下面。
在因特网所使用的各种协议中,最重要的和最著名的就是TCP和IP两个协议。现在人们经常提到的TCP/IP并一定是单指TCP和IP这连个具体的协议,而往往是表示因特网所使用的整个TCP/IP协议簇(protocol suite)。
三、数据发送封装和解封装
数据模型都是下层为上层服务,数据封装都是从上层到下层一层一层封装,而解封装就是从底层到高层一层一层解封装。下图大概画出了封装和解封装的过程。
发送方:数据发送过程
1. 应用层,比如发送一个HTTP请求,HTTP报文封装好之后丢给下层。
2. 传输层,接收应用层的数据包重新封装为TCP数据报,主要控制窗口流量,标明应用层协议,设置即将要请求服务的端口号80和自己的端口号,然后丢给下层。
3. 网络层,接收到传输层的数据报之后重新封装为IP数据报,主要设置源和目标的IP地址。然后丢给下层。
4. 数据链路层,接收到网络层数据报后重新封装为帧,主要设置源MAC地址和下一跳主机的MAC地址,校验数据。然后丢给下一层。
5. 物理层,接收到数据报后转换为二进制通过比特流在网络上传输。
接收方:数据接收过程
1. 物理层,将接收到的模拟信号转换为数字信号,然后交给上层。
2. 数据链路层,接到数据后解封装帧,查看目标MAC地址是否与自己的一致并检查数据安全,然后把数据部分丢给上层。
3. 网络层,接收到数据包后解封包,查看目标IP地址是否与自己的一致,然后就把数据部分丢给上层。
4. 传输层,接收到数据包后解封包,查看目标端口80,并查找本机是否有进程监听在此端口,有就把数据部分丢给http进程。
5. 应用程,接收到http数据报后,http程序就会处理这个请求并响应。