返回信息流TCP或者UDP包的首部都只有源端口号和目的端口号字段,但是没有源IP地址和目的IP地址字段,虽然有个叫伪首部的东西,但是它不往上传也不往下传
不禁想问:网络层是如何知道目的IP地址从而填入其首部的?难道还有其他的东西控制它不成?
这是一条镜像帖。来源:北邮人论坛 / security / #4444同步于 2006/11/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Security机器人发帖
IP数据报中的源IP地址和目的IP地址是由谁加上去的?
walkman
2006/11/7镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
typedef struct _iphdr
{
unsigned char h_verlen; //4位首部长度+4位IP版本号
unsigned char tos; //8位服务类型TOS
unsigned short total_len; //16位总长度(字节)
unsigned short ident; //16位标识
unsigned short frag_and_flags; //3位标志位
unsigned char ttl; //8位生存时间 TTL
unsigned char proto; //8位协议号(TCP, UDP 或其他)
unsigned short checksum; //16位IP首部校验和
unsigned int sourceIP; //32位源IP地址
unsigned int destIP; //32位目的IP地址
}IP_HEADER;
typedef struct _tcphdr
{
USHORT th_sport; //16位源端口
USHORT th_dport; //16位目的端口
unsigned int th_seq; //32位序列号
unsigned int th_ack; //32位确认号
unsigned char th_lenres; //4位首部长度+6位保留字中的4位
unsigned char th_flag; //2位保留字+6位标志位
USHORT th_win; //16位窗口大小
USHORT th_sum; //16位校验和
USHORT th_urp; //16位紧急数据偏移量
}TCP_HEADER;
【 在 rebirthatsix 的大作中提到: 】
: typedef struct _iphdr
: {
: unsigned char h_verlen; //4位首部长度+4位IP版本号
: ...................
我的问题是,IP头里有源IP和目的IP地址,但是从上层下来的TCP包头中并没有源IP和目的IP的信息,是谁把这些信息写入IP头的??
看ndis
【 在 walkman (学五楼上半支烟) 的大作中提到: 】
: 我的问题是,IP头里有源IP和目的IP地址,但是从上层下来的TCP包头中并没有源IP和目的IP的信息,是谁把这些信息写入IP头的??