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分别在什么情况 ...
随机推荐
- SQL笔试题:下面是学生表(student)的结构说明
SQL笔试题:下面是学生表(student)的结构说明 SQL笔试题:下面是学生表(student)的结构说明 字段名称 字段解释 字段类型 字段长度 约束 s_id 学号 字符 10 PK s_na ...
- ganglia监控部署
1.ganglia组件 ganglia 相比于falcon和zabbix主要在于集群的状态集中显示,可以很便捷的对比各主机的性能状态. gmond:相当于是agent端,主要用于收集各node的性能状 ...
- bzoj 3626
http://www.lydsy.com/JudgeOnline/problem.php?id=3626 让我比较惊讶的一道链剖裸题(' ' ) 做法很精妙 首先我们考虑对于单个询问时可以拆分成 ...
- 【Linux】【Fabric】在ubuntu容器中安装Fabric环境
前言 想在docker容器中安装docker部署fabric网络,有了以下尝试. 尝试了centos镜像.redhat镜像都没解决docker容器中安装运行docker的问题,最后ubuntu成功了! ...
- BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡(后缀自动机)
传送门 解题思路 因为叶节点不超过\(20\)个,所以可以枚举这些叶节点,并把这些节点当做根扫整棵树.可以证明所有的子串一定可以被便利到,然后可以对这些串建广义后缀自动机.\(dfs\)的时候要记录一 ...
- centos6编译安装php7
https://www.cnblogs.com/wenwei-blog/p/6261637.html https://www.cnblogs.com/imzye/p/5109770.html cent ...
- python自动化之函数封装
函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 前面一些记录了selenium的各种API ...
- form表单submit事件
form表单submit事件同时会触发form表单中button按钮的click事件 <!DOCTYPE html> <html> <head> <meta ...
- 建站手册-浏览器信息:Internet Explorer 浏览器
ylbtech-建站手册-浏览器信息:Internet Explorer 浏览器 1.返回顶部 1. http://www.w3school.com.cn/browsers/browsers_inte ...
- (10)C++ 使用类
一.运算符重载 1. #include<iostream> using namespace std; class Sum { int add; public: Sum(int add) { ...