答案1
引用手册:
FD 是文件的文件描述符编号 [...]
FD 后跟以下字符之一,描述文件打开的模式:[...] 你用于读取和写入访问;
TYPE 是与文件关联的节点的类型 - 例如,GDIR、GREG、VDIR、VREG 等。
或者IPv4对于 IPv4 套接字;
NODE是本地文件的节点号; [...] 或互联网协议类型 - 例如“TCP”;
NAME 是网络文件的本地和远程 Internet 地址;本地主机名或 IP 号后跟冒号 (':')、端口、
->
以及由两部分组成的远程地址; IP 地址可以报告为数字或名称,具体取决于 +|-M、-n 和 -P 选项;以冒号分隔的 IPv6 号码括在方括号内; IPv4 INADDR_ANY 和 IPv6 IN6_IS_ADDR_UNSPECIFIED 地址和零端口号用星号 ('*') 表示; UDP 目标地址后面可能是自最后一个数据包发送到目标以来经过的时间量; TCP、UDP 和 UDPLITE 远程地址后面可能是括号中的 TCP/TPI 信息 - 状态(例如,(ESTABLISHED)
,(Unbound)
)、队列大小和窗口大小(并非所有方言) - 类似于 netstat(1) 报告的方式;有关状态、队列大小和窗口大小的更多信息,请参阅 -T 选项说明或 OUTPUT FOR OTHER PROGRAMS 中 TCP/TPI 字段的说明;
因此,这里lsof
告诉您当前运行的进程 3932 的文件描述符 3nc
处于读+写模式(u
;尽管这与侦听套接字几乎不相关),并且指向绑定到 INADDR_ANY 和端口 1337 的侦听 IPv4 TCP 套接字。
nc
这是一个期望传入 TCP 连接登陆的套接字。
启动时nc
,fds 0、1 和 2 已经打开,因为按照惯例,这些文件是为标准输入、输出或错误保留的,因此当nc
调用socket()
系统调用来创建新套接字时,系统返回该进程的第一个空闲文件描述符: 3.
然后nc
通常会在该套接字上执行操作accept()
,当传入连接进入时,accept()
将返回已接受套接字的另一个文件描述符,该套接字实际上将携带传输的数据。再说一遍,这将是第一个免费的,所以很可能是 4。