我正在研究os概念,我发现socket是通信的终点。现在究竟什么是套接字?它是通过系统通信的过程吗? 提前致谢
答案 0 :(得分:0)
通过阅读维基百科文章,我可以看出为什么你可能会感到困惑。
套接字是虚拟设备。也就是说,它是一个用软件编写并且没有物理设备的设备。因此,您可以读取和写入套接字,就像您对终端所做的那样。
套接字成对工作以进行通信,通常是双向的。一个读取到套接字(A)并写入套接字(B)---或者----写入套接字(A)并从套接字读取---或---来回切换。
通常套接字用于网络通信。它们通常可以支持多种协议(TPC / IP,UDP / IP,甚至DECnet - 色域取决于底层系统)。
套接字也可用于单个系统上的进程间通信。
答案 1 :(得分:0)
大多数c系列语言及其基础语言将套接字实现为Berkeley sockets,而套接字实现为file descriptors。来自维基百科:
在Unix的传统实现中,文件描述符索引为 内核维护的每个进程文件描述符表, 将索引转换为全系统打开的文件的系统范围表 进程,称为文件表。该表记录了 已打开哪个文件(或其他资源):用于读取, 编写,附加以及其他可能的方式。它还索引到 第三个表称为inode表,它描述了实际的 基础文件。[3]为了执行输入或输出,过程通过 通过系统调用到内核的文件描述符,以及 内核将代表进程访问文件。该过程确实 没有直接访问文件或inode表的权限。
因此,在较高级别上,套接字是作为文件实现的,其文件描述符或句柄被引用为套接字的标识符。