第1页共10页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共10页Linux环境进程间通信(六):套接字2008-04-1013:16在本专题的前面几个部分,如消息队列、信号灯、共享内存等,都是基于SysV的IPC机制进行讨论的,它们的应用局限在单一计算机内的进程间通信;基于BSD套接口不仅可以实现单机内的进程间通信,还可以实现不同计算机进程之间的通信
本文将主要介绍BSD套接口(sockets),以及基于套接口的重要而基本的API
一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信
通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域
比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域
1、背景知识linux目前的网络内核代码主要基于伯克利的BSD的unix实现,整个结构采用的是一种面向对象的分层机制
层与层之间有严格的接口定义
这里我们引用[1]中的一个图表来描述linux支持的一些通信协议:第2页共10页第1页共10页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共10页我们这里只关心IPS,即因特网协议族,也就是通常所说的TCP/IP网络
我们这里假设读者具有网络方面的一些背景知识,如了解网络的分层结构,通常所说的7层结构;了解IP地址以及路由的一些基本知识
目前linux网络API是基于BSD套接口的(系统V提供基于流I/O子系统的用户接口,但是linux内核目前不支持流I/O子系统)
套接口可以说是网络编程中一个非常重要的概念,linux以文件的形式实现套接口,与套接口相应的文件属于sockfs特殊文件系统,创建