【无标题】

UDP协议

一、介绍

UDP(User Datagram Protocol),用户数据报协议 ;
是Internet互联网最基本的协议

其功能包括:
一、格式化信息流;
二、提供可靠传输。

1. OSI模型的七层框架

OSI模型定义了网络互连的七层框架,每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI模型各层的通信协议

应用层HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP、等等
表示层XDR、ASN.1、SMB、AFP、NCP、等等
会话层ASAP、SSH、RPC、NetBIOS、ASP、Winsock、BSD Sockets、等等
传输层TCPUDP、TLS、RTP、SCTP、SPX、ATP、IL、等等
网络层IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25、等等
数据链路层以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP、等等
物理层例如铜缆、网线、光缆、无线电等等

传输层是TCP/IP协议五层模型中的第四层。它提供了应用程序间的通信,它负责数据能够从发送端传输到接收端。

二、特点

1.UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议;

2.UDP协议 为应用程序提供了一种无需建立连接就可以发送封装的IP数据报的方法,俗称面向无连接;

3.UDP 不可靠,没有任何可靠机制,即便发送失败也不会返回任何错误信息,也称不可靠协议

4.UDP 面向数据报,发多少就收多少,原样发送,交给UDP的报文,UDP不会拆分或合并;

5.UDP 没有拥塞控制,网络出现的拥塞不会使源主机的发送速率降低;

6.UDP 支持一对一一对多多对一多对多的交互通信

7.缓冲区:只有接收缓冲区,没有发送缓冲区,接收缓冲区满了,多的直接丢弃

总结: UDP协议会把数据打包发送给目标地址,这个数据包能不能发送给目标地址就不管了,安全性低,容易丢包 但是速度快,开销小 无需类似于tcp协议三次握手。

代码案例

srever服务器端

1.创建接收端socket对象
2.接收数据 — —开始监听客户端发送给服务器端的数据,如果没有监听到数据则一直阻塞等待
3.解析数据
4.输出数据
5.释放资源


import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
    public static void main(String[] args) throws IOException {
        /*
         * @Date: 2023/04/07 图图15:24
         * 1.创建接收端socket对象;
         * 2.监听(阻塞 : 如果建立连接失败 程序会一直阻塞,不往下执行)
         * 3.获得输入流对象
         * 4.获取数据
         * 5.输出数据
         * 6.释放资源
         */
        // 1
        while (true) {
            ServerSocket socket = new ServerSocket(8090);
            // 2
            Socket accept = socket.accept();
            // 3
            InputStream stream = accept.getInputStream();
            // 4
            byte[] bytes = new byte[1024];
            int read = stream.read(bytes);
            // 5
            System.out.println(new String(bytes, 0, read));
            // 6
            stream.close();
        }
    }
}

client客户端

1.创建发送端socket对象
2.提供数据,并将数据封装到数据包中
3.通过socket服务器的发送功能,将数据包发出去
4.释放资源

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class TcpClient {
    public static void main(String[] args) throws IOException {
        InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
        int port = 8090;
        Socket socket = new Socket(inetAddress, port);

        OutputStream stream = socket.getOutputStream();

        byte[] bytes = "aaaa".getBytes();

        stream.write(bytes);

        stream.close();
        socket.close();

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值