什么是套接字?这是一个过程吗?

时间:2015-02-21 17:11:03

标签: process operating-system

我正在研究os概念,我发现socket是通信的终点。现在究竟什么是套接字?它是通过系统通信的过程吗? 提前致谢

2 个答案:

答案 0 :(得分:0)

通过阅读维基百科文章,我可以看出为什么你可能会感到困惑。

套接字是虚拟设备。也就是说,它是一个用软件编写并且没有物理设备的设备。因此,您可以读取和写入套接字,就像您对终端所做的那样。

套接字成对工作以进行通信,通常是双向的。一个读取到套接字(A)并写入套接字(B)---或者----写入套接字(A)并从套接字读取---或---来回切换。

通常套接字用于网络通信。它们通常可以支持多种协议(TPC / IP,UDP / IP,甚至DECnet - 色域取决于底层系统)。

套接字也可用于单个系统上的进程间通信。

答案 1 :(得分:0)

大多数c系列语言及其基础语言将套接字实现为Berkeley sockets,而套接字实现为file descriptors。来自维基百科:

  

在Unix的传统实现中,文件描述符索引为   内核维护的每个进程文件描述符表,   将索引转换为全系统打开的文件的系统范围表   进程,称为文件表。该表记录了   已打开哪个文件(或其他资源):用于读取,   编写,附加以及其他可能的方式。它还索引到   第三个表称为inode表,它描述了实际的   基础文件。[3]为了执行输入或输出,过程通过   通过系统调用到内核的文件描述符,以及   内核将代表进程访问文件。该过程确实   没有直接访问文件或inode表的权限。

因此,在较高级别上,套接字是作为文件实现的,其文件描述符或句柄被引用为套接字的标识符。