我想用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/
作者在处理收到的数据包时没有考虑字节顺序问题,为什么? 谢谢!
答案 0 :(得分:1)
数据包中数据的字节顺序是什么?
惯例是网络顺序是大端序。但是,您收到的数据是您发送的数据:没有人会神奇地修改“整数”以更改其字节顺序。
以及如何处理它?</ p>
ntohl
和ntohs
作者没有考虑字节顺序问题 处理收到的数据包,
您发布的链接显示ntohs
和ntohl
来电。作者至少在一定程度上处理字节序。