理解TCP监听套接字

问题描述 投票:0回答:1

我最近开始研究 C 语言的套接字实现,我对 TCP 服务器的实现方式感到困惑。据我了解,服务器有一个监听套接字,它接受来自客户端的连接请求,然后为每个客户端创建一个新的套接字来发送和接收数据。如果是这种情况,TCP 握手何时何地启动连接(在客户端和侦听套接字之间创建新连接?) 有人可以帮我澄清这个概念吗?

c sockets tcp tcpserver
1个回答
0
投票

这里 TCP 握手的“魔力”发生在操作系统的内核中。

POSIX API 具有套接字函数,可以从代码中抽象出所有低级部分,因此您不必担心 TCP 握手、数据包操作等。

从用户空间来看,您需要知道的是您有一个文件描述符可供读取和/或写入,用户空间应用程序不关心握手或是否有握手,除非您正在使用内核绕过 - 但在这种情况下,您将不会使用 POSIX 套接字 API。

当然,如果您想知道,您需要查看提供这些函数的内核代码,因为它是特定于实现的(尽管这些实现彼此不会有太大不同)。

© www.soinside.com 2019 - 2024. All rights reserved.