H5W3
当前位置:H5W3 > 其他技术问题 > 正文

多个应用程序进程可能通过同一个TCP端口传输数据吗?

下边的这段话.

clipboard.png

依照我的理解, 每个进程都是一个端口, 比如FTP的21, TELNET的23等, 都是独用的.

但是这段话中说, 多个应用程序可能通过同一个TCP端口传输数据. 让我不解.

Socket协议, 到底是因为什么问题而存在的.

回答:

注意断句!“多个”是修饰“应用程序”还是修饰“进程”的。

一般来说同一个电脑上多个“应用程序”是不能同时使用一个端口的。

但是,多个“进程”确是可以复用同一个端口的 — 很多操作系统允许子进程复用父进程使用的端口。 具体怎么协调由应用程序自身来控制,而为了区分进程自然得有个东西,这就是socket.

举个例子吧,随手找了个服务器,看看里面的apache服务的进程:

# ps -elf | grep httpd | grep -v grep
clipboard.png

再看看哪些进程使用了80端口:

# lsof -i tcp:80

clipboard.png

可以看到里面有很多httpd的进程都监听了80端口

所以呢… LZ你应该明白了吧。诸位也都散了吧。

有兴趣的话,可以参考下这个模拟Apache的小程序: https://gist.github.com/Clare…

回答:

我认为楼上的说的端口端口转发 例子是完全错误的,多个应用程序应该指的是客户端连接服务端 共用服务端的端口, 你socket bind已占用端口怎么可能不报错, 应用层根据端口对信息进行发送给各个应用程序,一个应用程序一个端口 怎么可能多个程序占用一个端口 因此 个人感觉楼主提到的应该是多个客户端

回答:

端口说白了就是

进程使用网卡的编号(0到65535(2^16)的整数)

tcp能分辨出是哪个进程(程序)之间的通信啊,socket(这里指的是http socket)就是为了实现两个网卡上两个进程的通信而存在的啊

回答:

  1. FTP的21,并不是绑死的,可以用别的端口做 FTP ,也可以用 21 端口做别的。

  2. 每个进程可以向操作系统申请多个端口,一个端口操作系统只会分配给一个进程。

  3. 多个程序需要使用相同端口的情况是存在的,比如 web 服务都想用 80 端口,可以使用代理程序做端口转发。

回答:

这种资料看起来就是误导人,21也叫端口,物理端口也叫端口,此端口非彼端口。意思就是物理端口只有一个,但是根据编号又虚拟出许多端口。

本文地址:H5W3 » 多个应用程序进程可能通过同一个TCP端口传输数据吗?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址