UDP 的报文结构

一、UDP数据报

在网络基础中、已知在封装的过程中,应用层协议打包进入传输层。进入传输层后,又有两种协议可再次进行打包,让数据顺利进入网络层,然后再打包成IP协议。
其中一种就是UDP协议。
在这里插入图片描述

(一)、UDP协议特征:

  • 无连接:不需要接通,直接发送数据
  • 不可靠传输:发送方不知道对方有没有收到数据,只管发送就是了。
  • 面向数据报:数据为单位进行传输
    (注:TCP是以字节为单位进行传输)。
  • 全双工:一条链路,双向通信。
    (注:半双工指有条链路,单向通信。)

(二)、UDP具体报文格式。

在这里插入图片描述

  • 源端口:从哪里种应用来。
  • 目的端口:要到那种应用去。
  • 报文长度:即记录这个数据报的长度,(由于设计只占两个字节,所以无法表示很长的数据报,由此也产生了TCP协议。
  • 检验和:验证网络传输的数据是否正确。(是一种基于内容的算法,代入内容数据进行计算)。

二、UDP的socket(嵌套字)

(一)、DatagramSocket类:

  • 对应操作系统中的socket文件(网卡)
  • 从socket文件读数据,本质上就是读网卡。
  • 向socket文件上写数据,本质上也是在写网卡。
import java.net.DatagramSocket;
import java.util.Arrays;
public class UdpServer {
    private static final int PORT = 8888;
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(PORT);
       }
   }
}

(二)、DatagramPacket类

  • 代表一个数据报,使用UDP传输的数据的基本单位。每次发送/接受数据,都是在传输和接收一个Datagrampacket对象。
public class UdpServer {
    private static final int PORT = 8888;
    public static void main(String[] args) throws IOException {
        DatagramSocket socket = new DatagramSocket(PORT);
        //不停的接收客户端udp数据报
        while (true){
            // 2.创建数据报,用于接收客户端发送的数据
            byte[] bytes = new byte[1024];//1m=1024kb, 1kb=1024byte, UDP最多
64k(包含UDP首部8byte)
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
   }
}

版权声明:本文为m0_60391870原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。