请教关于网络字节顺序的问题,谢谢!

ldf0531 2004-11-21 04:14:52
现在小弟要编写一个程序,将用winpcap从网上抓的以太数据包进行分析,需要对包中的内容与库中的某些特征字符串进行比较匹配,看书上讲网络数据包的字节顺序与主机中字节顺序不同,请教一下,具体是怎么回事,只是包头中的字段的字节顺序相反吗?还是包内容部分(比如说tcp包的数据部分)的顺序也是完全倒过来?多谢!情具体讲一下!
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RedAngel001 2004-11-24
  • 打赏
  • 举报
回复
只有数字(包括IP)才有这个问题吧。
发包前要转换为网络字节顺序,受抱后要转为本机字节顺序。分别用inet_ntoa和inet_aton函数,类似的好象还有几个函数,设计整形和浮点型的。记不清楚了,哈哈。
gdy119 2004-11-24
  • 打赏
  • 举报
回复
你说的数据包,是一层一层的剖析的:IP-TCP(UDP)-应用程序数据
而你说的字节顺序问题为:
网络字节和机器字节:
unsigned long ulIP,ulIP1;
CString abc, str;
CString strIP = _T("61.4.64.1");
ulIP=htonl(inet_addr((LPCTSTR)strIP));
ulIP1 = ntohl(ulIP);

abc.Format("%s",inet_ntoa((*(in_addr*)&ulIP1)));
str.Format("%s",inet_ntoa((*(in_addr*)&ulIP1)));
//---------------------------------------------
unsigned long ulIP;
CString abc;
CString strIP = _T("61.4.64.1");
ulIP=inet_addr((LPCTSTR)strIP);

abc.Format("%s",inet_ntoa((*(in_addr*)&ulIP)));
kingzai 2004-11-22
  • 打赏
  • 举报
回复
网络字节主机字节就是高位低位字节顺序的区别
在使用SOCKET的时候,需要把数据转换成网络字节顺序。
htonl()主机字节转换成网络字节顺序;
ntohl()网络字节转换成主机字节顺序。
其实这些东西都很简单的,只要调用一下这几个API就可以了。
(注:如果使用CSOCKET的话,有时不需要考虑这些,因为CSOCKET已经做了这些工作。)
winpcap编程你从它的TestApp例子开始看起就可以了
awjx 2004-11-22
  • 打赏
  • 举报
回复
整型数在内存中的高低字节顺序!

有些机器的高位在左边,有些机器的高位在右边,而网络字节是统一的,不会这么“混乱”!

所有要进行转换,

只有整型才存在这个顺序问题。其他型的不管!








cooljh 2004-11-21
  • 打赏
  • 举报
回复
只是网络地址是反的
property1 2004-11-21
  • 打赏
  • 举报
回复

gz

18,356

社区成员

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

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