作者cole945 (躂躂..)
看板Network
标题Re: [问题] 多个使用相同 port 的网路程式如何辨别 …
时间Thu Nov 8 04:16:39 2007
※ 引述《prudent (prudent)》之铭言:
: 如题
: 如果说同一台电脑上执行了使用相同 port 的网路程式
"通常" 同一个port不能被不同程式共用~
更严谨一点讲,
以 TCP 来说, 每一个 address/port pair 只能被 bind 一次
可以是单一address与某个特定port, 或是全部的address与某个port
ex: 192.168.1.1:80 或 本机所有 *:80
如果想要特定的几个address(非本机所有address), 那就要每个addr各别bind
若是 SCTP 的话, 就可以直接指定特某几个addresses/port binding
一旦bind後就会被独站, 因此不同程式不能共用相同的 addresses/port
不过理论上同一电脑上的不同address/port
ex: 192.168.1.1:80 与 192.168.1.2:80
应可各别单独被不同程式使用 (我没试过, 不过应该可以)
: 在系统上是如何辨别彼此的呢
: 收到的封包怎麽样知道该丢给哪一个网路程式处理呢??
: 查书後,书上是写说有纪录一些 client 与 server 的讯息
应是以 source addr/port 与 dest addr/port 作辨别的依据
(我没看到什麽书上有明确这麽写, 但从 Linux 的 TCP 实作看起来是这样 .__.
有误还请其他高手指教)
: 但是到底纪录了什麽?? 以及纪录在哪里呢??
: 以下猜测
: 是记录了 PID 相关的资讯吗? 是纪录在作业系统核心内吗??
: 还是说记录在封包哪面??
系统自己利用 header 中的 saddr/port daddr/port
与系统内部维护的连线资讯来判断~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.128.156