我对文件inet_num
中的变量inet_sport
和linux/include/net/inet_sock.h
之间的区别感到困惑,该文档只是说一个是“本地端口”,另一个是“源”端口”。
我将它们打印到终端,并且在每张袜子中,inet_num和inet_sport是不同的。而且我找不到关于此的更多文档。
/* linux/include/net/inet_sock.h */
/** struct inet_sock - representation of INET sockets
*
* @sk - ancestor class
* @pinet6 - pointer to IPv6 control block
* @inet_daddr - Foreign IPv4 addr
* @inet_rcv_saddr - Bound local IPv4 addr
* @inet_dport - Destination port
* @inet_num - Local port
* @inet_saddr - Sending source
* @uc_ttl - Unicast TTL
* @inet_sport - Source port
* @inet_id - ID counter for DF pkts
* @tos - TOS
* @mc_ttl - Multicasting TTL
* @is_icsk - is this an inet_connection_sock?
* @uc_index - Unicast outgoing device index
* @mc_index - Multicast device index
* @mc_list - Group array
* @cork - info to build ip hdr on each ip frag while socket is corked
*/
它们代表什么?它们之间有什么区别?它们有什么用?
答案 0 :(得分:0)
inet_num-主机字节顺序/协议类型的本地端口。
For TCP/UDP sockets - it is a local port
Linux allocates the local port from the rage defined by user or
initialized by kernel at boot
https://ma.ttias.be/linux-increase-ip_local_port_range-tcp-port-range/
For RAW sockets/other protocols (where sport is not req)- protocol type
inet_sport-网络字节顺序的源端口。这是您在
中看到的端口
包。
inet_sport = hton(inet_num)