1. TCP和UDP的区别

  • TCP是面向连接的,UDP是面向无连接的,所谓建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方的交互状态,用这样的数据结构来保证所谓的面向连接特性
  • TCP提供可靠交付,TCP传输的数据,无差错,不丢失,不重复,按顺序到达;而UDP继承了IP包的特性,不保证不丢失,不保证按顺序到达
  • TCP是面向字节流的,没头没尾;而UDP继承IP的特性,是基于数据报的,一个一个发,一个一个收
  • TCP有拥塞控制,根据网络情况自己调整发送速度;UDP就不管,应用让发就发

2. UDP包头

关键:

端口:无论应用程序用TCP还是UDP,都有监听一个端口,正是这个端口用来区分应用程序

3. UDP的特点

  • 沟通简单
  • “轻信他人”谁都可以给它传数据,它也可以给任何人传数据,甚至同时给多个人发数据
  • 不会根据网络情况进行拥塞控制

4. UDP的三大应用场景

  • 需要资源少,网络情况较好的内网,或者对丢包不敏感的应用。比如DHCP,PXE中下载镜像用到的TFTP(内网)
  • 不需要一对一沟通建立连接,而是可以广播的应用。比如DHCP就是广播的,还有组播(IGMP包),VXLAN
  • 需要处理速度快,时延低,可以容忍少量丢包。

5. UDP应用例子

  • 网页或者APP的访问,原来通常使用的是HTTP,这是基于TCP的;QUIC是谷歌提出的一种基于UDP的改进通信协议,目的是降低时延,提供更好的用户互动体验,QUIC将建立连接,自适应拥塞控制等交给应用层
  • 流媒体协议,比如直播,现在用的比较多是RTMP,这是基于TCP的,很多直播应用基于UDP自己实现了视频传输协议
  • 实时游戏,在异步IO机制引入之前,常常是面对海量客户端连接的策略
  • LoT物联网,谷歌提出的Thread协议就是基于UDP的
  • 移动通信领域,比如4G移动网络

6. 问题总结

6.1 怎样才算一个连接?

是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方的交互状态,用这样的数据结构来保证所谓的面向连接特性(TCP更好的比喻是在码头上增加了记录人员,核查人员和督导人员,至于IP层和数据链路层,它没有任何改造。)

趣谈网络协议——UDP协议相关推荐

  1. 趣谈网络协议笔记-二(第十七讲)

    趣谈网络协议笔记-二(第十七讲) P2P协议:我下小电影,99%急死你 自勉 逃离舒适区! 正文 一. P2P协议 整个篇章讲的就是这两个协议之间的区别.P2P协议就是迅雷下载数据时所用的协议, 众所 ...

  2. 趣谈网络协议笔记-二(第十三讲)

    趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...

  3. 趣谈网络协议笔记-二(第十二讲)

    趣谈网络协议笔记-二(第十二讲) TCP协议(下):西行必定多妖孽,恒心智慧消磨难 前言 哈哈哈,越当我看刘超的通俗讲解,我就越感觉自己的无能.每次当我看了讲解之后,每次当我感觉到这个东西原来是这么简 ...

  4. 趣谈网络协议笔记-二(第十一讲)

    趣谈网络协议笔记-二(第十一讲) TCP协议(上):因性恶而复杂,先恶后善反轻松 自勉 我似乎天性不擅长争斗,但是有些时候,我也必须砥砺前行. 强大是和平的前提,而善良不是. 前言 今天回到家里已经是 ...

  5. 趣谈网络协议笔记-二(第十讲)

    趣谈网络协议笔记-二(第十讲) UDP协议:因性善而简单,难免碰到"城会玩" 自勉 如果手上没有剑,我就无法保护你.如果我一直握着剑,我就无法抱紧你.--<Bleach> ...

  6. 趣谈网络协议笔记-二(第七,八,九讲)

    趣谈网络协议笔记-二(第七,八,九讲) 勉励 人生而自由,却无往不在枷锁(牢笼)之中. ------卢梭@<社会契约论> 为那些有形的牢笼感到庆幸吧. 为自己出生于这个时代感到庆幸吧,因为 ...

  7. 华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解)

    华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解) 程序员高级码农II 2020-09-25 07:23:00 前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ...

  8. 华为研究院19级研究员几年心得终成趣谈网络协议文档

    苦且绕不过去.经过多次放弃之后,我发现在我的职业生涯中,网络这一关无论如何也绕不过去.本来觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了,但是到后来才发现,服务数量一多,吞吐量 ...

  9. 华为研究院高级研究员几年心得终得趣谈网络协议文档,附资深架构师讲解

    苦且绕不过去.经过多次放弃之后,我发现在我的职业生涯中,网络这一关无论如何也绕不过去.本来觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了,但是到后来才发现,服务数量一多,吞吐量 ...

  10. 面试华为必备:华为18级大牛呕心沥血三年整理的 趣谈网络协议

    前言 华为是一个热门的互联网大厂,华为每年都要进很多新人,对于新人来说,那些高大上的技术是用不到的,反倒是非常需要这些基础的文档,有这些新手进步会快很多,搞清楚TCP IP协议栈,其他的学起来也就容易 ...

最新文章

  1. 深度学习(6)构造简单的神经网络
  2. Redis中Value使用hash类型的效率是普通String的两倍
  3. python软件怎么用-Python如何创建应用程序
  4. 事件溯源|日志记录-一个基础的微服务模式
  5. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(二)
  6. 剑指offer之两个队列实现栈的问题
  7. 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构
  8. jpa findone怎么用_Jpa VS MyBatis,你用哪个?
  9. 高颜值免费在线绘图工具新增WGCNA和差异分析
  10. Mysql学习总结(37)——Mysql Limit 分页查询优化
  11. Pycharm专业版注册教程
  12. 全国大学生电子设计竞赛综合测评硬件调试经验
  13. c语言中0x13,int 0x13 常用功能详解
  14. 软件测试-自我介绍-整体框架
  15. 艺赛旗RPA--经验分享:Python 中的“特殊”函数
  16. 最近组织游泳社的体会
  17. 奇异的水果世界——水果篇
  18. c语言中的线程管理,深入解析C++编程中线程池的使用
  19. TVAnts技术实现猜想
  20. 日期操作比较全面得代码

热门文章

  1. 新概念单片机c语言 pdf,新概念51单片机C语言教程实例代码(1).pdf
  2. mysql新建数据库并执行sql文件
  3. opengl超级宝典(第5版)的环境搭建
  4. MCP2515在8M晶振控制器下配置1M波特率的配置
  5. 网站ddos发包服务器,ddos发包搭建
  6. java 绩效考核系统源码_基于jsp的企业绩效考核系统-JavaEE实现企业绩效考核系统 - java项目源码...
  7. html制作摩天轮,LED幻彩摩天轮的制作方法
  8. 通讯录标准化输入fread c语言,C语言实现通讯录系统
  9. 计算机辅助设计autocad2005(建筑)四级考试,计算机辅助设计(AutoCAD平台)
  10. python语言程序设计实践教程答案实验二_20192428 实验二《Python程序设计》实验报告...