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