当我用服务器打开TCP(在7层OSI上)时,第5层创建带有端口号和IP的套接字。
我想知道这个套接字是否包含我的IP /服务器IP,以及我的(随机)端口或服务器端口(例如80为HTTP)
当我用服务器打开TCP时,我们一起打开TCP 所以这意味着我们有共同的套接字?
答案 0 :(得分:0)
当我用服务器打开TCP时(在7层OSI上)
忘记OSI。它已过时,TCP / IP不遵循它。它有自己的图层模型。
第5层创建带端口号和IP
的套接字
TCP在TCP层创建它。
我想知道这个套接字是否包含我的IP /服务器IP,以及我的(随机)端口或服务器端口(例如,80表示HTTP)。
以上所有。
当我用服务器打开TCP时,我们一起打开TCP所以这意味着我们有共同的套接字?
没有。套接字是连接的端点。有两个端点和两个插座。
答案 1 :(得分:0)
TCP被称为第4层 - 或传输层,因此暂时忽略OSI模型。
通常 - '套接字'只是一个没有任何身份的终点。当您bind
到地址或connect
到地址时,套接字会获得它的身份。
当您bind
到某个地址时 - 您只能获得本地端口和本地IP地址,而不是远程IP和端口地址。因此,除非你listen
,否则这样的套接字不是很有用。这通常在服务器上完成。另请注意,您可以绑定到“机器上的所有地址”,然后您实际上没有任何一个端点本身。
当您connect
到服务器(TCP服务器@端口80说)时,您的OS TCP / IP堆栈使用本地IP地址并选择一个随机端口连接到服务器套接字(比如说)一个listen
以上)。这是所有4个地址进入画面的时候。此套接字是一个连接的套接字,将显示所有4个值。