winpcap发送原始数据包(rst)的问题

gpmn 2003-10-20 05:29:10
我用winpcap的pcap_sendpacket发送一个以太包,我不清楚具体的一些字段怎么填写,比如说校验和等等;这个数据包只是置rst为1,然后发出去,各位有没有源代码post出来瞧瞧,不一定winpcap的,比如说row socket的也可以,谢谢啦
...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhaochuan 2004-01-17
  • 打赏
  • 举报
回复
给你举个例子,如果要发送一个TCP/IP包:

//要用到的数据结构
typedef struct ethdr
{
unsigned char eh_dst[6]; //目标主机MAC地址
unsigned char eh_src[6]; //源主机MAC地址
unsigned short eh_type; //

}ETHDR,*PETHDR;

//
// Ip header
//
typedef struct _IP_HEADER
{
union
{
BYTE VersionAndHeaderLength; // Version 4 bit, Header Length 4 bit * 4
struct
{
BYTE HeaderLength : 4;
BYTE Version : 4;
};
};
BYTE TypeOfService;
WORD DatagramLength;
WORD Id;
WORD FlagsAndFragmentOffset; // Flags 3 bit, Fragment Offset 13 bit
BYTE TimeToLive;
BYTE Protocol;
WORD CheckSum;
unsigned long SourceIp;
unsigned long DestinationIp;

} IP_HEADER, *PIP_HEADER;

//
// Tcp Header
//
typedef struct _TCP_HEADER
{
WORD SourcePort;
WORD DestinationPort;
DWORD SeqNumber;
DWORD AckNumber;
union
{
WORD LenAndCodeBits; // Header length 4 bit, Reserved 6 bit, Code Bits 6 bit
struct
{
WORD Reserved : 4;
WORD HeaderLength : 4;
WORD TcpFin : 1;
WORD TcpSyn : 1;
WORD TcpRst : 1;
WORD TcpPsh : 1;
WORD TcpAck : 1;
WORD TcpUrg : 1;
WORD Reserved4 : 2;
};
};
WORD Window;
WORD CheckSum;
WORD UrgentPointer;

} TCP_HEADER, *PTCP_HEADER;

校验和自己计算,按我排列的顺序把这三个结构COPY到一起就组成了一个可以供WINPCAP发送的完整的包(因为WINPCAP是工作在链路层的,所以必须提供收发主机的MAC地址)

warton 2003-11-21
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2421/2421337.xml?temp=.419903
warton 2003-11-21
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2292/2292669.xml?temp=.3635065

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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