理解分层模型作用
网络通信协议
- 不同的协议栈用于定义和管理不同的数据转发规则。
- 20世纪60年代以来,计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA协议, Novell公司的IPX/SPX协议,以及广泛流行的OSI参考模型和TCP/IP协议。同时,各大厂商根据这些协议生产出了不同的硬件和软件。标准组织和厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。
- 网络通信中,“协议”和“标准”这两个词汇常常可以混用。同时,协议或标准本身又堂常具有层次的特点。一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为底层协议。IEEE 802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。除以太外,还有一些用来管理物理数据流在广域网中传输的标准,如PPP(Point-to-Point Protocol),高级数据链路控制HDLC(High-Level Data Link Control)。
分层模型-OSI
- 国际标准化组织ISO于1984年提出了OSI RM(Open System Interconnection
Reference Model,开放系统互连参考模型)。OSI参考模型很快成为了计算机网络通信的基础模型。 - OSI参考模型具有以下优点:简化了相关的网络操作;提供了不同厂商之间的兼容性;促进了标准化工作;结构上进行了分层;易于学习和操作。
- OSI参考模型各个层次的基本功能如下:
- 物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚。
- 数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。
- 网络层:提供逻辑地址,供路由器确定路径。
- 传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。
- 会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
- 表示层:提供各种用干应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
- 应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。
分层模型-TCP/IP
- TCP/IP模型同样采用了分层结构,层与层相对独立但是相互之间也具备非常密切的协作关系。
- TCP/IP模型将网络分为四层。TCP/IP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。TCP/IP模型的核心是网络层和传输层,网络层解决网络之间的逻辑转发问题,传输层保证源端到目的端之间的可靠传输。最上层的应用层通过各种协议向终端用户提供业务应用。
数据封装
- 应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
- 如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段);
- 数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);
- 数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);
- 最后,帧被转换为比特,通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
终端之间的通信
- 数据包在以太网物理介质上传播之前必须封装头部和尾部信息,封装后的数据包称为数据帧,数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。
TCP
- TCP位于TCP/IP模型的传输层,它是一种面向连接的端到端协议。TCP作为传输控制协议可以为主机提供可靠的数据传输。在本例中,两台主机在通信之前,需要TCP在它们之间建立可靠的传输通道。
TCP建立连接的过程
- TCP是一种可靠的,百向连接的全双工传输层协议。
- TCP连接的建立是一个三次握手的过程。如图所示:
- 主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接,此数据段的序列号(seq)为a。
- 服务器A回复标识了SYN+ACK的数据段,比数据段的序列号(seg)为b,确认序列号为主机A的序列号加1(a+1),以此作为对主机A的SYN报文的确认。
- 主机A发送一个标识了ACK的数据段,此数据段的序列号(seq)为a+1,确认序列号为服务器A的序列号加1(b+1),以此作为对服务器A的SYN报文的确认。
TCP关闭连接的过程
- TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。
- TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手。
- 如图所示:
- 主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。
- 服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认。
- 服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1。
- 主机A回应一个标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的 FIN报文的确认。
- 以上四次交互便完成了两个方向连接的关闭。