精华内容
下载资源
问答
  • UDP用户数据报协议UDP用户数据报协议UDP用户数据报协议
  • 用户数据报协议UDP

    2020-03-07 17:30:58
    用户数据报协议UDP 1、UDP概述 用户数据报协议UDP只在IP的数据报服务之上增加了很少一点功能,这就是复用和分用的功能以及差错检测的功能。UDP的主要特点是: (1)UDP是无连接的。 即发送数据之前不需要建立连接...

    用户数据报协议UDP

    1、UDP概述

    用户数据报协议UDP只在IP的数据报服务之上增加了很少一点功能,这就是复用和分用的功能以及差错检测的功能。UDP的主要特点是:

    (1)UDP是无连接的。

    即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。

    (2)UDP使用尽最大努力交付。

    即不保证可靠交付,因此主机不需要维持复杂的连接状态表(这里面有许多参数)。

    (3)UDP是面向报文的。

    发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界
    在这里插入图片描述

    (4)UDP没有拥塞控制。

    因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要。很多的实时应用要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。

    (5)UDP支持一对一、一对多、多对一和多对多的交互通信。
    (6)UDP的首部开销小。

    只有8个字节,比TCP的20个字节的首部要短。

    2、UDP的首部格式

    用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单,只有8个字节(图 5-5),由四个字段组成,每个字段的长度都是两个字节。各字段意义如下:
    (1)源端口 。源端口号,在需要对方回信时选用,不需要时可用全0。
    (2)目的端口 。目的端口号,这在终点交付报文时必须使用。
    (3)长度 。UDP用户数据报的长度,其最小值8(仅有首部)。
    (4)检验和 。检测UDP用户数据报在传输中是否有错。有错就丢弃。
    在这里插入图片描述
    当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点——应用进程。图 5-6是UDP基于端口分用的示意图。
    在这里插入图片描述
    如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢亲该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送方。
    UDP用户数据首部中检验和的计算方法有些特殊。在计算校验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。只是在计算校验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部即不向下传送也不向上递交,而仅仅是为了计算校验和。

    展开全文
  • UDP-用户数据报协议

    2019-09-24 17:28:00
    UDP-用户数据报协议

    UDP-用户数据报协议

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 用户数据报协议(UDP) * 主要内容 UDP服务 UDP的端口号和套接字地址 用户数据报 UDP检验和 UDP的操作 UDP的应用 * 7 . 1 UDP服务 UDP提供无连接的服务 UDP发出的每一个用户数据报都是独立的数据报都携带了完整的目标...
  • * UDP协议: 用户数据报协议 * 协议的特点: * 1.面向无连接协议 * 2.传输的数据小 不能够超过64K * 3.发送数据之前必须要对数据进行打包 (类似于寄快递) * 4.传输速度快 * 5.不安全,不可靠,...
    
    /*
     * UDP协议: 用户数据报协议
     *  		协议的特点:
     *  			1.面向无连接协议
     *  			2.传输的数据小 不能够超过64K
     *  			3.发送数据之前必须要对数据进行打包 (类似于寄快递)
     *  			4.传输速度快
     *  			5.不安全,不可靠,数据容易丢失
     *  			例如: 群聊,发短信
     *  网络编程本质就是实现在不同计算机中通过不同的协议传输数据,本质就是Scoket编程
     *  网络编程底层就是 Socket + IO流 + 多线程
     *  
     *  什么是Socket? 网络套接字
     *  1.客户端和服务器端都应该对应着自己的Socket
     *  2.网络通信通过两端的两个Socket进行传递数据,可以从Socket中获取输入流和输出流
     *  3.Socket有很多种类,例如 DatagramSocket Scoket ServerSocket... 
     *  
     *  UDP编程: 类似于寄快递
     */
    public class SendThread implements Runnable {
    	
    	private DatagramSocket ds;
    	
    	public SendThread(DatagramSocket ds) {
    		super();
    		this.ds = ds;
    	}
    
    	public SendThread() {
    		super();
    	}
    
    	@Override
    	public void run() {
    		System.out.println("我是客户端...");
    		@SuppressWarnings("resource")
    		Scanner input = new Scanner(System.in);
    		
    		while (true) {
    			try {
    				System.out.print("请输入: ");
    				String line = input.next();
    				if (line.equals("再见")) {
    					break;
    				}
    				// 2.创建对应的包裹,并且对数据打包
    				byte[] bys = line.getBytes();
    				DatagramPacket dp = new DatagramPacket(bys, bys.length, 
    						InetAddress.getByName(Global.SERVER_IP), Global.SERVER_PORT);
    				// 3.发送数据包
    				ds.send(dp);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			
    		}
    	}
    }
    
    
    /*
     * UDP协议服务端编程
     * 
     * 这里作为服务器端,不需要关闭Socket
     */
    public class ReceiveThread implements Runnable {
    		
    	private DatagramSocket ds;
    	
    	public ReceiveThread() {
    		super();
    	}
    
    
    	public ReceiveThread(DatagramSocket ds) {
    		super();
    		this.ds = ds;
    	}
    
    	@Override
    	public void run() {
    		while (true) {
    			// 2.创建空包裹
    			byte[] bys = new byte[100];
    			DatagramPacket dp = new DatagramPacket(bys, bys.length);
    			// 3.接受客户端传递过来的数据包
    			try {
    				ds.receive(dp);
    				// 4.解析数据包
    				byte[] data = dp.getData();
    				int len = dp.getLength();
    				String ip = dp.getAddress().getHostAddress();
    				
    				String name = "";
    				Properties prop = new Properties();
    				prop.load(new FileReader("config/ipconfig.txt"));
    				
    				Set<String> keys = prop.stringPropertyNames();
    				for (String ipKey : keys) {
    					if (ip.equals(ipKey)) {
    						name = prop.getProperty(ipKey);
    					} else {
    						name = "逗比";
    					}
    				}
    				
    				String result = new String(data, 0, len);
    				System.out.println(name + "说: " + result);
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} // 这是一个阻塞方法,会阻塞正在执行的程序,等待客户端传递过来的包裹
    		}
    	}
    }
    
    展开全文
  • udp用户数据报协议

    2017-08-11 11:43:00
    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是...

      UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

      UDP协议全称是用户数据报协议[1]  ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。
     
      与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
     
      选择UDP必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。
     
      每个UDP报文分UDP报头和UDP数据区两部分。报头由四个16位长(4个域组成,其中每个域各占用2个字节)字段组成,分别说明该报文的源端口、目的端口、报文长度以及校验值。
     
    服务端
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    public class UdpServer {
        public static void main(String[] args)throws IOException{  
            String str_send = "Hello UDPclient";  
            byte[] buf = new byte[1024];  
            //服务端在3000端口监听接收到的数据  
            DatagramSocket ds = new DatagramSocket(3000);  
            //接收从客户端发送过来的数据  
            DatagramPacket dp_receive = new DatagramPacket(buf, 1024);  
            System.out.println("server is on,waiting for client to send data......");  
            boolean f = true;  
            while(f){  
                //服务器端接收来自客户端的数据  
                ds.receive(dp_receive);  
                System.out.println("server received data from client:");  
                String str_receive = new String(dp_receive.getData(),0,dp_receive.getLength()) +   
                        " from " + dp_receive.getAddress().getHostAddress() + ":" + dp_receive.getPort();  
                System.out.println(str_receive);  
                //数据发动到客户端的3000端口  
                DatagramPacket dp_send= new DatagramPacket(str_send.getBytes(),str_send.length(),dp_receive.getAddress(),9000);  
                ds.send(dp_send);  
                //由于dp_receive在接收了数据之后,其内部消息长度值会变为实际接收的消息的字节数,  
                //所以这里要将dp_receive的内部消息长度重新置为1024  
                dp_receive.setLength(1024);  
            }  
            ds.close();  
        }  
    }

    客户端

    import java.io.IOException;
    import java.io.InterruptedIOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UdpClient {
        private static final int TIMEOUT = 5000;  //设置接收数据的超时时间  
        private static final int MAXNUM = 5;      //设置重发数据的最多次数  
        public static void main(String args[])throws IOException{  
            String str_send = "Hello UDPserver";  
            byte[] buf = new byte[1024];  
            //客户端在9000端口监听接收到的数据  
            DatagramSocket ds = new DatagramSocket(9000);  
            InetAddress loc = InetAddress.getLocalHost();  
            //定义用来发送数据的DatagramPacket实例  
            DatagramPacket dp_send= new DatagramPacket(str_send.getBytes(),str_send.length(),loc,3000);  
            //定义用来接收数据的DatagramPacket实例  
            DatagramPacket dp_receive = new DatagramPacket(buf, 1024);  
            //数据发向本地3000端口  
            ds.setSoTimeout(TIMEOUT);              //设置接收数据时阻塞的最长时间  
            int tries = 0;                         //重发数据的次数  
            boolean receivedResponse = false;     //是否接收到数据的标志位  
            //直到接收到数据,或者重发次数达到预定值,则退出循环  
            while(!receivedResponse && tries<MAXNUM){  
                //发送数据  
                ds.send(dp_send);  
                try{  
                    //接收从服务端发送回来的数据  
                    ds.receive(dp_receive);  
                    //如果接收到的数据不是来自目标地址,则抛出异常  
                    if(!dp_receive.getAddress().equals(loc)){  
                        throw new IOException("Received packet from an umknown source");  
                    }  
                    //如果接收到数据。则将receivedResponse标志位改为true,从而退出循环  
                    receivedResponse = true;  
                }catch(InterruptedIOException e){  
                    //如果接收数据时阻塞超时,重发并减少一次重发的次数  
                    tries += 1;  
                    System.out.println("Time out," + (MAXNUM - tries) + " more tries..." );  
                }  
            }  
            if(receivedResponse){  
                //如果收到数据,则打印出来  
                System.out.println("client received data from server:");  
                String str_receive = new String(dp_receive.getData(),0,dp_receive.getLength()) +   
                        " from " + dp_receive.getAddress().getHostAddress() + ":" + dp_receive.getPort();  
                System.out.println(str_receive);  
                //由于dp_receive在接收了数据之后,其内部消息长度值会变为实际接收的消息的字节数,  
                //所以这里要将dp_receive的内部消息长度重新置为1024  
                dp_receive.setLength(1024);     
            }else{  
                //如果重发MAXNUM次数据后,仍未获得服务器发送回来的数据,则打印如下信息  
                System.out.println("No response -- give up.");  
            }  
            ds.close();  
        }
    }

     

     
      
     

    转载于:https://www.cnblogs.com/cnsdhzzl/p/7345169.html

    展开全文
  • UDP(User Datagram Protocol,用户数据报协议),是一种无连接的非可靠传输层协议。UDP 不提供数据包分组、组装,不能对数据段进行排序,所以 UDP 数据段的首部非常简单。换句话说,当数据段发送出去之后,发送方是...
  • UDP:用户数据报协议

    2020-03-09 19:47:57
    UDP:用户数据报协议11.1 引言11.2 UDP首部11.3 UDP 检验和13.3.1 tcpdump输出11.3.2 一些统计结果11.4 一个简单的例子11.5 IP分片11.6 ICMP不可达差错11.7 用traceroute 确定路径MTU11.8 采用UDP的路径MTU发现11.9 ...
  • UDP用户数据报协议

    2018-05-24 23:17:00
    用户数据报协议:位于网络层和应用层之间,提供介于应用程序和网络功能之间的服务。 运输层协议通常有几种责任:1、创建进程到进程的通信,UDP采用端口号来完成这种通信。 2、在运输层提供控制机制,UDP在一个非常...
  • UDP用户数据报协议分析

    千次阅读 2018-11-11 12:12:42
     UDP(User Datagram Protocol)即用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP用来支持那些需要在计算机之间传输数据的...
  • 用户数据报协议UDP总结

    千次阅读 2017-11-09 12:14:03
    用户数据报协议UDP小结阅读目录: 一、 UDP首部格式 二、 UDP主要特点 三、 UDP校验和计算 四、 UDP编程实现
  • 第6章 用户数据报协议UDP 要求 1. 理解数据传输的目的地 2. 理解通信过程的五元素 3. 掌握UDP的头格式 4. 理解端口使用的两种方式 6.2 传输层的引入 传输层的作用 1提供比IP层质量更高的服务可靠性传输 实现方式应用...
  • 用户数据报协议(UDP)介绍 UDP是一个简单的传输层协议。 应用进程往一个UDP套接字写入一个消息,该消息随后被封装(encapsulating)到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地...
  • 用户数据报协议(UDP)是无连接协议,也称透明协议,位于传输层。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。 UDP协议与TCP协议的区别 TCP协议参考链接:传输控制协议(tcp) TCP提供...
  • 数据报UDP协议DatagramSocket
  • UDP:用户数据报协议 是什么

    千次阅读 2018-04-12 22:19:24
    用户数据报协议(英语:User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报的传输层协议,正式规范为RFC 768。在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口...
  • 用户数据报协议UDP是Internet传输层协议,提供无连接,不可靠,数据报尽力传输服务 它的组成如下: ①源和目的端口号:用户UDP实现复用与分解 ②长度字段:在UDP报文段中字节数(首部和数据的总和) ③校验码:...
  • 简介UDP(User Datagram Protocol),用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式...
  • 用户数据报协议和IP分片 UDP协议的特点: (1)UDP是一种保留消息边界的简单的面向数据报的传输层协议。 (2)UDP提供了一种无连接的、不可靠的服务。 (3)UDP提供差错检测:端到端传输层校验和。 缺点:UDP不提供...
  • UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个...
  • UDP是User Datagram Protocol(用户数据报协议)的缩写,它是一个简单的协议,简单到UDP规范RFC0768只有区区3页。UDP是工作在IP层之上的传输层协议,UDP对IP主要有两个扩展:扩展出端口号使得IP数据报可以多路分发到...
  • TCP传输控制协议,UDP用户数据报协议这里先说说UDP吧UDP的特点是无连接的,尽最大努力交付,面向报文,它属于运输层协议,对于从应用层上交付下来的报文,UDP不做改动,添加首部后直接向下交付给IP层。其首部只有8个...
  • 用户数据报协议就是UDP。是一个面向数据报的简单传输层协议,进程的每一次输出操作只产生一个UDP数据报。进程通过internet的接口函数,来访问UDP。 每次发送UDP的时候,要指定目的的IP和端口号。 每次接受UDP的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,343
精华内容 2,137
关键字:

用户数据报协议