Linux内核源代码中inet_sock.h中的“本地端口”和“源端口”有什么区别?

时间:2019-03-23 11:40:55

标签: linux-kernel network-programming

我对文件inet_num中的变量inet_sportlinux/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
 */

它们代表什么?它们之间有什么区别?它们有什么用?

1 个答案:

答案 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)
相关问题