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,就需要完成以下功能(这些机制的核心一是为了实现数据的可靠传输,一是为了提高数据传输的效率):

  1. 确认应答机制(为了实现可靠传输);
  2. 超时重传机制(为了实现可靠传输);
  3. 滑动窗口(提高数据传输效率);
  4. 快速重传(处理滑动窗口丢包的情况,为了实现可靠传输);
  5. 流量控制+拥塞控制(为了实现可靠传输);
  6. 延时应答+捎带应答(提高数据传输效率);

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协议相关推荐

  1. 计算机网络---TCP/UDP协议(一)

    TCP协议 传输控制协议,面向连接的.可靠的.基于流服务的传输层通信协议. TCP协议使用的是超时重传.数据确认机制来保证数据传输的可靠性,确保数据正确的被接收,使用TCP通信双方必须先建立连接,并在 ...

  2. 【计算机网络】UDP协议

    目录 1. UDP协议头部格式 2. UDP协议的特点 2.1 无连接 2.2 不可靠 2.3 面向数据报 2.4 有接收缓冲区,没有发送缓冲区 2.5 大小受限 3. 基于UDP的应用层协议 4. ...

  3. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  4. 温州大学计算机网络,数据通信与计算机网络(温州大学)实验四 - 运输层TCP和UDP协议分析.doc...

    温州大学 WENZHOU UNIVERSITY 实 验 报 告 学 期2016-2017学年第一学期课 程数据通信与计算机网络专 业电子信息科学与技术班 级14电科1学生姓名徐炜学 号14211111 ...

  5. 计算机网络实验二抓包协议分析,计算机网络实验-使用Wireshark分析TCP和UDP协议...

    <计算机网络实验-使用Wireshark分析TCP和UDP协议>由会员分享,可在线阅读,更多相关<计算机网络实验-使用Wireshark分析TCP和UDP协议(6页珍藏版)>请 ...

  6. 计算机网络实验 ——wireshark抓包简要分析TCP、UDP协议

    [计算机网络实验 --wireshark抓包简要分析TCP.UDP协议] (1)分析 TCPheader: Source Port:16bit源端口,数据发起者的端口号: Destination Po ...

  7. 计算机网络【UDP与TCP协议(三次握手、四次挥手)】

    计算机网络[UDP与TCP协议(三次握手.四次挥手)]

  8. 计算机网络-UDP协议

    目录 1 概述 2 UDP的主要特点 3 UDP的首部格式 3.1 传输关系 3.2 首部格式 3.3 UDP 基于端口的分用和复用 3.4 UDP校验 1 概述 用户数据报协议(UDP,User D ...

  9. 计算机网络实验四:利用UDP协议实现点对点聊天

    文章目录 1. 简介 1.1 功能 1.2 技术 1.3 流程 2. 源码 2.1 客户端1 2.2 客户端2(与客户端1不同的只有端口号) 2.3 服务端 3. 运行 4. 注意 4.1 端口占用 ...

最新文章

  1. Spring Boot中使用Flyway来管理数据库版本
  2. 【学术相关】毕业论文速成指南来了!
  3. Java 子类 instanceof 父类
  4. 9008刷机怎么刷_OV快捷进入高通进9008或fastboot模式刷机解锁,和MTK关机解锁
  5. 项目经理:赢得项目不是终点而是起点
  6. error: 'Can't connect to local MySQL server through socket '/data/3307/data/mysql.sock' (2)'
  7. AFNetworking请求服务器错误
  8. 2017年NBA球员数据分析
  9. ES3、ES5、ES6、ES2016、ES2017、ES2018、ES2019
  10. jdk 配置出错could not open `C:\Java\jdk16\lib\amd64\jvm.cfg‘ 解决方案
  11. tcpdump 文件权限相关问题
  12. LaTeX中的特殊符号,数学公式符号的相关写法
  13. 丸子的技术类文章!!它来了!!!
  14. CentOS 可以ping通IP和域名,但打开火狐却上不了网
  15. 通信协议——Uart、RS232、RS485、SPI
  16. 打造个人版微信小程序(1)——本地开发api接口调用
  17. 蛊惑者马云发家史(曾推毛氏运动唐僧团队)三
  18. java毕业设计——基于java+JSP+J2EE的城市公交查询系统设计与实现(毕业论文+程序源码)——城市公交查询系统
  19. uniapp 微信分享(安卓)
  20. 微信打通腾讯地图 提供地图API接口

热门文章

  1. 【Python入门自学笔记专辑】——Python集合
  2. 对于我来说,什么的东西算是软件?
  3. 【NODEJS】ejs
  4. JavaScript --Node,js
  5. 神华资产注入预期或被透支
  6. STM32的指令周期
  7. css ...更多_有关向不同文化介绍技术概念的更多信息...
  8. 企业成本费用核算的4大要点!
  9. slaveof directive not allowed in cluster mode
  10. LOJ#6103. 「2017 山东二轮集训 Day2」第一题 解题报告