1.不用bind函数进行绑定,是不是会得到一个默认的端口号? 
2.ICMP是网络层的,和端口号不相关的—— 
  我对ping命令程序有如下疑惑: 
  我ping了对方的主机(即,发送了一个ICMP),得到了对方的回显ICMP, 
  既然ICMP和端口无关,那么回显的ICMP为什么会找到该程序呢?
  会不会是由于设置了原始套接字之后,会把所有经过我的主机的ICMP包都拿了过来的呢?3.我的这个ping程序使用了原始套接字进行ICMP的发送和接收,但是,例子中没有bind,为什么?
  然而,路由跟踪tracert程序使用了原始套接字进行ICMP接收、使用UDP进行发送路由跟踪数据包,却必须要bind原始套接字,否则会出现接收错误,这又是为什么?  谢谢!!!

解决方案 »

  1.   


    1.不用bind函数进行绑定,是不是会得到一个默认的端口号?
    一般udp scoket server不用bind。TCP socket server要用bind.2.ICMP是网络层的,和端口号不相关的——
    我对ping命令程序有如下疑惑:
    我ping了对方的主机(即,发送了一个ICMP),得到了对方的回显ICMP,
    既然ICMP和端口无关,那么回显的ICMP为什么会找到该程序呢?
    会不会是由于设置了原始套接字之后,会把所有经过我的主机的ICMP包都拿了过来的呢?
    port在传输层被打包。ICMP是网络层的协议。socket的结构能关联进程3.我的这个ping程序使用了原始套接字进行ICMP的发送和接收,但是,例子中没有bind,为什么?
      然而,路由跟踪tracert程序使用了原始套接字进行ICMP接收、使用UDP进行发送路由跟踪数据包,却必须要bind原始套接字,否则会出现接收错误,这又是为什么?TCP socket才要求bind. 也就说应用程序若用tcp socket做服务器端才要求bind到某个网卡上