最近测试ios的双网卡是否可以同时使用,因为对linux工具不熟悉,导致浪费了很多时间。
记录一下最近学习到的指令:
//ios和linux的ping指令参数有区别,考虑到自己以后主要是在linux上做开发,所以这里就只写linux下的ping指令;
Linux manpage
Ping的参数集:
ping [ -LRUbdfnqrvVaAB] [ -c count] [ -iinterval] [ -l preload] [ -p pattern] [ -s packetsize] [ -t ttl] [ -w deadline][ -F flowlabel] [ -I interface] [ -M hint] [ -Q tos] [ -S sndbuf] [ -Ttimestamp option] [ -W timeout] [ hop ...] destination
参数很多,我先讲一下我这次用到的参数:
-c cout/number 该参数用于指定ping指令发送多少个包之后退出;
//ios上ping指令不像linux,ios的ping如果不指定-c,则只发送3个包就结束ping;
-i interval 包与包之间的发送间隔,单位是秒,默认是1秒;
-I interface 用于指定通过哪个网卡发送
//本来有这个参数我就可以轻松的测试ios是否支持双网卡同时工作,但是ios上的ping居然没有这个参数,最后不得不通过修改route表来测试(其实心情还算是很愉悦,接触到了新东西);
Ping原理学习:
根据Linux man page的解释,ping使用的是ICMP协议(Internet Control Message Protocol, internet控制报文协议);
ICMP协议简介:
ICMP协议是TCP/IP协议协议簇的一个子协议,属于网络层协议,主要用于主机和路由器之间传递控制信息,包括报告错误、交换受限控制盒状态信息等;
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息,可以称为是“错误侦测与回报机制”;
ICMP协议主要功能包括:
侦测远端主机是否存在;
建立及维护路由资料;
重导资料传送路径;
资料流量控制;
ICMP的包大小以前有要求小于64bit,因为这样很容易被溢出攻击(即黑客故意发送大于64bit的ICMP包,导致主机栈溢出而运行不正常),因此目前的操作系统基本都取消了其大小限制;
Ping指令可以通过 –s参数设置ICMP包大小,大小默认是56bit;
具体的细节参数可以参考Linux man page;