本港口的变化,当一个服务器接受一个TCP连接?

问题描述 投票:20回答:3

当客户端连接到使用TCP服务器,针对TCP流创建一个新的套接字。是否连接保持连接已作出或是否得到换到其他端口相同的端口上?

network-programming client-server tcp
3个回答
22
投票

新插座介绍,因为每个建立的连接需要一个唯一的文件描述符(也在监听的文件描述符不同),这映射到应用程序级的概念,但是是不一样的,一个TCP会话。会议本身是由源地址和目的地址和端口的组合标识。源(客户端)端口通常是随机选择,而目的地(服务器)端口是监听端口。无需额外的端口分配。


6
投票

accept服务器将使用在连接的原始套接字的服务器端的同一个端口上返回新的描述符关联的插座(假设“正常”的定义,在客户端启动连接)。新的插座将有一个不同的客户端的端口号(从查看服务器的点的远程端口)。


5
投票

服务器使用相同的端口倾听和接受新的连接,并传达到远程客户端。

让我给你举一个例子,(在Linux系统):

首先,启动由蟒蛇一个http server

xiongyu@ubuntu:~$ sudo python -m SimpleHTTPServer 500
Serving HTTP on 0.0.0.0 port 500 ...

第二次使用nc命令连接到http server,在这里我们启动两个客户端通过:

xiongyu@ubuntu:~$ nc 0.0.0.0 500

使用netstat看到端口5000的netstate:

xiongyu@ubuntu:~$ netstat -natp |grep ':500'
tcp    0      0 0.0.0.0:500         0.0.0.0:*          LISTEN      54661/python
tcp    0      0 127.0.0.1:51586     127.0.0.1:500      ESTABLISHED 57078/nc
tcp    0      0 127.0.0.1:51584     127.0.0.1:500      ESTABLISHED 54542/nc
tcp    0      0 127.0.0.1:500       127.0.0.1:51586    ESTABLISHED -
tcp    0      0 127.0.0.1:500       127.0.0.1:51584    ESTABLISHED 54661/python

你可以看到,HTTP服务器使用端口500来LISTEN客户端,连接到服务器的新客户端后,它仍然使用端口500与客户communite,但有一个新的文件描述符。

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