UDP协议解析 以及和TCP协议的区别
UDP(User Data Protocol)是传输层的用户数据报协议,有复用和分用以及差错检测的功能。
1) 多路复用(针对发送主机):从不同套接字收集数据块,并为每个数据块封装上首部信息,生成报文段,传递到网络层
2) 多路分解(针对接收主机):将报文段中的数据交付到正确的套接字
UDP协议主要特点:
1.UDP是无连接的,发送数据之前不需要建立连接(结束之后自然也不用释放连接),减少了开销和发送数据的时延
2.UDP使用尽最大努力交付,即不保证可靠交付,不需要维持复杂的连接状态表
3.UDP是面向报文的,对应用层交下来的报文,添加首部后直接向下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来 UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。
UDP协议优势:
1.UDP没有拥塞控制,网络出现的拥塞不会使源主机的发送速率降低,在允许网络发生拥塞时丢失一些数据并且维持较低的时延时,UDP符合这种要求
2.UDP支持一对一,一对多,多对一和多对多的交互通信
3.UDP的首部开销小,只有8个字节,比TCP的20个字节首部要短
UDP的首部格式:
用户数据报UDP有两个字段:数据字段和首部字段。
首部字段由四个字段组成,每个字段的长度都是两个字节,以下:
(1)源端口 源端口号,在需要对方回信时选用,不需要时可以全0
(2)目的端口 目的端口号,在终点交付报文时必须使用到
(3)长度 UDP用户数据报的长度,最小值为8(仅有首部字段)
(4)校验和 检测UDP用户数据报在传输中是否有错误,有错就丢弃
UDP传输数据过程:
当数据层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交到最后的终点。
如果接收方UDP发现收到的报文中的目的端口号不正确,就会丢弃报文,并由ICMP(控制报文协议)发送“端口不可达”差错报文给发送方
UDP协议应用场景:
要发送的内容少,一个数据包就能发送全部内容。
即时通信(聊天对数据准确性和丢包要求比较低,但速度必须快),在线视频( 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的),网络语音电话(VoIP 语音数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题)等等。
UDP协议与TCP协议的区别:
1.TCP协议是有连接的,开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的
2.TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到
3.TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
4.TCP是一对一的连接,而UDP则可以支持一对一,一对多,多对多,一对多的通信
5.TCP协议首部资源消耗多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节
6.TCP面向的是字节流的服务,UDP面向的是报文的服务
UDP协议解析 以及和TCP协议的区别的更多相关文章
- 基于UDP协议模拟的一个TCP协议传输系统
TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment siz ...
- 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?(QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?)
为了解决这题,可以具体看看下面这个讨论. 解灵运工程师 185 人赞同 某次架构师大会上那个58同城做即时通信的人说:原因是因为当时没有epoll这种可以支持成千上万tcp并发连接的技术,所以他们使用 ...
- QQ 为什么以 UDP 协议为主,以 TCP 协议为辅?
QQ既有UDP也有TCP!不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态.这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000. UDP协议是无 ...
- RS-232-C串口通讯协议解析(硬件接口协议)
http://www.dz3w.com/info/interface/0075524.html http://wenku.baidu.com/view/02cc247c27284b73f24250e3 ...
- DNS使用的是TCP协议还是UDP协议(转)
原文链接:DNS使用的是TCP协议还是UDP协议 DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情 ...
- DNS使用的是TCP协议还是UDP协议
原文:http://benbenxiongyuan.iteye.com/blog/1088085 DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP ...
- [计算机网络] DNS何时使用TCP协议,何时使用UDP协议
DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况下使用这两种协议. 先简单介绍下TCP与UDP. ...
- DNS使用的是TCP协议还是UDP协议简析
DNS使用的是TCP协议还是UDP协议简析 DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类.但很少有人知道DNS分别在什么情况 ...
随机推荐
- Requests使用
Requests 简介 Requests库 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到.可以说,**Requests 完全满足如今网络的需求 ...
- vue部分问题
[color=#00b050]学 vue 的看过来,vue-cli 挺好用的,但是遇到具体情况还得做一部分调整和配置默认你已经成功启动 vue-cli 1.使用 scsscnpm i node-sas ...
- 集合类中的Collection接口实现类
今天学习一下集合包里面的内容,常见的有Collection和Map两个接口的实现类Collection中常见的又分为两种: 1.List ,支持放入重复的对象,实现类有arraylist,linked ...
- vue iframe嵌套单页面时打开新窗口并自定义浏览器标题
vue打开新窗口两种写法,效果一样: 第一种: router-link 传参用query或者params都可以,tagget和tag一定要加上才可以: 第二种: 直接写成a标签就可以了. 改变浏览器窗 ...
- AcWing 220.最大公约数 欧拉函数打卡
题目:https://www.acwing.com/problem/content/222/ 题意:求1-n范围内,gcd(x,y)是素数的对数 思路:首先我们可以针对每个素数p,那么他的贡献应该时 ...
- Dart 和 Flutter 使用json_annotation和json_serializable来处理json数据教程
在学习fultter的时候突然想到如何去处理从服务器获取的json或者将app中的对象数据转换成json上传给服务器 于是研究一下dart对json数据的处理 首先需要依赖下面的第三方库(这里要强调下 ...
- Postgresql物理存储结构
Postgresql目前不支持使用裸设备和块设备. Postgresql的属于 Relation:表示表或索引. Tuple:表示表中的行. Page:表示在磁盘中的数据块. Buffer:表示在内存 ...
- HTML-参考手册: 功能排序
ylbtech-HTML-参考手册: 功能排序 1.返回顶部 1. 功能排序 New : HTML5 新标签 标签 描述 基础 <!DOCTYPE> 定义文档类型. <html ...
- 91、R语言编程基础
1.查看当前工作空间 > getwd() ] "C:/Users/P0079482.HHDOMAIN/Documents" > 2.查看内存中有哪些对象 > ls ...
- PHP面试 MySQL查询优化
MySQL查询优化 面试题一 请简述项目中优化SQL语句执行效率的方法,从那些方面,SQL语句性能如何分析? 优化查询过程中的数据访问.优化长难的查询语句.优化特定类型的查询语句 分析SQL语句方法 ...