PING的最大长度

我们知道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进程。

 

### Windows系统中ping命令的TTL值长度、设置方法以及默认值 在Windows系统中,默认情况下,`ping`命令发出的数据包会携带一个特定的时间生存期(Time To Live, TTL)。这个值通常用于指示数据包在网络中经过的最大跳数。对于Windows系统的设备而言,其默认的TTL值范围大约位于128附近[^1]。 #### 默认值 Windows系统中的默认TTL值为 **128**。这意味着当一台运行Windows操作系统的机器发送一个数据包时,在未作任何更改的情况下,该数据包的TTL字段会被初始化为128。这一特性可以帮助网络管理员快速判断目标主机可能使用的操作系统类型。 #### 修改TTL值的方法 如果需要调整Windows系统下`ping`命令所使用的TTL值,则可以通过修改注册表来完成此操作。具体路径如下: - 打开注册表编辑器(可通过 `Win + R` 输入 `regedit` 启动); - 定位到以下位置: ``` HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters ``` - 创建一个新的DWORD (32-bit) 值并命名为 `DefaultTtl`; - 将数值设定为你希望的新TTL值(有效取值范围为1至255),随后保存退出即可生效。 需要注意的是,虽然理论上可以将TTL设为任意合法范围内整数,但在实际应用过程中应当谨慎行事,以免影响正常通信行为或者引发不必要的安全风险。 以下是简单的C语言程序演示如何获取当前系统的TTL值: ```c #include <stdio.h> #include <winsock2.h> int main() { WSADATA wsaData; SOCKET s; int ttl; WSAStartup(MAKEWORD(2, 2), &wsaData); s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); getsockopt(s, SOL_IP, IP_TTL, (char*)&ttl, sizeof(ttl)); printf("The current system's default TTL is %d\n", ttl); closesocket(s); WSACleanup(); return 0; } ``` 上述代码片段展示了通过调用`getsockopt()`函数读取套接字选项的方式获得本地系统的默认TTL配置情况。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值