[程序员] socket 有点小疑问,想请教下

在 TCP 编程中,服务器先创建一个监听 socket
然后 bind ,listen
客户端请求进来,经过 3 次握手放到已连接队列中
accept 从队列中取出,创建一个连接
用户检查连接的 IO 事件,处理

为什么很多 C 博客会把连接叫做已连接 socket,一个 socket 不是只由 IP 和端口决定
而连接是由客户端的 socket 和服务器的 socket 共同决定,根本不是一个概念

已连接 socket 和监听 socket 有啥区别,总不能再给已连接 socket 重新分配一个新的端口?
又或者说已连接 socket 就是一个每个连接独有的一份监听 socket 拷贝?
毕竟数据收发要通过 socket 的

在多个客户端的连接,服务器响应它们的时候,怎么处理的?
是共用一个监听 socket 回复吗?
还是使用各自连接里的已连接 socket ?
那不同客户端连接的已连接 socket 服务器是怎么区分?
为每个已连接 socket 分配不同端口?

还有 http1.1 中一个客户端和服务器之间可以建立多个 tcp 连接是怎么回事?
多个 tcp 连接之间怎么区分?毕竟它们的源 IP 端口和目的 IP 端口都一样

发表回复

您的电子邮箱地址不会被公开。