从服务器的角度来看,我知道TCP协议是如何工作的。 NAT用于知道哪个本地机器是端口号xx保留。
当我与服务器建立连接时,它会打开一个非保留端口。例如,我的livebox如何知道我保留了我的端口而不是其他计算机?
其他问题: - 对于客户端/服务器,每个插槽是否有一个端口?每个进程一个?每个线程一个? - 在服务器上,有一个套接字监听端口,一旦接受连接,它是否打开一个新端口?
答案 0 :(得分:0)
例如,我的livebox如何知道我保留了我的端口,而不是 其他电脑?
如果客户端在NAT后面,我假设您正在谈论。
是客户端是否与服务器联系。因此,当客户端通过您的路由器(为您提供NAT)将第一个数据包发送到服务器时。路由器保存到NAT表是客户端的地址和端口,所以当我得到答案时,他知道谁是客户端。
其他问题: - 对于客户端/服务器,每个端口是否有一个端口 插座?每个进程一个?每个线程一个? - 在服务器上,有 一个端口监听端口,一旦接受连接就行了 打开一个新港口?
我认为你混淆了一些概念。
在OSI协议和TCP / IP协议中,存在不同类型的层。
正如您所见,TCP(传输控制协议)位于应用层之下。
当你谈论 socket 时,你进入了应用层。所有决定: "使用相同的端口,为每个传入的请求绑定新端口"是通过特定的应用程序制作的。
网络套接字是计算机上连接的端点 网络。今天,计算机之间的大多数通信都是基于 互联网协议;因此大多数网络套接字都是Internet 插座。更准确地说,套接字是一个句柄(抽象引用) 本地程序可以传递给网络应用程序 编程接口(API)使用连接,例如"发送 关于此套接字的这些数据"。套接字内部通常很简单 整数,用于标识要使用的连接。