目录
1. UDP报文结构(★)
2. 注意事项(★)
UDP是传输层协议之一,其主要特点是无连接,不可靠传输,面向数据报,半双工(可以通过编程实现全双工,比如多线程或多进程).
一个UDP数据报由UDP报头和UDP正文部分组成,如图:
1) 源端口标识的是数据发送方的主机上某个程序,目的端口标识的是数据接收方的主机上某个程序,比如我在宿舍要去二食堂吃炸酱面(在食堂第八个窗口).我的宿舍在11栋106寝室,那么源端口就是106寝室,源IP就是11栋的地址;目的IP是二食堂地址,目的端口就是二食堂的第八个窗口.
注: 端口取值范围为0~65535,< 1024的端口,称为"知名端口号",是给一些名气大的服务器预留端口,一般我们写代码不会使用这部分端口;比如http服务器的默认端口为80,ssh的默认端口为22,ftp的默认端口为21等等.
2) 报文长度最大为两个字节,也就是64KB.使用UDP协议传输数据,一个太长的数据就只能分多次进行传输.
3) 校验和,网络传输的不确定性,传输过程可能会因为外部环境干扰,导致高电平变低电平,低电平变高电平,数据传输就会错误,所以我们需要通过校验和判断传输数据是否出错.校验和不对则就代表你的数据一定不对,但是如果校验和对,你的数据也不一定对,比如我原本传的数据是1和3,得到的校验和是4,通过传输之后,如果校验和不是4,那我原本的数据一定出错,如果校验和还是4,但是我原本传的数据也可能变成了2和2.(传的数据不一定就是整型,校验和也不一定就是直接相加)
1) 使用UDP协议传输数据时udp数据报不能太长不然会有问题,因为UDP报文最大长度为2个字节,也就是0~65535(64KB).
2) 校验和一般是取数据内容或数据内容的一部分通过算术运算或数学公式变换得到的数值.发送方把载荷数据代入到对应校验和算法中计算生成结果为sum1,接收方再根据接收到的载荷数据代入对应校验和算法中计算生成结果sum2,如果sum1 != sum2,那么数据传输错误
注:如果传输的数据没变,但是sum1改变,也算数据传输错误.