UDP 的报文结构

UDP协议

  • 一、UDP数据报
    • (一)、UDP协议特征:
    • (二)、UDP具体报文格式。
  • 二、UDP的socket(嵌套字)
    • (一)、DatagramSocket类:
    • (二)、DatagramPacket类

一、UDP数据报

在网络基础中、已知在封装的过程中,应用层协议打包进入传输层。进入传输层后,又有两种协议可再次进行打包,让数据顺利进入网络层,然后再打包成IP协议。
其中一种就是UDP协议。
UDP 的报文结构_第1张图片

(一)、UDP协议特征:

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

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

UDP 的报文结构_第2张图片

  • 源端口:从哪里种应用来。
  • 目的端口:要到那种应用去。
  • 报文长度:即记录这个数据报的长度,(由于设计只占两个字节,所以无法表示很长的数据报,由此也产生了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);
   }
}

你可能感兴趣的:(javaEE,udp,网络,java)