我们知道TCP套接字是端口号和IP地址。TCP套接字连接是三路握手吗: SYN数据包、SYN数据包和ACK数据包?
TCP套接字连接是否遵循TCP堆栈?
TCP连接是否遵循TCP协议栈进行数据传输?
我的问题是TCP堆栈、TCP连接和TCP套接字连接是如何相互关联的?我们怎么能区分他们呢?而套接字连接以后使用IP地址,那是由OS负责的吗?
发布于 2022-04-11 12:31:16
TCP连接由一对套接字(本地和远程)标识。连接到远程TCP和握手可以为您提供双向连接。它就像主机之间的一对管道(每个方向一个),而管道一端的任何东西都会从另一端流出。
RFC 793,传输控制协议解释说(请参阅亮点,但RFC要详细得多):
多路复用:为了允许单个主机中的许多进程同时使用TCP通信设施,TCP在每个主机内提供一组地址或端口。从因特网通信层与网络和主机地址连接,形成套接字。一对套接字唯一地标识每个连接。也就是说,可以在多个连接中同时使用套接字。端口到进程的绑定由每个主机独立处理。但是,将经常使用的进程(例如“记录器”或分时服务)附加到向公众公开的固定套接字上是有用的。然后可以通过已知地址访问这些服务。建立和学习其他进程的端口地址可能需要更动态的机制。连接:上面描述的可靠性和流控制机制要求TCPs初始化和维护每个数据流的某些状态信息。此信息(包括套接字、序列号和窗口大小)的组合称为连接。每个连接都由标识其两侧的一对套接字唯一指定。当两个进程希望进行通信时,它们的TCP必须首先建立连接(初始化双方的状态信息)。当它们的通信完成后,连接将被终止或关闭,以释放资源用于其他用途。由于必须在不可靠的主机和不可靠的internet通信系统之间建立连接,因此采用了一种基于时钟序列号的握手机制,以避免连接的错误初始化。
https://networkengineering.stackexchange.com/questions/78519
复制相似问题