接收数据包的字节顺序是什么

时间:2013-03-13 18:49:31

标签: network-programming

我想用raw socket写一个接收程序 它将使用recvfrom()来接收数据包 所以我想检查数据包的IP头和tcp头

当程序发送数据包时,会注意网络字节顺序和主机字节顺序问题 但对于我的接收程序,当我使用recvfrom(sockfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&len);

数据包中数据的字节顺序是多少?它是网络字节顺序还是主机字节顺序? 以及如何处理它?<​​/ p>

这个例子 http://www.binarytides.com/packet-sniffer-code-in-c-using-linux-sockets-bsd/

作者在处理收到的数据包时没有考虑字节顺序问题,为什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

  

数据包中数据的字节顺序是什么?

惯例是网络顺序是大端序。但是,您收到的数据是您发送的数据:没有人会神奇地修改“整数”以更改其字节顺序。

  

以及如何处理它?<​​/ p>

  • 解释整数数据时使用ntohlntohs
  • 请注意,位域字节序不是标准的
  

作者没有考虑字节顺序问题   处理收到的数据包,

您发布的链接显示ntohsntohl来电。作者至少在一定程度上处理字节序