TCP/IP学习笔记(2)
2010-04-03 20:34:40 来源:WEB开发网七、ICMP地址掩码请求与应答:
ICMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码,系统广播它的ICMP请求报文。ICMP地址掩码请求和应答报文格式如下:
类型(17或18) | 代码(0) | 检验和 |
标识符 | 序列号 | |
32位子网掩码 |
ICMP报文中的标识符和序列号由发送端任意选择设定,这些值在应答中将被返回。
struct icmp_mask{
unsigned char icmp_type; //类型
unsigned char icmp_code; //代码
unsigned short icmp_checksum; //检验和
unsigned short icmp_id; //标识符
unsigned short icmp_sequence; //序列号
unsigned long icmp_mask; //32位子网掩码
};
说明:RFC规定,除非是地址掩码的授权代理,否则不能发送地址掩码应答。
向本机IP地址和环回地址发送地址掩码请求结果是一样的。
八、ICMP时间戳请求与应答:
ICMP时间戳请求允许系统向另一个系统查询当前时间,返回的是自午夜开始记算的毫秒数。调用者必须通过其他方法获取当前时间。
ICMP时间戳请求与应答报文格式如下:
类型(13或14) | 代码(0) | 检验和 |
标识符 | 序列号 | |
发起时间戳 | ||
接收时间戳 | ||
传送时间戳 |
请求端填写发起时间戳,然后发送报文。应答系统收到报文填写接收时间戳,发送应答时填写发送时间戳。实际上,大多数实现将后两个字段一般设置为一样的。
struct icmp_time{
unsigned char icmp_type; //类型
unsigned char icmp_code; //代码
unsigned short icmp_checksum; //检验和
unsigned short icmp_id; //标识符
unsigned short icmp_sequence; //序列号
unsigned long icmp_request_time; //发起时间戳
unsigned long icmp_receive_time; //接收时间戳
unsigned long icmp_send_time; //传送时间戳
};
九、ICMP端口不可达差错
主机如果收到一份UDP数据报而目的端口与某个正在使用的进程,那么UDP返回一个ICMP不可达报文。报文格式如下:
类型3 | 代码(0-15) | 检验和 |
保留(必须为0) | ||
IP首部+原始IP数据报中数据的前8个字节 |
当代码为4时,路径MTU发现机制允许路由器把外出接口的MTU填在这个32bit的低16bit中。
struct icmp_unreach{
unsigned char icmp_type; //类型
unsigned char icmp_code; //代码
unsigned short icmp_checksum; //检验和
unsigned long icmp_zero; //保留
unsigned char icmp_ip[28]; //IP首部+原始IP数据报中前8个字节,也就是地址信息
}
- ››TCP超时/丢失重传
- ››iphone图片拉伸的几种方法
- ››iphone正则表达式的简单使用
- ››iPhone开发Unresolved Symbols CAKeyframeAnimati...
- ››IPhone开发-“此证书是由未知颁发机构签名”解决方...
- ››IPhone开发-整合私钥和证书,生成.p12文件
- ››iPhone应用开发-UIPickerView选取器详解
- ››iphone 获取屏幕的宽度和高度
- ››iPhone读取工程包中的二进制文件
- ››iPhone新手机 不挂YouTube APP
- ››iPhone 获取指定格式的时间和日期
- ››IPad使用UIModalPresentationFormSheet时隐藏键盘...
更多精彩
赞助商链接