WEB开发网
开发学院软件开发VC TCP/IP学习笔记(3) 阅读

TCP/IP学习笔记(3)

 2010-04-03 20:34:38 来源:WEB开发网   
核心提示:一、Ping程序:先看://pingC:\WINNT\system32>ping svr00804Pinging svr00804.sccnj.swirebev.com [192.1.8.12] with 32 bytes of data:Reply from 192.1.8.12: bytes=32 time&

一、Ping程序:

先看:

//ping
   C:\WINNT\system32>ping svr00804
   Pinging svr00804.sccnj.swirebev.com [192.1.8.12] with 32 bytes of data:
   Reply from 192.1.8.12: bytes=32 time<10ms TTL=128
   Reply from 192.1.8.12: bytes=32 time<10ms TTL=128
   Reply from 192.1.8.12: bytes=32 time<10ms TTL=128
   Reply from 192.1.8.12: bytes=32 time<10ms TTL=128
   Ping statistics for 192.1.8.12:
   Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
   Approximate round trip times in milli-seconds:
   Minimum = 0ms, Maximum = 0ms, Average = 0ms   

ICMP回显请求和回显应答报文格式如下:(以Ping为例)

类型0或8 代码0 检验和
标识符 序号

结构定义如下:

typedef struct icmp_hdr
{
unsigned char icmp_type; //类型
unsigned char icmp_code; //代码
unsigned short icmp_checksum; //检验和
unsigned short icmp_id; //标识符
unsigned short icmp_sequence; //序号
} ICMP_HDR, *PICMP_HDR, FAR *LPICMP_HDR;

PING程序把ICMP报文中的标识符字段设置为发送进程的ID号,这样即使在同一台主机同时运行多个ping实例,ping程序也可以识别返回的信息。

二、IP记录路由选项

PING程序为我们提供了查看IP记录路由(RR)选项的机会。每个处理PING请求的路由器都把它的IP地址放入选项字段中。当PING程序收到回显应答时,它就可以打印出这份IP地址清单。

由于IP首部中的首部长度字段只有4bit,因此IP首部最大为60字节。由于IP首部固定长度为20个字节,RR选项用去3个字节,因此存放IP地址的控件只有37个字节,也就是最多放9个IP地址。

code(1) len(1) ptr(1) 9个IP地址 多余1

code:IP选项类型,RR选项为7。

len:RR选项总长度,为39。

ptr:指针字段,存放下一个IP地址的位置,开始为4,放满为40。

IP地址为路由器的出口地址,同时原始主机收到带有RR选项的ICMP回响应答时也把它的入口IP地址放入清单。

1 2 3 4 5 6  下一页

Tags:TCP IP 学习

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接