Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TCP/UDP协议基本概念

TCP/UDP协议基本概念

作者头像
Lansonli
发布于 2021-10-09 03:18:24
发布于 2021-10-09 03:18:24
6700
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客

TCPUDP协议是TCP/IP协议的核心。 TCP 传输协议:TCP 协议是一TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

一、定义

在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Controll Protocol、UDP(用户数据报协议,User Data Protocol)是传输层最重要的两种协议,为上层用户提供级别的通信可靠性。

传输控制协议(TCP):TCP(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。协议规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分组重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的特点就是提供的是面向连接、可靠的字节流服务。

用户数据报协议(UDP):UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

二、相关概念

网络协议

网络协议是指通信双方就通信如何进行所必须共同遵守的约定和通信规则的集合。在网络上通信的双方只有遵守相同的协议,才能正确地交流信息,就像人们交谈时要使用同一种语言一样,如果谈话里使用不同的语言,就会造成双方都不知所云,交流就被迫中断。典型的网络协议有:TCP/IP协议IPX/SPX协议、IEEEE802标准协议系列、X.25协议等。 [3]

传输层

综合OSI和TCP/IP参考模型的优点,采用一种5层的网络体系结构。传输层即五层网络体系结构中的一层。传输层的设计目标是允许源主机和目标主机上的对等实体进行对话,即为两个主机中进程之间的通信提供服务。例如,一台主机上的浏览器进程与另一台主机上的Web服务器进程之间进行通信。

传输层的基本功能是接收来自上一层应用层的数据,在必要的时候把这些数据分割成较小的单元,然后把这些数据单元传递给网络层,并且确保这些数据单元能够正确地到达另一端。

传输层是真正的端到端的层,它负责将数据从源端传送到目标端,即源端主机上的一个程序利用传输层协议与目标端主机上的一个程序进行会话。而在其下面的各层,只涉及一台主机与它的直接邻居的通信,这是因为源主机和目标主机之间可能存在多个中间路由器

三、协议介绍

面向连接的TCP

“面向连接”就是在正式通信前必须要与对方建立起连接,是按照电话系统建模的。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。

TCP协议是一种可靠的、一对一的、面向有连接的通信协议,TCP主要通过下列几种方式保证数据传输的可靠性:

(1)在使用TCP协议进行数据传输时,往往需要客户端和服务端先建立一个“通道“、且这个通道只能够被客户端和服务端使用,所以TCP传输协议只能面向一对一的连接。

(2)为了保证数据传输的准确无误,TCP传输协议将用于传输的数据包分为若干个部分(每个部分的大小根据当时的网络情况而定),然后在它们的首部添加一个检验字节。当数据的一个部分被接收完毕之后,服务端会对这一部分的完整性和准确性进行校验,校验之后如果数据的完整度和准确度都为100%,在服务端会要求客户端开始数据下一个部分的传输,如果数据的完整性和准确性与原来不相符,那么服务端会要求客户端再次传输这个部分。 [5]

客户端与服务端在使用TCP传输协议时要先建立一个“通道”,在传输完毕之后又要关闭这“通道”,前者可以被形象地成为“三次握手”,而后者则可以被称为“四次挥手”。

通道的建立——三次握手:

(1)在建立通道时,客户端首先要向服务端发送一个SYN同步信号。

(2)服务端在接收到这个信号之后会向客户端发出SYN同步信号和ACK确认信号。

(3)当服务端的ACK和SYN到达客户端后,客户端与服务端之间的这个“通道”就会被建立起来。

通道的关闭——四次挥手:

(1)在数据传输完毕之后,客户端会向服务端发出一个FIN终止信号。

(2)服务端在收到这个信号之后会向客户端发出一个ACK确认信号。

(3)如果服务端此后也没有数据发给客户端时服务端会向客户端发送一个FIN终止信号。

(4)客户端在收到这个信号之后会回复一个确认信号,在服务端接收到这个信号之后,服务端与客户端的通道也就关闭了。

TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

无连接的UDP协议

“无连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。

UDP传输协议是一种不可靠的、面向无连接、可以实现多对一、一对多和一对一连接的通信协议。UDP在传输数据前既不需要建立通道,在数据传输完毕后也不需要将通道关闭。只要客户端给服务端发送一个请求,服务端就会一次性地把所有数据发送完毕。UDP在传输数据时不会对数据的完整性进行验证,在数据丢失或数据出错时也不会要求重新传输,因此也节省了很多用于验证数据包的时间,所以以UDP建立的连接的延迟会比以TCP建立的连接的延迟更低。UDP不会根据当前的网络情况来控制数据的发送速度,因此无论网络情况是好是坏,服务端都会以恒定的速率发送数据。虽然这样有时会造成数据的丢失与损坏,但是这一点对于一些实时应用来说是十分重要的。基于以上三点,UDP在数据传输方面速度更快,延迟更低,实时性更好,因此被广泛地用于通信领域和视频网站当中。 [5] 

UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送ICMP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

四、协议差别

TCP/IP 和UDP最大的区别就是:TCP/IP是面向连接的,UDP是无连接的。TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。TCP协议和UDP协议之间的差别如下表所示。

在实际的使用中,TCP主要应用于文件传输精确性相对要求较高且不是很紧急的情景,比如电子邮件、远程登录等。有时在这些应用场景下即使丢失一两个字节也会造成不可挽回的错误,所以这些场景中一般都使用TCP传输协议。由于UDP可以提高传输效率,所以UDP被广泛应用于数据量大且精确性要求不高的数据传输,比如我们平常在网站上观看视频或者听音乐的时候应用的基本上都是UDP传输协议。

TCP

UDP

是否连接

面向连接

无连接

传输可靠性

可靠的

不可靠的

应用场景

传输少量数据

大量数据

速度

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TCP和UDP的区别
我们都知道TCP和UDP作为传输协议,被广泛应用于网络通信。这些基础的网络知识也是需要了解,既然两种传输协议都可以用于通信,那它们两者又有何区别。本文将以下面5个点进行对比:
WahFung
2022/05/11
7310
TCP和UDP的区别
详解TCP和UDP协议的原理和区别?
TCP和UDP是网络通信协议中两个常见的传输层协议,它们具有不同的特点和适用场景。本文将详细介绍TCP和UDP协议的原理和区别。
用户1289394
2023/08/22
1.1K0
详解TCP和UDP协议的原理和区别?
TCP/IP协议之传输层:TCP/UDP协议详解(一)
在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Controll Protocol、UDP(用户数据报协议,User Data Protocol)是传输层最重要的两种协议,为上层用户提供级别的通信可靠性。
用户7557625
2020/07/15
3.6K0
TCP/IP协议之传输层:TCP/UDP协议详解(一)
TCP/IP协议(二)
TCP和IP(一) 中,介绍了TCP、IP的正式规格和标准以及主要架构原则。本文主要对TCP、IP的四个分层(链路层、网络层、传输层、应用层)进行介绍。
知行软件EDI
2020/12/04
6860
TCP/IP协议(二)
TCP/IP协议
TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 链路接口层:接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
用户2909867
2018/08/22
5000
TCP/IP协议
面试系列之-通信协议中的tcp与udp(JAVA基础)
计算机网络体系结构中传输层的设计目标是允许源主机和目标主机上的对等实体进行对话,即为两个主机中进程之间的通信提供服务。例如,一台主机上的浏览器进程与另一台主机上的Web服务器进程之间进行通信。
用户4283147
2023/08/21
2750
面试系列之-通信协议中的tcp与udp(JAVA基础)
网络编程之快速搞懂TCP和UDP的区别
网络协议是每个搞网络通信应用开发(比如IM、推送、网关等等)的程序员都必须要掌握的基础知识,TCP/IP协议簇中有两个最具有代表性的传输层协议——分别是 TCP 和 UDP。
大忽悠爱学习
2022/05/06
5910
网络编程之快速搞懂TCP和UDP的区别
网络传输协议:TCP和UDP的区别
1. 定义 : TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
神的孩子都在歌唱
2025/03/05
2350
网络传输协议:TCP和UDP的区别
探秘网络通信:UDP与TCP/IP的奥秘
当我们在浏览网页、发送消息或进行在线游戏时,背后默默发挥作用的是网络通信的核心——UDP和TCP/IP协议。本文将引领读者进入网络传输的神秘世界,揭示这两个协议是如何协同工作的,以及它们在不同场景中的应用。让我们一同探索网络的深层,了解这些技术背后的故事。
一只牛博
2025/05/30
1510
tcp udp 的区别_反映和反应的区别
一、TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
全栈程序员站长
2022/11/06
6820
tcp udp 的区别_反映和反应的区别
socket、tcp、udp、http 的认识及区别
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。
Java架构师历程
2018/09/26
8.4K0
socket、tcp、udp、http 的认识及区别
TCP与UDP:网络协议的技术原理与要点
随着互联网的快速发展,网络协议在数据传输中扮演着重要的角色。TCP(传输控制协议)和UDP(用户数据报协议)是传输层的两种基础协议,它们的主要区别在于可靠性、连接方式和传输速度。本文将详细阐述TCP和UDP的技术原理,特别关注三次握手和四次挥手的过程。
陆业聪
2024/07/23
2070
TCP与UDP:网络协议的技术原理与要点
tcp和udp的区别和使用场景_TCP跟UDP有什么不同
TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。面向字节流,传输慢
全栈程序员站长
2022/11/05
9440
tcp和udp的区别和使用场景_TCP跟UDP有什么不同
网络协议TCP、UDP
国际标准化组织(ISO)指定了一个计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。做前端肯定少不了和网络打交道,所以前端知识栈中必有网络协议。
不作声
2020/07/07
4340
TCP/IP协议族
物理层(RS-232、V.35)和 数据链路层(HDLC、X.25)涉及到在通信信道上传输的原始比特流,它实现传输数据所需要的机械、电气、功能性及过程等手段,提供检错、纠错、同步等措施,使之对网络层显现一条无错线路;并且进行流量调控。Bits、Frames
mcxfate
2020/08/02
8810
浅谈TCP和UDP协议
我们大多数人的回答是,TCP是面向连接的,UDP是面向无连接的。 那么什么是面向连接,什么是面向无连接?,再互通之前,面向连接的协议会先建立连接,例如:TCP会三次握手, 而UDP不会。 所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
秋名山码神
2022/12/13
5180
浅谈TCP和UDP协议
TCP/UDP协议详解
TCP(传输控制协议)和UDP(用户数据报协议)是互联网中传输层最重要的两种协议。它们各自承担着不同的数据传输任务,为上层应用提供不同级别的通信服务。TCP是一种面向连接的、可靠的传输协议,而UDP则是一种无连接的、不可靠的传输协议。
光影zero
2025/02/07
3800
TCP和UDP协议的区别_tcp和ip是什么意思
最近在学习WebSocket, 了解到它是采用TCP来实现异步通信, 全双工.与Http不同的是, Http采用无状态, 应答式的响应.因此就想知道TCP, TCP/IP, HTTP, Socket之间到底是有怎样的关联关系和区别, 以及全双工通信和半双工通信是如何实现的在网络层.
全栈程序员站长
2022/09/30
1.1K0
TCP和UDP协议的区别_tcp和ip是什么意思
【在Linux世界中追寻伟大的One Piece】传输层协议UDP
传输层是计算机网络OSI模型中的第四层,它负责在网络中的两个节点之间提供端到端的数据传输服务。传输层的主要任务包括分段与重组、端口标识、连接控制(面向连接的TCP和无连接的UDP)、流量控制和差错检测与处理等,以确保数据的可靠、有序和高效传输。
枫叶丹
2024/09/10
1880
【在Linux世界中追寻伟大的One Piece】传输层协议UDP
经典面试问题 |TCP 和 UDP 可以使用同一个端口吗?
在深入探讨 TCP 和 UDP 是否可以使用同一个端口之前,我们首先需要理解网络通信的基本原理。网络通信是一个复杂的过程,涉及到多个层次的协议和机制。在 OSI 模型中,传输层是负责端到端数据传输的层次,它提供了两种主要的传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。这两种协议虽然都运行在传输层,但它们的设计目标和工作方式存在显著差异。
ICT系统集成阿祥
2024/12/03
3340
经典面试问题 |TCP 和 UDP 可以使用同一个端口吗?
相关推荐
TCP和UDP的区别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档