关于截获ip数据包的问题

oddstar 2000-03-14 03:00:00
我在定义部定义ip结构如下(在delphi中用winsock编程)
IP=Record
ip_verlen :char;
ip_tos :char;
ip_len :smallint;
ip_id :smallint;
ip_fragoff :smallint;
ip_ttl :char;
ip_proto :char;
ip_cksum :smallint;
ip_src :array [0..3] of char;
ip_dst :array [0..3] of char
ip_data :char;{此处不知在delphi中如何定义}
{在c语言中定义为}
char ip_data[1]
}
End;
另外在recv函数中bufferlen应如何设置
请高手指点!!!!
...全文
311 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
harley 2000-06-25
  • 打赏
  • 举报
回复
你可以看下ntsniff的这个黑客程序,它哪儿有详细的设计。
土豆 2000-06-25
  • 打赏
  • 举报
回复
IP包头一共20字节:
--------------------------
版本:4B
头长:4B 定义了32字节为单位的IP头的长度,该域的值一般为5,IP头的长度一般为20bytes.
服务类型:8B
按字节计算包长度:16B 包括包头长度。
标识:16B
标志:由于网络中常将数据报分成小块,主机使用16位(0-15)的标识域来确定每个发送的数据报,既用此域来确定收到的分快属于那个数据报。
分块偏移:13B IP总是将数据包的大小分割成MTU的大小。在本域中记录着每个分割点到数据报开始的距离。(MTU 以太网定义术语,定义了网络能够传输的最大数据包的大小)
生存时间:8B
协议:8B 区分UDP和TCP,域值为6表示TCP,域值为17表示UDP。
头部校验和:16B
源IP地址:32B
目的IP地址:32B 可以使用全‘1’表示广播。
--------------------------
tianyg 2000-03-28
  • 打赏
  • 举报
回复
取MTU(最大传输单元)的大小
sunsetyang 2000-03-26
  • 打赏
  • 举报
回复
ip_data:array [0..0] of char;
你参看一下关于PInAddr中的关于h_addr的定义。
sess 2000-03-25
  • 打赏
  • 举报
回复
bufferlen=4096

normal
ghost 2000-03-25
  • 打赏
  • 举报
回复
查 TPowerSock 的帮助。

4,354

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧