用户进程可以在发起 tcp 请求的时候,自己选择 src port 吗?
linux、win、mac 上,使用 tcp 访问对面,我的 src port 可以用 c、c++、java、python 自己写在代码里面指定吗?还是说 src port 是 os 随机选择,作为 app 是不能自己选择的?
用户进程可以在发起 tcp 请求的时候,自己选择 src port 吗?
linux、win、mac 上,使用 tcp 访问对面,我的 src port 可以用 c、c++、java、python 自己写在代码里面指定吗?还是说 src port 是 os 随机选择,作为 app 是不能自己选择的?
java中是可以指定使用哪个源端口的,如果指定的端口已被使用是会直接报错的。当你不指定的时候才是os随机给你一个空闲的端口,可以在各个os类似任务管理器的软件中查看各个应用的端口
在TCP连接中,源端口(Source Port)是用户进程或应用程序指定的本地端口。操作系统提供了一定的接口,允许应用程序在建立连接的时候指定源端口,但是这个端口必须在可用端口范围内,并且不能与其他已经被占用的端口重复。如果应用程序没有指定源端口,操作系统会随机选择一个可用端口作为源端口。
在Linux、Windows、Mac等操作系统上,可以使用C、C++、Java、Python等编程语言的socket API来指定源端口。以Python为例,可以通过socket库中的bind()
函数指定源端口,如下所示:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('0.0.0.0', 8888))
在这个例子中,bind()
函数指定了本地IP地址为0.0.0.0
,本地端口为8888
,作为TCP连接的源端口。如果不指定端口,操作系统会自动选择一个可用端口。
15 回答8.2k 阅读
7 回答3.2k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
1 回答3.2k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
TCP/IP 连接由四元组标识:{源 IP、源端口、目标 IP、目标端口}。要建立 TCP/IP 连接,只需要目标 IP 和端口号,操作系统会自动选择源 IP 和端口。
也就是
源端口
由操作系统决定,与编程语言无关参考此答案