ping程序是实质上是要求对方返回一个icmp协议的回显应答,而icmp是透过IP协议传输,IP协议直接就给予以太网驱动程序处理,而端口是TCP和UDP的事情了,ping不会用到端口的,你硬要解析用什么号码来区分其他服务的话就只能说IP协议类型为1是ICMP,ICMP类型0代码0是回显应答,以太网类型字段为0x0800是IP协议。ICMP只是第三层的事情,端口是第四层的事情。
至于操作系统进程、线程的问题那是高层的问题,是操作系统怎样调用下层的服务,ping程序是将icmp报文中的标识符字段直接和进程ID挂钩,和你提问的内容没什么大关系。
-----
ARP是第二层和第三层之间的协议,不能将它定界太严格。
ARP广播,子网每个主机都接收到是应为每个接口都无时不刻地侦听着链路,接收所有的信号,把信号解析后,发现目的地不是自己的就不理会它,假如目的地是自己,就回应。
首先您要知道ICMP数据报实际上只是一个基于IP的协议;它的主要功能是路由和错误处理;我们平常使用的PING,就是一个等待ICMP数据包传回的例子;比如您使用PING 218.85.138.72,那么如果您的主机和218.85.138.72的主机在物理上是连通的话,那么218.85.138.72主机会传回一个ICMP数据包告诉您“我是存在的”您不用太担心ICMP数据包对您的机子会有影响;金山毒霸的防火墙可能是阻止了其他的IP使用ICMP报文对您的探测,使您在网络上回应“我不存在”,这样可以防止一些主动的恶意连接。
当然会了,每一个命令协议都会用到端口号的。
我也给你说不太明白,大概说下 吧。
就是现在操作系统都是多任务、多用户。具有不同进程、线程。
所以每一个数据必须经过端口来确认、划分。要不就乱了。
打个比方:网页浏览器跟迅雷下载 如果一个端口,没有协议划分。是不是没法进行了。
不用端口。从网卡接收数据,通过ICMP协议,解析数据包