一、IP协议
IP协议是TCP/IP协议的动力,它为·上层协议提供不可靠、无状态、无链接的服务。
无状态是指通信双方传输数据状态的不同步,因此所有的IP数据报的发送、传输和接受都是相互独立的、没有上下文关系。这意味着它无法处理乱序和重复的IP数据报。但无状态的优点也很明显:简单、高效,我们无需为保持通信而分配一些内核资源,传输数据时也不用携带状态信息。
不可靠体现在IP协议不能保证数据准确的发送到接受端。如果IP发送端检测到发送失败,它只会通知上层协议发送失败,而不会试图重传。
IPV4的头部结构:
IP分片:当IP数据报的长度超过帧的MTU是,它将会被分片传输。分片的过程可能发生在发送端上,也可能发生在中转路由器上。
MTU的长度为1500个字节。IP报头长度为20,所以传输数据部分最多是1480。
二、ICMP协议
ICMP(Internet Control Message Protocol)因特网控制报文协议。它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP协议与ARP协议不同,ICMP靠IP协议来完成任务,所以ICMP报文中要封装IP头部。它与传输层协议(如TCP和UDP)的目的不同,一般不用来在端系统之间传送数据,不被用户网络程序直接使用,除了想Ping和Tracert这样的诊断程序。
三、Ping
ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信
ping 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP
的回显应答。回显请求数据报(" pings ")含有一个 IP 及 ICMP
的报头,后跟一个``时间值关键字''然后是一段任意长度的填充字节用于把保持分
组长度为16的整数倍。以下是程序的选项:
-c count 在发送(和接收)了正好数量为 count
的回显应答分组后停止操作。在发送了 count
个分组后没有收到任何分组的特别情况是发送导致了终止(选程主机或网关
不可达)。
-d 在所用的套接字上使用 SO_DEBUG 选项。
-f 以高速方式来作 ping
。以分组返回的速度来输出其它分组或每秒输出百次。当收到每个回显应答并打印一个退格符时,对每个回显请求都打印一个句点``.''。这可以快速显示出丢弃了多
少个分组,只有超级用户可以用这个选项。这(操作)对网络要求非常苛刻,应该慎重使用。
-i wait 在发送每个分组时等待 wait
个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。
-l preload 如果指定 preload ,那么 ping
程序在开始正常运行模式前尽可能快地发送分组。同样只有超级用户可以用
这个选项。
-n 只以数字形式输出信息。这样就不尝试去查找主机名了。
-p pattern
可以指定最多16个填充字节用于保持分组长度为16的整数倍。在网络上诊断与数据相关问题时此选项很有用。例如``-p
ff''将使发出的分组都用全1填充数据区。
-q 静态输出。在程序启动和结束时只显示摘要行。