python socket介绍

Python 只支持AF_UNIX,AF_NETLINK,和AF_INET 家族。由于我们只关心网络编程,所以在本

章的大部分时候,我们都只用AF_INET。<<核心第二版>>




套接字是一种具有之前所说的“通讯端点”概念的计算机网络数据结构。网络化的应用程序在
开始任何通讯之前都必需要创建套接字。就像电话的插口一样,没有它就完全没办法通讯。
套接字起源于20 世纪70 年代加利福尼亚大学伯克利分校版本的Unix,即人们所说的BSD Unix。
因此,有时人们也把套接字称为“伯克利套接字”或“BSD 套接字”。一开始,套接字被设计用在同
一台主机上多个应用程序之间的通讯。这也被称进程间通讯,或IPC。套接字有两种,分别是基于文
件型的和基于网络型的。
Unix 套接字是我们要介绍的第一个套接字家族。其“家族名”为AF_UNIX(在POSIX1.g 标准中
也叫AF_LOCAL),表示“地址家族:UNIX”。包括Python 在内的大多数流行平台上都使用术语“地址
家族”及其缩写“AF”。而老一点的系统中,地址家族被称为“域”或“协议家族”,并使用缩写“PF”
而不是“AF”。同样的,AF_LOCAL(在2000-2001 年被列为标准)将会代替AF_UNIX。不过,为了向后
兼容,很多系统上,两者是等价的。Python 自己则仍然使用AF_UNIX。
由于两个进程都运行在同一台机器上,而且这些套接字是基于文件的。所以,它们的底层结构
是由文件系统来支持的。这样做相当有道理,因为,同一台电脑上,文件系统的确是不同的进程都
能访问的。
另一种套接字是基于网络的,它有自己的家族名字:AF_INET,或叫“地址家族:Internet”。
还有一种地址家族AF_INET6 被用于网际协议第6 版(IPv6)寻址上。还有一些其它的地址家族,不
Edit By Vheavens
Edit By Vheavens
过,它们要么是只用在某个平台上,要么就是已经被废弃,或是很少被使用,或是根本就还没有实
现。所有地址家族中,AF_INET 是使用最广泛的一个。Python 2.5 中加入了一种Linux 套接字的支
持:AF_NETLINK(无连接[见下])套接字家族让用户代码与内核代码之间的IPC 可以使用标准BSD 套
接字接口。而且,相对之前那些往操作系统中加入新的系统调用,proc 文件系统支持或是“IOCTL”
等笨重的方案来说,这种方法显得更为优美,更为安全

你可能感兴趣的:(python socket介绍)