关于RAW套接口收到的数据报的IPv4的头部的字节顺序问题?
ipv4头部各字段应该是网络字节顺序(除了这三个外ip_len, ip_off, and ip_id ),但是书上程序怎么没有对字节顺序直接转换就使用呢:
ip = (struct ip *) ptr; // ptr为收到的数据报的起始地址
headerLen = ip->ip_hl << 2
我想应该把ip->ip_hl 转化一下字节顺序吧,ntohs(ip->ip_hl), 不知道我的理解是不是错的? 请大为大虾帮忙指出。
------解决方案--------------------因为就1个字节, 直接位运算得到相应的位即可。
如果是多字节,楼主说的没错,要ntohl/ntohs进行转换得到本地序才可以开始位运算。
------解决方案--------------------