golang构建icmp数据报提示校验和错误

我在尝试用go语言去构建一个icmp的请求报文(ping request),但当我将这个icmp发送至114.114.114.114时会ping请求超时,提示校验和错误。我发送至其他地址(7.7.7.7)却可以成功收到ping回复。以下是我校验和部分的计算代码


// CheckSum calculate the CheckSum of icmp
func CheckSum(data []byte) uint16 {
    var (
        sum    uint32
        length int = len(data)
        index  int
    )
    for length > 1 {
        sum += uint32(data[index])<<8 + uint32(data[index+1])
        index += 2
        length -= 2
    }
    if length > 0 {
        sum += uint32(data[index])
    }
    sum += sum >> 16

    return uint16(^sum)
}

icmp部分type设置为8, code 为0

这个问题可能是由于什么情况导致的?或者我应该如何修改我的代码?