0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP和UDP的作用及区别

架构师技术联盟 来源:csdn 作者:五颜六色的黑 2022-11-14 10:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


	

一、作用

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

二、区别

TCP是基于连接的,而UDP是基于非连接的。

tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等

udp的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如:域名查询,语音通话,视频直播等。udp还有一个非常重要的应用场景就是隧道网络,比如:VXLAN

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

三、TCP通信的过程:

tcp是如何保证以上过程的?

分为三个步骤:三次握手,传输确认,四次挥手。三次握手是建立连接的过程。

四、三次握手:

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

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

这是为了防止,因为已失效的请求报文,突然又传到服务器,引起错误, 这是什么意思?

假设采用两次握手建立连接,客户端向服务端发送一个syn包请求建立连接,因为某些未知的原因,并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接,客户端会重发syn包,这次的数据包正常送达,服务端发送syn+ack之后就建立起了连接。

但是第一包数据阻塞的网络突然恢复,第一包syn包又送达到服务端,这时服务端会认为客户端又发起了一个新的连接,从而在两次握手之后进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致,如果在三次握手的情况下,服务端收不到最后的ack包,自然不会认为连接建立成功。

所以三次握手本质上来说就是为了解决网络信道不可靠的问题,为了在不可靠的信道上建立起可靠的连接,经过三次握手之后,客户端和服务端都进入了数据传输状态。

五、数据传输

数据传输:

一包数据可能会被拆成多包发送,如何处理丢包问题,这些数据包到达的先后顺序不同,如何处理乱序问题?

针对这些问题,tcp协议为每一个连接建立了发送缓冲区,从建立链接后的第一个字节的序列号为0,后面每个字节的序列号就会增加1,发送数据时,从数据缓冲区取一部分数据组成发送报文,在tcp协议头中会附带序列号和长度,接收端在收到数据后需要回复确认报文,确认报文中的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还有一个非常重要的应用场景就是隧道网络,比如:VXLAN。

审核编辑:郭婷


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    13

    文章

    10092

    浏览量

    90854
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1417

    浏览量

    82999

原文标题:网络协议:TCP和UDP什么区别?(附视频)

文章出处:【微信号:架构师技术联盟,微信公众号:架构师技术联盟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TCP/UDP 三模式!远程监控以太网温湿度传感器,响应快至 1ms

    :支持 TCP Server/Client、UDP 三种工作模式,可灵活对接不同网络架构 ——TCP Server 模式适合中心服
    的头像 发表于 12-04 15:04 518次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b> 三模式!远程监控以太网温湿度传感器,响应快至 1ms

    请问TCPUDP 可以使用同一个端口吗?

    TCPUDP 可以使用同一个端口吗?
    发表于 12-03 08:01

    第二十五章 W55MH32 TCP_Server_Multi_Socket示例

    、数据交互及连接关闭的完整过程。文章详细介绍了 TCP 协议的概念、特点、与 UDP 的区别、应用场景、数据交互流程、ACK 机制、重传机制和 Keepalive 机制,帮助读者理解其在可靠数据传输中的实际应用价值。
    的头像 发表于 07-24 16:10 729次阅读
    第二十五章 W55MH32 <b class='flag-5'>TCP</b>_Server_Multi_Socket示例

    第二十四章 W55MH32TCP_Client_Multi_Socket示例

    及处理连接关闭的完整过程。文章详细介绍了 TCP 协议的概念、特点、与 UDP 的区别、应用场景、数据交互流程、ACK 机制、重传机制和 Keepalive 机制,帮助读者理解其在可靠数据传输中的实际应用价值。
    的头像 发表于 07-24 16:08 631次阅读
    第二十四章 W55MH32<b class='flag-5'>TCP</b>_Client_Multi_Socket示例

    第五章 W55MH32 UDP示例

    本文介绍了在 W55MH32 芯片上实现 UDP 通信及数据回环测试的方法。阐述了 UDP 协议的概念、特点、应用场景、报文传输流程和报文结构,展示了实现过程,借助网络调试工具完成测试。
    的头像 发表于 07-24 09:13 637次阅读
    第五章 W55MH32 <b class='flag-5'>UDP</b>示例

    第三章 W55MH32 TCP Client示例

    本文介绍在 W55MH32 芯片上实现 TCP 客户端模式进行数据回环测试的方法。阐述 TCP 协议概念、特点、与 UDP 区别、应用场景及相关机制。展示实现过程,包括开启 Keepa
    的头像 发表于 07-24 09:06 759次阅读
    第三章 W55MH32 <b class='flag-5'>TCP</b> Client示例

    什么是Modbus TCP协议

    Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,用于在客户机和服务器之间进行数据通信。它常用于工业自动化控制、电力监控与管理、温湿度监测等领域。Modbus TCP协议使用标准
    的头像 发表于 07-23 17:18 3254次阅读
    什么是Modbus <b class='flag-5'>TCP</b>协议

    TCP攻击是什么?有什么防护方式?

    随着网络的高速发展,越来越多的企业都将业务部署在线下机房或者云上。随之而来的就是各种各样的网络攻击,如DDoS攻击、CC攻击、TCP攻击等,这些攻击对业务的影响也是很大。市面上有很多安全厂商都有研发
    的头像 发表于 06-12 17:33 732次阅读

    开源直接用!UDP-UART数据透传来了

    今天就来分享一下UDP-UART透传示例,源码开放,可根据实际需求灵活应用。 一、UDP-UART透传简介 UDP-UART透传是一种将UDP数据流直接传输到UART接口的通信方式。它
    的头像 发表于 02-05 17:14 560次阅读
    开源直接用!<b class='flag-5'>UDP</b>-UART数据透传来了

    如何优化TCP协议的性能

    优化TCP协议的性能可以从多个方面入手,以下是一些关键的策略和方法: 一、调整TCP参数 TCP窗口大小 : 重要性 :TCP窗口大小是衡量TCP
    的头像 发表于 01-22 09:52 1446次阅读

    TCP协议与UDP协议的区别

    UDP(用户数据报协议) : 无连接 :UDP不建立连接,数据可以直接发送,不需要任何握手过程。 不可靠性 :UDP不保证数据的可靠传输,数据包可能会丢失,不会重传。 2. 数据传输 TC
    的头像 发表于 01-22 09:44 1731次阅读

    Web端TCP/UDP测试工具!小白必学~

    Web端TCP/UDP测试工具,方便大家进行各种基于TCP和TDP的模拟测试。该测试工具不仅支持TCPUDP测试,还支持SSL,使用极为便
    的头像 发表于 01-08 18:17 1976次阅读
    Web端<b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>测试工具!小白必学~

    TCP三次握手与UDP区别

    在计算机网络中,数据传输的可靠性和效率是两个关键因素。为了满足不同的应用需求,设计者们开发了多种传输层协议。其中,TCP(传输控制协议)和UDP(用户数据报协议)是最常用的两种。它们在数据传输机制
    的头像 发表于 01-03 17:35 1213次阅读

    TCP三次握手协议的作用

    在计算机网络中,数据的传输需要在发送方和接收方之间建立一个稳定的连接,以确保数据的完整性和顺序。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它通过三次握手协议来建立
    的头像 发表于 01-03 17:15 1438次阅读

    一文了解Android UDP通信

    协议。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。 首部开销小: UDP的首部开销只有8个字节,比
    发表于 12-30 10:56