TCP 和 UDP 是传输层的两个协议(TCP/IP协议五层模型中的第四层)

  1. TCP 是面向连接的,UDP 是面向无连接的
  2. UDP程序结构较简单、
  3. TCP 是面向字节流的,UDP 是基于数据包的
  4. TCP 保证数据正确性,UDP 可能丢包
  5. TCP 保证数据顺序,UDP 不保证

UDP 的包头格式

由上图可以看出,UDP 除了端口号,基本啥都没有了。如果没有这两个端口号,数据就不知道该发给哪个应用。

所以 UDP 就像一个小孩子,特别简单,有如下三个特点

  • 沟通简单,不需要大量的数据结构,处理逻辑和包头字段
  • 轻信他人。它不会建立连接,但是会监听这个地方,谁都可以传给它数据,它也可以传给任何人数据,甚至可以同时传给多个人数据。
  • 愣头青,做事不懂变通。不会根据网络的情况进行拥塞控制,无论是否丢包,它该怎么发还是怎么发

UDP 的主要应用场景

  • 需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的
  • 不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议
  • 需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候

基于 UDP 的几个例子

  • 直播。直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议
  • 实时游戏。游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响
  • 物联网。一方面,物联网领域中断资源少,很可能知识个很小的嵌入式系统,而维护 TCP 协议的代价太大了;另一方面,物联网对实时性的要求也特别高。比如 Google 旗下的 Nest 简历 Thread Group,推出了物联网通信协议 Thread,就是基于 UDP 协议的

TCP 的包头格式

TCP 的包头有哪些内容,分别有什么用

  • 首先,源端口和目标端口是不可少的
  • 接下来是包的序号。主要是为了解决乱序问题。不编好号怎么知道哪个先来,哪个后到
  • 确认序号。发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题
  • 状态位。SYN 是发起一个链接,ACK 是回复,RST 是重新连接,FIN 是结束连接。因为 TCP 是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更
  • 窗口大小,TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力。

通过对 TCP 头的解析,我们知道要掌握 TCP 协议,应该重点关注以下问题:

  • 顺序问题
  • 丢包问题
  • 连接维护
  • 流量控制
  • 拥塞控制

TCP 和 UDP 讲解相关推荐

  1. TCP、UDP以及HTTP的简单讲解

    先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中 ...

  2. 详细讲解网络协议:TCP和UDP什么区别?

    该文章是学习了 B 站 up 主的视频做的总结,讲的很通俗易懂,首先感谢博主的分享.视频地址:https://www.bilibili.com/video/BV1kV411j7hA/?spm_id_f ...

  3. 计算机网络知识全面讲解:TCP和UDP的应用场景

    免费教程推荐: python.C++.Java.JS.Rust.Go语言入门完全手册(6合1).zip-Python文档类资源-CSDN下载 传输层的两个协议-- TCP和UDP有各自的应用场景. T ...

  4. 图文并茂,讲解TCP和UDP协议的原理以及区别

    TCP和UDP协议的区别以及原理 最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结. 一.作用 首先,tcp和udp都是工作在传输层,用于程序之间传输数据的.数据一般包含:文件类型,视 ...

  5. TCP与UDP通信协议及Java实现

    概述 TCP (Transmission Control Protocol):传输控制协议 UDP(User Datagram Protocol):用户数据报协议 TCP 与 UDP 都是 运输层(T ...

  6. TCP和UDP的区别(转)

    TCP协议与UDP协议的区别     首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信 ...

  7. 【转】TCP和UDP的区别

    TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UDP协议与TCP/IP协议的联系,很多人犯糊涂了, 一直都是说TCP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/ ...

  8. 【STM32+cubemx】0020 HAL库开发:以太网ENC28J60芯片和TCP、UDP简单应用

    MCU通过以太网通信有很多种方式,有的内部自带以太网接口(如stm32f107的某些型号):如果没有,也可以在外围连接以太网芯片来实现.外接的以太网芯片,又分为带网络协议栈和不带协议栈的,带网络协议栈 ...

  9. 网络程序之TCP、UDP篇(其一)

    我记得最开始接触网络程序是在我读大二的时候,当时我做的是一个聊天的程序,也不知道服务器和客户端的概念,在网上就是一顿找啊,才到自己能看懂的答案,但是只能两个程序能聊天.造成这样的原因是程序是阻塞的,然 ...

最新文章

  1. C++环境测试CPU是否支持MMX,SSE-未完
  2. linux 批量删除
  3. 《第13章 猜拳游戏》
  4. Could not find artifact com.sun:tools:jar:1.5.0 解决办法
  5. sdut 2107 DFS
  6. Python基础知识(第十天)
  7. Mysql中查找并删除重复数据的方法
  8. iOS沙盒文件夹及获取路劲方法
  9. 放弃腾讯75W年薪,回老家当公务员,提离职被领导教育,网友:leader嫉妒了
  10. 严肃贴:内幕 手机行业
  11. centos7 hostnamectl
  12. Python之常用模块(3)
  13. 只有绩效,才是检验创新的唯一标准
  14. 1053 Path of Equal Weight (30 分)一般树的遍历 DFS+vector容器+sort排序
  15. 【算法笔记】图文结合彻底搞懂后缀数组
  16. UI设计中的原型图用什么工具?怎么做?给谁看?
  17. 对组件、模块、子系统、系统、框架、架构 定义浅析
  18. react中dispatch_react-redux中连续两次dispatch-actions有顺序吗?
  19. 跨境物流主要流程是什么样?
  20. 查看页面滚动条滚动距离,可视区窗口尺寸

热门文章

  1. 2023天津工业大学考研分析
  2. 基于SpringBoot苔藓植物科普网站 毕业设计-附源码345641
  3. 误删除备忘录怎么恢复
  4. acpi event
  5. 如何在注册表被锁定的情况下修复注册表
  6. R语言如何对每一行求和
  7. 关于DICOM格式图像大小和后缀名
  8. java排队系统设计_医院排队系统之简易设计
  9. 中国电信5G技术大规模天线技术
  10. [4G5G专题-65]:RF层 - 天线基础、天线组成、常见的天线特性