Re: sockstat local address *:*

From: Daniel Lysfjord <lysfjord.daniel_at_smokepit.net>
Date: Thu, 28 Nov 2024 17:35:18 UTC
On 2024-11-28 18:07, Markus Graf wrote:
> Hi,
> 
> what does the *:* in the LOCAL ADDRESS column stand for?
> 
> sockstat -4l
> 
> USER     COMMAND    PID   FD  PROTO  LOCAL ADDRESS         FOREIGN 
> ADDRESS
> markus   soffice.bi 84571 9   tcp4   *:*                   *:*
> root     wpa_suppli 49000 3   udp4   *:*                   *:*
> other lines deleted
> 
> This can't mean listening on all ports on all interfaces, can it?
> 
> The system runs just fine.
> 
> The question is a bit hard to goole with the two asterisks :(
> 
> Best regards
> 
> Markus

Hi,

according to "man tcp":

DESCRIPTION
        The  TCP	protocol provides reliable, flow-controlled, two-way 
transmis-
        sion of data.  It  is  a	 byte-stream  protocol	used  to  support 
  the
        SOCK_STREAM abstraction.	 TCP uses the standard 
Internet	address	format
        and,  in	 addition, provides a per-host collection of "port 
addresses".
        Thus, each address is composed of an Internet  address  
specifying  the
        host  and network, with a specific TCP port on the host 
identifying the
        peer entity.

        Sockets utilizing the TCP protocol are either  "active"	or  
"passive".
        Active  sockets	initiate  connections to passive sockets.  By 
default,
        TCP sockets are	created	 active;  to  create  a	 passive  socket, 
  the
        listen(2)  system  call	must be	used after binding the socket 
with the
        bind(2) system call.  Only passive sockets may use the  accept(2) 
  call
        to  accept  incoming  connections.   Only  active  sockets  may 
use the
        connect(2) call to initiate connections.

        Passive sockets may "underspecify" their	 location  to  match  
incoming
        connection  requests  from  multiple  networks.	This 
technique,	termed
        "wildcard addressing", allows a single server  to  provide  
service  to
        clients	on multiple networks.  To create a socket 
which	listens	on all
        networks, the Internet address INADDR_ANY must be bound.	 The TCP 
  port
        may  still be specified at this time; if	the port is 
not	specified, the
        system will assign one.	Once a connection has  been  established, 
  the
        socket's	 address  is fixed by the peer entity's	location.  The 
address
        assigned	to the socket is the address associated	with the  
network  in-
        terface through which packets are being transmitted and received. 
  Nor-
        mally, this address corresponds to the peer entity's network.

seems like the last paragraph tells a story about non-specified ports 
(or port 0, as is mentioned elsewhere at times).