【计算机网络】浅析UDP协议
1、了解UDP
1.1 UDP是什么
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。
传输层的另一个协议是TCP/IP协议。
1.2 UDP协议端格式
【注意】:
- 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64k);
- 如果要传送的数据大于64k,就要在应用层手动的分包,多次发送,并在接收端手动拼装;
- 如果校验和出错,就会直接丢弃;
1.3 UDP的特点
无连接: 知道对端的IP和端口号就直接进行传输,不需要建立连接。
不可靠: 没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。
面向数据报: 不能够灵活的控制读写数据的次数和数量(应用层交给UDP多长的报文,UDP原样发送,既不会拆分也不会合并)。
1.4 UDP的缓冲区
UDP没有真正意义上的发送缓冲区,调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作。
UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP数据报的顺序和发送数据报的顺序一致;如果缓冲区满了,再到达的UDP数据就会被丢弃。
UDP的socket既能读也能写,这就叫做全双工。
1.5 基于UDP的应用层协议
- NFS:网络文件系统
- TFTP:简单文件传输协议
- DHCP:动态主机配置协议
- BOOTP:启动协议(用于无盘设备启动)
- DNS:域名解析协议
2、模拟用UDP实现TCP
首先要了解到TCP协议的两个特点就是可靠传输,数据传输效率高。
那么要想模拟用UDP实现TCP,就需要完成以下功能(这些机制的核心一是为了实现数据的可靠传输,一是为了提高数据传输的效率):
- 确认应答机制(为了实现可靠传输);
- 超时重传机制(为了实现可靠传输);
- 滑动窗口(提高数据传输效率);
- 快速重传(处理滑动窗口丢包的情况,为了实现可靠传输);
- 流量控制+拥塞控制(为了实现可靠传输);
- 延时应答+捎带应答(提高数据传输效率);
3、HTTP使用的是TCP还是UDP,为啥选择该协议(TCP与UDP各自的优缺点)
TCP:
优点:
数据的传输在可靠、稳定的基础上尽可能快的提高了传输效率。
相对UDP来说一次传输的数据量更多。
TCP的可靠体现在TCP在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源
缺点:
传输数据的速度慢,效率低,占用系统资源高,易被攻击。
在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接。然而,每个链接都会占用系统的CPU、内存等硬件资源。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被利用,实现DOS、DDOS、CC等攻击。
UDP
优点:
快,比TCP稍安全。
UDP没有TCP拥有的各种机制,是一个无状态的传输协议,所以传递数据非常快,没有TCP的这些机制,被攻击利用的机制就少一些,但是也无法避免被攻击
缺点:
不可靠,不稳定。
只能进行少数据(低于64k)的传输。
因为没有TCP的那些机制,UDP在传输数据时,如果网络质量不好,就会很容易丢包,造成数据的缺失。
适用场景:
TCP:当对网络通讯质量有要求时,比如HTTP、HTTPS、FTP等传输文件的协议, POP、SMTP等邮件传输的协议
UDP:对网络通讯质量要求不高时,要求网络通讯速度要快的场景
4、 Socket模型流程图
socket基本操作接口及一个简单的小程序博客链接:
模拟一个基于TCP协议的简单的阻塞式的网络聊天工具
【计算机网络】浅析UDP协议相关推荐
- 计算机网络---TCP/UDP协议(一)
TCP协议 传输控制协议,面向连接的.可靠的.基于流服务的传输层通信协议. TCP协议使用的是超时重传.数据确认机制来保证数据传输的可靠性,确保数据正确的被接收,使用TCP通信双方必须先建立连接,并在 ...
- 【计算机网络】UDP协议
目录 1. UDP协议头部格式 2. UDP协议的特点 2.1 无连接 2.2 不可靠 2.3 面向数据报 2.4 有接收缓冲区,没有发送缓冲区 2.5 大小受限 3. 基于UDP的应用层协议 4. ...
- 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★
文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...
- 温州大学计算机网络,数据通信与计算机网络(温州大学)实验四 - 运输层TCP和UDP协议分析.doc...
温州大学 WENZHOU UNIVERSITY 实 验 报 告 学 期2016-2017学年第一学期课 程数据通信与计算机网络专 业电子信息科学与技术班 级14电科1学生姓名徐炜学 号14211111 ...
- 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...
<计算机网络实验-使用Wireshark分析TCP和UDP协议>由会员分享,可在线阅读,更多相关<计算机网络实验-使用Wireshark分析TCP和UDP协议(6页珍藏版)>请 ...
- 计算机网络实验 ——wireshark抓包简要分析TCP、UDP协议
[计算机网络实验 --wireshark抓包简要分析TCP.UDP协议] (1)分析 TCPheader: Source Port:16bit源端口,数据发起者的端口号: Destination Po ...
- 计算机网络【UDP与TCP协议(三次握手、四次挥手)】
计算机网络[UDP与TCP协议(三次握手.四次挥手)]
- 计算机网络-UDP协议
目录 1 概述 2 UDP的主要特点 3 UDP的首部格式 3.1 传输关系 3.2 首部格式 3.3 UDP 基于端口的分用和复用 3.4 UDP校验 1 概述 用户数据报协议(UDP,User D ...
- 计算机网络实验四:利用UDP协议实现点对点聊天
文章目录 1. 简介 1.1 功能 1.2 技术 1.3 流程 2. 源码 2.1 客户端1 2.2 客户端2(与客户端1不同的只有端口号) 2.3 服务端 3. 运行 4. 注意 4.1 端口占用 ...
最新文章
- Spring Boot中使用Flyway来管理数据库版本
- 【学术相关】毕业论文速成指南来了!
- Java 子类 instanceof 父类
- 9008刷机怎么刷_OV快捷进入高通进9008或fastboot模式刷机解锁,和MTK关机解锁
- 项目经理:赢得项目不是终点而是起点
- error: 'Can't connect to local MySQL server through socket '/data/3307/data/mysql.sock' (2)'
- AFNetworking请求服务器错误
- 2017年NBA球员数据分析
- ES3、ES5、ES6、ES2016、ES2017、ES2018、ES2019
- jdk 配置出错could not open `C:\Java\jdk16\lib\amd64\jvm.cfg‘ 解决方案
- tcpdump 文件权限相关问题
- LaTeX中的特殊符号,数学公式符号的相关写法
- 丸子的技术类文章!!它来了!!!
- CentOS 可以ping通IP和域名,但打开火狐却上不了网
- 通信协议——Uart、RS232、RS485、SPI
- 打造个人版微信小程序(1)——本地开发api接口调用
- 蛊惑者马云发家史(曾推毛氏运动唐僧团队)三
- java毕业设计——基于java+JSP+J2EE的城市公交查询系统设计与实现(毕业论文+程序源码)——城市公交查询系统
- uniapp 微信分享(安卓)
- 微信打通腾讯地图 提供地图API接口