素材牛VIP会员
多个应用程序进程可能通过同一个TCP端口传输数据吗?
 阿***扫  分类:Python  人气:1660  回帖:5  发布于6年前 收藏

下边的这段话.

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

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

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

讨论这个帖子(5)垃圾回帖将一律封号处理……

Lv6 码匠
雨***技 其它 6年前#1

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

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

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

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

# ps -elf | grep httpd | grep -v grep

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

# lsof -i tcp:80

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

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

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

Lv6 码匠
真***名 其它 6年前#2

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

Lv4 码徒
ma***kk 交互设计师 6年前#3
  1. FTP的21,并不是绑死的,可以用别的端口做 FTP ,也可以用 21 端口做别的。

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

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

Lv5 码农
36***2q Linux系统工程师 6年前#4

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

Lv2 入门
一***句 职业无 6年前#5

端口说白了就是

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

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

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取