Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138154
  • 博文数量: 40
  • 博客积分: 673
  • 博客等级: 上士
  • 技术积分: 426
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-21 14:08
文章分类

全部博文(40)

文章存档

2013年(4)

2012年(36)

我的朋友

分类: LINUX

2012-06-01 14:32:41

这段时间在做ipv6数据包转发,了解了下ipv6协议。
ipv6头部:

点击(此处)折叠或打开

  1. struct in6_addr {
  2. union {
  3. __u8 u6_addr8[16];
  4. __be16 u6_addr16[8];
  5. __be32 u6_addr32[4];
  6. } in6_u;
  7. #define s6_addr in6_u.u6_addr8
  8. #define s6_addr16 in6_u.u6_addr16
  9. #define s6_addr32 in6_u.u6_addr32
  10. };


  11. struct ipv6hdr {
  12. #if defined(__LITTLE_ENDIAN_BITFIELD)
  13. __u8 priority:4,
  14. version:4;
  15. #else
  16. __u8 version:4,
  17. priority:4;
  18. #endif
  19. __u8 flow_lbl[3];

  20. __be16 payload_len;
  21. __u8 nexthdr;
  22. __u8 hop_limit;

  23. struct in6_addr saddr;
  24. struct in6_addr daddr;
  25. };
ipv6地址为16字节;payload_len标示负载长度,不包括ipv6头部;nexthdr标示紧接着ipv6头部数据包类型。hop_limit相当于ipv4的ttl;version为6;

阅读(3186) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~