网络通信的本质就是进程间通信。我们日常使用的聊天软件、在线视频软件等,事实上都是本机客户端进程与远地服务端进程之间进行网络通信所实现的。我们与朋友进行远程聊天,本质上是从本地客户端将聊天内容发送给服务端,再由服务端转发给目标客户端。
1 协议概念
当今计算机软硬件发展已经较为完善,用户在计算机软硬件选择上更加多元化。这导致了不同计算机之间的通信出现了一定问题,如不同厂家生产的硬件设备存在的差异、不同操作系统之间的接口差异等。
为了解决这些差异带来的问题,实现不同设备之间的通信,两计算机之间的网络通信需要遵守一定的共同标准,也就是网络通信协议。
2 协议分层
在我们使用聊天软件与朋友进行聊天时,使用同样的语言,而语言事实上是人与人之间交流所共同遵守的一种协议。而聊天软件为了将交流内容传达给彼此,需要遵守网络通信协议。这两种协议为上下级关系。
对于用户来说,用户在聊天时并不关心聊天软件是如何实现通信的,硬件是如何传递消息的;对于软件来说,它并不能明白用户要求它发送的内容的含义,仅仅负责传递消息。每一层的对象只会与对方同一层的对象进行交流,如用户只会与朋友进行交流、聊天软件进程只会与服务端进程通信。在此过程中,下层对象服务于上层对象,这就形成了协议的分层。

3 OSI七层模型
OSI七层模型是一种对于不同计算机网络模块的逻辑设计规范。它把网络从逻辑上自顶向下分为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。该模型的概念清楚、理论完善,现行计算机网络结构大多遵守该模型设计。
在学习网络通信过程中,更常使用TCP/IP五层模型。该模型将应用层、表示层和会话层这三层统一归为应用层,形成五层模型。将应用层进行简化,更注重下层数据传输过程。

这里以OSI七层模型解释一下各层的主要作用:
应用层:直接为用户提供服务。应用层通常由向用户提供服务的应用程序组成,用户可客户端程序向服务端发送请求报文,经网络传输后,由服务端程序解析并响应,由此实现服务。常见的应用层协议有:HTTP、FTP、SMTP、DNS等。

表示层:对应用层请求进行格式转换。以HTTP协议为例,其请求报文和响应报文的结构通常由首行、头部字段和正文组成,而在程序中,通常以结构体或类来组织这些报文结构;然而,在网络通信中,数据通常是以字节流的形式传递。因此,在将应用层报文通过网络传播前,需将其报文以字节流形式组织起来,这个过程就是对请求进行格式转换。
会话层:用于建立和断开通信两端间的连接。对于面向连接的传输层协议(如TCP协议),其通信双方在通信前需建立连接,也可称建立会话。例如:使用ssh协议远程登录,每次登录时需要为通信双方建立会话。
传输层:确保数据正确传输。传输层需要保证将上层报文传输至指定的网络设备上指定的应用程序。例如,当两位用户之间使用微信进行通信时,当一方发送信息后,传输层需要保证该信息被发送至对方计算机中的微信程序中,而不是其他计算机、或对方计算机的其它程序。同时,部分传输层协议可以保证传输可靠性和流量控制等。传输层协议主要包括TCP协议和UDP协议。
网络层 :地址管理与路由选择。IP地址是大家熟知的用于标识计算机网络身份的地址,常见的4字节点分十进制IP地址就是IPv4协议地址,如"192.168.0.1"。网络层的另一个功能是路由选择,在网络中,并不是任意两台网络设备均由物理通信线路直接连接,两个网络设备间的通信可能需要通过其他网络设备(如路由器)的转发,这些中间设备称为节点,而路由选择就是为了找到通信双方之间使用节点连接的可用的网络路径。
数据链路层:提供相邻节点间的可靠数据传输。通过检错、纠错机制,确保两个相邻网络节点的物理层传递的数据可靠性。
物理层:负责信号在物理介质上的传输。通过信号调制技术、规定接口标准,使用物理介质完成两个网络设备间的信号传输。