如何计算UDP头的checksum

UDP报头只有4个字段,分别是:源端口号、目的端口号、报文长度和报头checksum,其中的报头checksum这个字段在IPv4中并不是强制的,但在IPv6中是强制的,本文介绍UDP报头中checksum的计算方法,并给出相应的源程序,实际上,网络通信中常用的IP报头、TCP报头和UDP报头中都有checksum,其计算方法基本一样,所以把这些检查和一般统称为Internet Checksum。

1. UDP报文结构

  • UDP报文为两部分,报头+数据;

  • 在Linux下,UDP报头定义在头文件linux/udp.h中;

    struct udphdr {
        __be16	source;
        __be16	dest;
        __be16	len;
        __sum16	check;
    };
    
    • source - 来源端口号,可选项,如果不使用,填充 0;
    • dest - 目的端口号;
    • len - 报文长度;
    • check - 报头的校验和,在IPv4中是可选的,IPv6中是强制的,如果不使用,应填充0;

    如何计算UDP头的checksum_第1张图片

    图1:UDP数据报结构

你可能感兴趣的:(网络编程,Linux相关,C语言,udp,linux,c语言,网络编程,checksum)