Sockets 使用同一端口的两个进程?
所以我研究了dropbox在我的计算机上使用的端口,并试图看看如果我在该端口上创建了一个新的http服务器会发生什么。令人惊讶的是,它奏效了。所以dropbox和我的http服务器都在同一个端口上运行,但是传入的请求会根据源地址路由到不同的应用程序Sockets 使用同一端口的两个进程?,sockets,http,tcp,Sockets,Http,Tcp,所以我研究了dropbox在我的计算机上使用的端口,并试图看看如果我在该端口上创建了一个新的http服务器会发生什么。令人惊讶的是,它奏效了。所以dropbox和我的http服务器都在同一个端口上运行,但是传入的请求会根据源地址路由到不同的应用程序 lsof -i tcp:51311 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Dropbox 3811 user 18u IP
lsof -i tcp:51311
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Dropbox 3811 user 18u IPv4 0xdedc291239eb197f 0t0 TCP 172.20.10.2:51311->108.160.163.34:http (ESTABLISHED)
node 3984 user 11u IPv4 0xdedc29123b1494cf 0t0 TCP *:51311 (LISTEN)
我想知道这是怎么回事。我原以为操作系统会拒绝绑定我的http服务器,因为端口已经分配给dropbox,但令我惊讶的是,它居然成功了。有人想到了吗?Dropbox使用的HTTP端口是108.160.263.34,而不是您的本地主机
端口51311被用作一个出站端口和一个侦听端口。不是“在同一端口上运行的两个服务”。否则将有两条侦听线路。Dropbox使用的HTTP端口位于108.160.263.34,而不是您的本地主机
端口51311被用作一个出站端口和一个侦听端口。不是“在同一端口上运行的两个服务”。否则将有两条侦听线。TCP套接字与4元组(源ip、源端口、目标ip、目标端口)匹配。只要这四个端口不冲突,就可以进行端口重用 只要你的守护进程没有收到来自
108.160.163.34:80的连接,你的堆栈就可以处理它。如果服务器108.160.163.34
表现良好,它将不允许应用程序启动到源端口为80的套接字(172.20.10.2:51311
)的连接。(bind()
应该失败,因为地址已经在使用中
)
如果表现不好,现有的dropbox连接将收到一个意外的数据包(错误的序列号空格),堆栈将RST
它。TCP套接字与4元组(源ip、源端口、目标ip、目标端口)匹配。只要这四个端口不冲突,就可以进行端口重用
只要你的守护进程没有收到来自108.160.163.34:80的连接,你的堆栈就可以处理它。如果服务器108.160.163.34
表现良好,它将不允许应用程序启动到源端口为80的套接字(172.20.10.2:51311
)的连接。(bind()
应该失败,因为地址已经在使用中
)
如果表现不好,现有的dropbox连接将接收到一个意外的数据包(错误的序列号空格),堆栈将RST
它。OP正在谈论他的设备上的端口51311。端口51311被用作一个出站端口和一个侦听端口。不是“在同一端口上运行的两个服务”。否则会有两条监听线。根据我的阅读,我认为他是想说“两个进程使用同一端口”。任何事情都是可能的。我正在回答他实际提出的问题。OP正在谈论他的盒子上的51311端口。51311端口被用作一个出站端口和一个侦听端口。不是“在同一端口上运行的两个服务”。否则会有两条监听线。根据我的阅读,我认为他是想说“两个进程使用同一端口”。任何事情都是可能的。我在回答他实际提出的问题。