如果有多个进程使用TCP,那么当TCP接收到数据时,根据端口号知道数据是属于哪个进程的。但是,如果有多个进程都使用ICMP,ICMP不使用端口号,那么当ICMP接收到数据时,怎么知道该数据是属于哪个进程的呢?
对于 ICMP 套接字,ICMP id 就是进程号。
对于 raw 套接字,程序自己记住 id。比如 Linux 的 ping 命令就会判断收到的 ICMP 包是不是对应自己发出的。