java udp 同一个端口,为什么可以同时在TCP和UDP上使用相同的端口?

其他答案是正确的,但有点不完整 .

IP(又名"INET")套接字"connection"(即两个进程之间的通信,可能在不同的机器上)由5元组定义:协议,源地址,源端口,目的地址,目的端口 . 您可以看到,这不仅限于TCP等有状态连接 .

这意味着您可以将不同的进程绑定到该5元组的任何唯一实例 . 因为“协议”(例如TCP和UDP)是区分因素的一部分,所以每个都可以具有不同的过程 .

从理论上讲,如果它们绑定到不同的接口(网卡,环回等),你可以将不同的服务绑定到同一个TCP端口,尽管我从未尝试过 .

但是,标准做法是始终在同一端口号上使用相同的服务 . 如果同时支持UDP和TCP,则它们只是与同一服务通信的不同方式 . 例如,DNS使用端口53上的UDP进行查找,因为它们是小请求,并且比创建TCP连接更快,但DNS也在端口53上使用TCP进行“转移”,这些转移很少并且可能包含大量数据 .

最后,完全准确,它不一定是5元组 . IP使用"protocol"传递到下一层,例如TCP和UDP,尽管还有其他层 . TCP和UDP分别根据剩余的4个项目单独区分连接 . 可以在IP之上创建使用完全不同(可能是无端口)区分机制的其他协议 .

然后有不同的套接字“域”,例如“unix”套接字域,它与“inet”完全不同,并使用文件系统进行寻址 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值