字节序

  • 大端:起始地址存储高序字节
  • 小端:起始地址存储低序字节

网络协议都使用网络字节序(大端)。主机上的字节序称为主机字节序(有的系统采用大端,有的系统采用小端)

字节序转换函数函数原型

  1. /* 有些系统中#include <netinet/in.h> */
  2. #include <arpa/inet.h>
  3. uint16_t htons(uint16_t host16bitvalue);
  4. uint32_t htonl(uint32_t host32bitvalue);
  5. uint16_t ntohs(uint16_t net16bitvalue);
  6. uint32_t ntohl(uint32_t net32bitvalue);

函数名中

  • h:host(主机序)
  • n:net(网络序)
  • s:short类型。16位
  • l:long类型。32位。有的系统(如Digital Alpha)尽管long是64位,但htonl和ntohl返回的仍然是32位值

上面四个函数,进行主机序和网络序之间16和32位的转换。即IP地址和端口号的转换。