TCP和UDP协议的区别以及原理

TCP和UDP协议的区别以及原理TCP 和 UDP 协议的区别以及原理最近重新认知了一下 TCP 和 UDP 的原理以及区别 做一个简单的总结 一 作用首先 tcp 和 udp 都是工作再传输层 用于程序之间传输数据的 数一般包含 文件类型 视频类型 jpg 图片等 二 区别 TCP 是基于连接的 而 UDP 是基于非连接的 tcp 传输数据稳定可靠 适用于对网络通讯质量要求较高的场景 需要准确无误的传输给对方 比如 传输文件 发送邮件 浏览网页等等 udp 的优点是速度快 但是可能产生丢包 所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景 比如

TCP和UDP协议的区别以及原理

该文章是学习了B站up主的视频做的总结,讲的很通俗易懂,首先感谢博主的分享。视频地址:https://www.bilibili.com/video/BV1kV411j7hA/?spm_id_from=333.337.search-card.all.click&vd_source=0a3d4c746a63de738fa043eaf6

重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。

一、作用

首先:tcp和udp都是工作再传输层,用于程序之间传输数据的。数一般包含:文件类型,视频类型,jpg图片等。
在这里插入图片描述

二、区别

TCP是基于连接的,而UDP是基于非连接的。
tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等
udp的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如:域名查询,语音通话,视屏直播等。udp还有一个非常重要的应用场景就是隧道网络,比如:vpn,VXLAN.

以人与人之间的通信为例:UDP协议就相当于是写信给对方,寄出去信件之后不能知道对方是否收到信件,信件内容是否完整,也不能得到及时反馈,二TCP协议就像是打电话通信,在这一系列流程都能得到及时反馈,并能确保对方及时接收到。如下图:

以通信为例

三、TCP通信的过程:

tcp是如何保证以上过程的:分为三个步骤,三次握手,传输确认,四次挥手。三次握手是建立连接的过程。

四、三次握手:

当客户端向服务端发起连接时,会先发一包连接请求数据,过去询问一下,能否与你建立连接?这包数据称之为SYN包,如果对端同意连接,则回复一包SYN+ACK包,客户端收到之后,发送一包ACK包,连接建立,因为这个过程中互相发送了三包数据,所以称之为三次握手。
在这里插入图片描述

为什么要三次握手而不是两次握手?

五、数据传输:

六、四次挥手:

在这里插入图片描述

处于连接状态的客户端和服务端,都可以发起关闭连接请求,此时需要四次挥手来进行连接关闭,假设客户端主动发起连接关闭请求,他给服务端发起一包FIN包,标识要关闭连接,自己进入终止等待1装填,服务端收到FIN包,发送一包ACK包,标识自己进入了关闭等待状态,客户端进入终止等待2状态。这是第二次挥手,服务端此时还可以发送未发送的数据,而客户端还可以接受数据,待服务端发送完数据之后,发送一包FIN包,最后进入确认状态,这是第3次挥手,客户端收到之后恢复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后,立即关闭连接,这是第四次挥手。为什么客户端要等待超时时间这是为了保证对方已经收到ACK包,因为假设客户端发送完最后一包ACK包后释放了连接,一旦ACK包在网络中丢失,服务端将一直停留在 最后确认状态,如果等待一段时间,这时服务端会因为没有收到ack包重发FIN包,客户端会响应 这个FIN包进行重发ack包,并刷新超时时间,这个机制跟第三次握手一样。也是为了保证在不可靠的网络链路中进行可靠的连接断开确认。

七、UDP协议:

udp:首先udp协议是非连接的,发送数据就是把简单的数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系,正因为udp这种简单的处理方式,导致他的性能损耗非常少,对于cpu,内存资源的占用也远小于tcp,但是对于网络传输过程中产生的丢包,udp并不能保证,所以udp在传输稳定性上要弱于tcp,所以,tcp和udp的主要却别:tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等,udp的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如:域名查询,语音通话,视屏直播等。udp还有一个非常重要的应用场景就是隧道网络,比如:vpn,VXLAN.
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223636.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:45
下一篇 2026年3月17日 下午1:45


相关推荐

  • 直立智能车(平衡车)毕业论文[通俗易懂]

    直立智能车(平衡车)毕业论文[通俗易懂]直立智能车设计摘要随着微电子控制技术的发展和人们对出行工具的日益增长的需求,一款简单易操作、容易携带、清洁无污染的两轮自平衡车开始走进大众的视野,但这种小型代步工具仍可能存在一定的不稳定性和安全隐患,本次课题主要通过在实验室制作一款简易的自平衡小车,通过手机蓝牙控制,以此模拟真实的使用者驾驶体验,在模拟实验中提升平衡车的稳定性,解决可能出现的实…

    2022年5月29日
    106
  • linux(3) 处理目录的常用命令「建议收藏」

    linux(3) 处理目录的常用命令「建议收藏」目录命令总览ls(英文全拼:listfiles):列出目录及文件名cd(英文全拼:changedirectory):切换目录pwd(英文全拼:printworkdirectory):显

    2022年7月30日
    5
  • 如何使用Pycharm

    如何使用Pycharm3 3 Python 的 IDE PyCharm1 集成开发环境 IDE 集成开发环境 IDE IntegratedDe 集成了开发软件需要的所有工具 一般包括以下工具 图形用户界面代码编辑器 支持代码补全 自动缩进 编译器 解释器调试器 断点 单步执行 2 PyCharm 介绍 PyCharm 是 Pytho

    2026年3月27日
    2
  • TLS/SSL 协议详解 (30) SSL中的RSA、DHE、ECDHE、ECDH流程与区别

    TLS/SSL 协议详解 (30) SSL中的RSA、DHE、ECDHE、ECDH流程与区别我的TLS实现:https://github.com/mrpre/atls/大家可以参考,代码里面的逻辑较清晰。我的SSL专栏见:https://blog.csdn.net/mrpre/article/category/9270159描述了TLS的各方面。本文是对前面系列章节关于非对称算法在SSL中运用的总结和细化,但也可以作为详解SSL中RSA、ECDHE非对…

    2022年5月5日
    155
  • IDEA搭建SpringBoot框架[通俗易懂]

    IDEA搭建SpringBoot框架[通俗易懂]IDEA搭建SpringBoot框架

    2022年8月20日
    25
  • docker镜像操作_docker 本地镜像

    docker镜像操作_docker 本地镜像前言Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似我们可以把镜像看作类,把容器看作类实例化后的对象。|

    2022年7月31日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号