2010-10-29 16:25:00 romandion 阅读数 8257
  • 第07章-网络通信协议(OSI、TCP、UDP、IP、ARP、ICMP...

    课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为什么还要使用MAC地址 ARP工作过程及工作原理解析 ICMP知识解析 ping命令使用详解 tracert命令使用详解 TCP详解 UDP协议详解 网络通信协议(应用层)协议

    8101 人正在学习 去看看 深博

我们知道MTU基本上是1492长度。我现在上海电信,想测试下PING的包,最大允许多大。那么从选择一个域名,比如www.baidu.com。

使用ping -l [size] www.baidu.com。如果size太大的话,那么基本上就会发生超时。经过测试,当size = 1464的时候,Ping没有问题,但是当size = 1465的时候,就发生超时了。因此可以断定 ,icmp携带最大的内容长度,应该是1464。那么icmp 的头=1492 - 1464 - IP报文头[20] = 28 - 20 = 8个字节。

 

下图为IP分组的报文头格式,报文头的前20个字节是固定的,后面的可变。  

 

 

-------------------------------格式-------------------------------------  
  各种ICMP报文的前32bits都是三个长度固定的字段:type类型字段(8位)、code代码字段(8位)、checksum校验和字段(16位)

8bits类型和8bits代码字段:一起决定了ICMP报文的类型。常见的有:
  
  类型8、代码0:回射请求。
  
  类型0、代码0:回射应答。
  
  类型11、代码0:超时。
  
  16bits校验和字段:包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的。

下图是一张ICMP回射请求和应答报文头部格式

ICMP回射请求和应答报文头部格式

对于ICMP回射请求和应答报文来说,接下来是16bits标识符字段:用于标识本ICMP进程。

 

2016-04-13 17:30:33 congjiong8459 阅读数 8
  • 第07章-网络通信协议(OSI、TCP、UDP、IP、ARP、ICMP...

    课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为什么还要使用MAC地址 ARP工作过程及工作原理解析 ICMP知识解析 ping命令使用详解 tracert命令使用详解 TCP详解 UDP协议详解 网络通信协议(应用层)协议

    8101 人正在学习 去看看 深博

通常情况下,我们需要使用ping来测试网络状况,默认情况下 ping  ip  次数没有限制,但是有时候也需要ping一个大数据包进行测试。


linux下ping包的默认大小为64Byte

语  法:ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
例如:

1. 指定数据包大小为1000Byte:ping -s 1000 ip

2. 指定次数为4次,数据包大小为32767Byte:ping -c 4 -s 32767 ip

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27039319/viewspace-2080633/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27039319/viewspace-2080633/

2015-10-28 15:33:14 wangzhen209 阅读数 1866
  • 第07章-网络通信协议(OSI、TCP、UDP、IP、ARP、ICMP...

    课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为什么还要使用MAC地址 ARP工作过程及工作原理解析 ICMP知识解析 ping命令使用详解 tracert命令使用详解 TCP详解 UDP协议详解 网络通信协议(应用层)协议

    8101 人正在学习 去看看 深博
linux下ping包的默认大小为64Byte,次数不限。

缺省情况下,ping 命令将连续发送回送信号请求到显示器直到接收到中断信号(Ctrl-C). 中断键可以使用 stty 命令来更改。

语  法:ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

Linux下ping大数据包的格式;

1. 指定数据包大小为1500Byte:ping -s 1500 ip

2. 指定次数为4次,数据包大小为32767Byte:ping -c 4 -s 32767 ip


window下ping参数

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] [-S srcaddr] [-4] [-6] target_name

Windows下默认ping包次数为4次,ping包大小为32Byte:

1. 指定ping包大小为1500Byte:ping -l 1500 ip

2. 指定次数为6次,ping包大小为1500:ping -n 6 -l 1500 ip
2018-04-06 17:59:07 chengqiuming 阅读数 8137
  • 第07章-网络通信协议(OSI、TCP、UDP、IP、ARP、ICMP...

    课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为什么还要使用MAC地址 ARP工作过程及工作原理解析 ICMP知识解析 ping命令使用详解 tracert命令使用详解 TCP详解 UDP协议详解 网络通信协议(应用层)协议

    8101 人正在学习 去看看 深博
一 简介
如果一个数据包超过1500个字节,就需要将该包进行分片发送。通常情况下,是不会出现这种情况的。
下面通过使用ICMP包,来产生IP分片数据包。
使用ICMP包进行测试时,如果不指定包的大小,可能无法查看被分片的数据包。
由于IP首部占用20个字节,ICMP首部占8个字节,所以捕获ICMP包大小最大为1472字节。
但是一般情况下,ping命令默认的大小都不会超过1472。这样,发送的ICMP包就可以顺利通过,不需要经过分片后再传输。
如果想捕获到IP分片的包,需要指定发送的ICMP包必须大于1472字节。

二 实践部署
1 执行ping命令
ping 192.168.0.120 -l 3005
2 抓包分析
从以上输出信息,可以看到捕获到的每个包大小都是3005字节。
从该界面可以很清楚看到,和前面捕获到的数据包不同。在该界面的Protocol列,显示了IPv4协议的包。这是因为发送数据包过大,所有是经过了分片后发送。
上图中:
1480=1514-14-20(以太网侦大小-数据链路层头部-IP头部)
53=88-14-20-1(帧尾)

三 最大传输单元和最大报文大小
最大传输单元(MTU):指由IP包头和数据部分组成的IP数据包长度。
最大报文长度(MMS):是指TCP报文段内数据净载的最大长度,也即上层协议交付给TCP的每个数据单元的最大长度。

四 参考
2013-04-12 08:38:57 lailai186 阅读数 6031
  • 第07章-网络通信协议(OSI、TCP、UDP、IP、ARP、ICMP...

    课程内容如下: 通信协议的概念 ISO、OSI七层参考模型详解 TCP、IP模型详解 网络接口层详解 IP协议详解 IP地址和MAC地址特征分析 有了IP地址为什么还要使用MAC地址 ARP工作过程及工作原理解析 ICMP知识解析 ping命令使用详解 tracert命令使用详解 TCP详解 UDP协议详解 网络通信协议(应用层)协议

    8101 人正在学习 去看看 深博

用Delphi实现智能化Ping命令功能

众所周知,Ping命令是Windows系统自带的一个针对TCP/IP协议的可执行命令,

其主要作用是通过发送数据包并接收应答信息来检测两台计算机之间的网络是否连通

当网络出现故障时,可以用这个命令来检测故障和确定故障地点。但在MS-DOS方式下执行此命令,而且每秒钟执行一次Ping操作,显得似乎有些另类,今天,我们将实现智能化Ping命令的功能,并实现操作的可视化。

一、系统Ping命令的功能与执行

命令执行格式:Ping IP地址 参数

其中,参数最常用的就是-t,用于不间断Ping操作。在执行Ping的过程中,可以使用Pause键暂停,也可以使用Ctrl+Pause组合键显示截至当前时刻Ping操作的总次数、掉包次数以及掉包率,从而判断网络的稳定性。

Ping命令执行结果返回字节数(bytes)、执行时间(time)、生存时间(TTL)等信息。

二、编程原理

Ping命令是属于ICMP协议规定的,而ICMP是内嵌于IP层的,因此,

Ping是属于网络层的命令。

Ping的实现过程很简单,命令将引发IP层发送一个简单的IP包,而目的方收到这个包之后,将源和目的地址做一下交换,重新发出这个包即可

简单来说,为了避免数据包在网路上的传送路径造成死循环或者无休止的投递下去,每个IP数据包都包含一个寿命计数器,

这个就是数据包的的生存时间TTL,只要一个路由器处理过这个数据包,它就递减这个数据包的寿命计数,当寿命计数递减到0的时候,路由器就丢弃该包,TTL在一定程度上反应了一个IP数据包经过的路由器的多少。

三、编程实现

在Delphi中,我们可以使用IdIcmpClient组件(位 于Indy Client选项卡中)实现Ping操作。

      添加此组件到窗体,再添加一个文本框控件edtHost(输入IP)、一个列表框控件Info(显示信息)、两个命令按钮btnPing(执行Ping命令)、btnStop(停止Ping命令)。

    设置IdIcmpClient控件的名称为ICMP、 ReceiveTimeout属性(超时)值为1000、OnReply事件为ICMPReply。合理布局,然后编写程序代码:

Var i,b,s:integer; //全局变量

1、执行Ping操作

通过ICMP控件的Host属性设置Ping的IP,然后调用控件的Ping方法执行Ping操作命令。核心代码如下:

Procedure TfrmPing.btnPingClick(…);
begin
  b:=0; //掉包数量
  i:=0; //Ping的总次数
  s:=0; //执行(s=0)或停止(s=1)标志
  Info.Clear; //清除上次Ping的信息

ICMP.Host:=edtHost.Text; //置IP
While (i<100000) and (s=0) Do
begin //最多执行10万次Ping操作
   Application.ProcessMessages;
   i:=i+1; ICMP.Ping; //执行Ping
   //若前10次Ping都失败则结束Ping

   if (i=10) and (b=10) then s:=1;
end;
end;

//停止Ping操作

procedure TfrmPing.btnStopClick(…);
begin
s:=1; //置Ping操作停止标志
end;

2、返回Ping命令的执行结果
在ICMP控件的ICMPReply事件中,根据ReplyStatus对象的返回值确定Ping操作的执行情况,并返回相应的信息,ReplyStatus对象的部分属性如下:

TimeToLive:返回生存时间(TTL)。如果返回值为0,则认为Ping操作失败,可判断为网络故障或掉包。

BytesReceived:返回的字节数。如果返回值为0,也有可能为网络故障或掉包。

MsRoundTripTime:返回执行时间。需要说明的是,返回时间是以ms为单位的整数值,如果执行时间<1ms,则返回值为0,这种情况的执行时间程序按1ms计算。核心代码如下:

procedure TfrmPing.ICMPReply(ASender:TComponent;const ReplyStatus:TReplyStatus);
var

  Msg:string;Tm:integer;
begin
With ReplyStatus do
begin
   Msg:=’Reply from ’+edtHost.Text;
   Msg:=Msg+’ bytes=’+IntToStr(BytesReceived); //返回字节数
   Msg:=Msg+’ TTL=’+IntToStr(TimeToLive); //返回生存时间
   Tm:=MsRoundTripTime; //返回执行时间

   if Tm<1 then Tm:=1;
   Msg:=Msg+’ time=’+IntToStr(Tm)+’ms’;
   Info.Items.Add(msg); //保存信息

   if (BytesReceived=0) or (TimeToLive=0) then
  begin //无数据返回
    b:=b+1; //记录掉包数量
    info.ItemIndex:=info.Items.Count-1;
   end;

   if i mod 100 =0 then panel1.Caption:=’Lost:’+IntToStr(b)+’/’+IntToStr(i)+’=’+copy (FloatToStr(b/i*1000),1,4)+’‰’; //每Ping到100次显示一次掉包情况

end;
end;

四、小结

本文调用Delphi提供的组件实现了Ping命令的智能化和可视化操作,同时能实时显示掉包情况,能有效地反应本机到目的IP之间网络的稳定性(与两端之间的路由器数量及其性能密切相关)。下图是测试笔者客户端与本地电信服务器之间的网络稳定性的运行结果,调试环境:WinXp+Delphi7。

使用ping测试MTU值

阅读数 8330

ping命令详解

阅读数 11980

没有更多推荐了,返回首页