Linux网络通信与套接字编程详解
1. 网络通信基础
在网络通信中,进程间通信(IPC)最初适用于通过 fork 相关联的进程。而将IPC扩展到在不同主机上执行的无关进程,才能实现真正的网络通信。对于网络通信而言,独立的进程必须能够以异步方式发起和/或接受通信请求,无论通信进程是在同一台计算机上,还是在网络中的不同主机上。
如今标准的Linux IPC最早由伯克利UNIX在20世纪80年代引入,该方案以套接字机制为核心,并且很好地支持互联网协议,其广泛应用推动了互联网的迅猛发展。
Linux IPC提供了对一组由协议族表征的通信域的访问,重要的IPC域包括:
- 本地域 :使用Linux套接字类型文件和管道机制,用于本地Linux系统内进程间的通信。
- 互联网域(IPv4和IPv6) :使用相应的互联网协议进行本地 - 远程通信。
此外,还存在其他域,例如ATMPVC域(异步传输模式永久虚拟连接)。IPC通信域的特点包括寻址方案、协议和底层通信设施等,其核心机制是套接字。
套接字是特定通信域内的通信端点,可被分配一个名称(即地址),以便其他进程引用。进程通过自己的套接字与同一域内属于不同进程的另一个套接字进行通信(交换数据),通信通过一对协作的套接字进行,每个套接字被称为对方的对等方。在本地域中,套接字用文件系统路径名命名,例如 /tmp/soc ;在互联网域中,套接字地址更为复杂,由地址族、IP地址和传输层端口号组成。
在同一域中,不同类型的套接字使用不同的通信
超级会员免费看
订阅专栏 解锁全文
1339

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



