В чем разница между «Локальным портом» и «Исходным портом» в inet_sock.h в исходном коде ядра Linux? - PullRequest
1 голос
/ 23 марта 2019

Я запутался в разнице между переменными 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
 */

Что они обозначают? В чем разница между ними? Как их использовать?

1 Ответ

0 голосов
/ 24 марта 2019

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)
...