URL中使用哪个端口字节顺序?

问题描述 投票:0回答:1

当您要绑定到C中的端口时,必须使用htons(port)将端口从主机字节顺序转换为网络字节顺序。发生这种情况是因为端口号直接复制到TCP数据包,因此它们必须在小端和大端机器上匹配。

考虑下面的示例在C:

int port = 5000;
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(port);

注意使用htons。现在,如果您运行netstat -anp --tcp(在Linux上),您将看到0.0.0.0:5000正在被监听。似乎端口号使用主机字节顺序。

现在,出现一个问题:如果端口号在URL中是host-endian,这是否意味着big-endian客户端不能使用http://a.b.c.d:5000 URL连接到侦听0.0.0.0:5000的little-endian服务器?] >

当您要绑定到C中的端口时,必须使用htons(port)将端口从主机字节顺序转换为网络字节顺序。发生这种情况是因为端口号被直接复制到TCP ...

url networking port endianness
1个回答
0
投票

不,您几乎肯定会在错误的抽象级别错误地应用规则。

© www.soinside.com 2019 - 2024. All rights reserved.