网络通信概述
网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信,属于 IPC 的一种, 通常称为 socket IPC,如图中所示。所以网络通信是为了解决在网络环境中,不同主机上的应用程序之间的通信问题。 大概可以分为三个层次,如下所示:
- 硬件层:网卡设备,收发网络数据
- 驱动层:网卡驱动(Linux 内核网卡驱动代码)
- 应用层:上层应用程序(调用 socket 接口或更高级别接口实现网络相关应用程序)

在硬件上,两台主机都提供了网卡设备,也就满足了进行网络通信最基本的要求,网卡设备是实现网络数据收发的硬件基础。并且通信的两台主机之间需要建立网络连接,这样两台主机之间才可以进行数据传输,譬如通过网线进行数据传输。网络数据的传输媒介有很多种,大体上分为有线传输(譬如双绞线网线、 光纤等)和无线传输(譬如 WIFI、蓝牙、ZigBee、4G/5G/GPRS 等),PC 机通常使用有线网络,而手机等移动设备通常使用无线网络。
在内核层,提供网卡驱动程序,驱动底层网卡硬件设备,同时向应用层提供 socket 接口。
在应用层,应用程序基于内核提供的 socket 接口进行应用编程,实现自己的网络应用程序。需要注意的是,socket 接口是内核向应用层提供的一套网络编程接口,所以我们学习网络编程其实就是学习 socket 编程,如何基于 socket 接口编写应用程序。
除了socket 接口之外,在应用层通常还会使用一些更为高级的编程接口,譬如 http、网络控件等,那么这些接口实际上是对 socket 接口的一种更高级别的封装。在正式学习 socket 编程之前,我们需要先了解一些网络基础知识,为后面的学习打下一个理论基础。
网络通信知识庞大,其中涉及到一大堆的网络协议(TCP/IP 协议族) ,笔者不可能把这些内容给大家介绍清楚,本文仅仅只是进行简单介绍,以了解为目的。

网络通信涉及不同主机上进程间的通信,主要分为硬件层、驱动层和应用层。硬件层包括网卡设备,驱动层处理网卡驱动,应用层则通过socket接口进行编程。文章介绍了OSI七层模型和TCP/IP模型,强调了数据在各层的封装与拆封过程,以及网络协议在通信中的作用。
1878

被折叠的 条评论
为什么被折叠?



