简介
两个网络节点之间通信需要完成对数据的发送或转发、打包或拆包,控制信息的加载或拆出等工作,这一过程相当复杂,所以目前都是通过网络分层来对这复杂的问题进行拆分,每层分别由不同的硬件和软件模块去完成,网络分层也经历了三次变更:OSI七层模型→TCP/IP四层模型→TCP/IP五层模型
而经常说的HTTP、QUIC、TCP、UDP等协议其实就是网络分层模式中的某一层的协议。注意经常说的Socket其实本身不算是协议,它是TCP/IP协议相关API的总称,使用套接字(IP+Port)来标识两个端点之间的连接。
Http是目前主流的一个超文本传输协议,客户端将请求组装成Http Request报文,发送给服务器,服务器处理将结果组装成Http Response报文,发送给客户端,最后客户端处理服务器的结果。
OSI七层模型
开放式系统互联,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。 ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。
它将网络通信分成七层:
- 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。
- 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及控制对物理介质的访问以确保数据的可靠传输。
- 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。
- 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(面向连接协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(面向无连接协议,可以实现广播方式发送,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据)。
- 会话层:通过传输层(端口号:传输端口接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
- 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。
- 应用层:是最靠近用户的OSI层,这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
TCP/IP四层模型
TCP/IP模型是对OSI模型的简化,一开始是四层:网络接口层(OSI中数据链路层+物理层)、网络层、传输层、应用层(OSI中应用层+表示层+会话层),后来借鉴OSI的七层参考模型,将网络接口层划分为物理层和数据链路层,形成一个新的五层结构。
TCP的连接与断开
TCP是面向连接的端到端的协议,它在建立连接时需要三次握手,断开连接时需要四次挥手:
- 三次握手
第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。
第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力,服务端的发送、接收能力是正常的。
经