TCP vs UDP - 什么是TCP连接?

69

TCP连接到底是什么? 我知道客户端和服务器之间没有物理连接。这个连接只是客户端套接字与服务器在三次握手后创建的新套接字相连吗? 此后,一旦“连接”建立,连接两端的套接字就知道在何处发送他们的数据包。

除了TCP的初始握手外,UDP的功能如何不同? 是每个服务器套接字只有一个客户端向该特定套接字发送数据包吗?

专用主机之间建立连接的一些可能优势是什么?我对TCP和UDP的理解仍然很基础,所以广泛的概括应该足够了。

2个回答

53

让我们将其分解成几个部分。首先,网络基于IP,这是一种协议,为每个网络节点分配一个地址,并允许您从一个节点向另一个节点发送少量数据(通常最多64kB,但通常仅为1500B)。

单独地,这并没有多大价值,因为我们无法检查数据是否实际到达以及是否按正确顺序到达。如果我们想要传输“任意”数量的数据并确保它们到达,我们需要在网络之上使用另一个协议来处理此“传输”。而TCP就是这个目的。

然而,与TCP并行运行的是另一个“传输”协议,它根本不进行任何检查,也没有可靠性,即UDP。UDP只是原始IP数据包的薄包装,添加了一些元数据(如“端口”号)。

但是,UDP仍然很有用,因为有许多情况下数据完整性已经交给了更高级别的协议,因此不需要复杂的传输协议。例如,在虚拟网络服务中使用此协议,其中通常通过UDP通道运行TCP/IP的另一个实例。(在这种情况下,使通道使用可靠的协议,如TCP,可能会导致灾难性后果,因为会出现重发级联。)

因此,“TCP连接”一词是指应用TCProtocol。协议是有状态的,自然地,通常按照SYN-ACK-data-FIN序列进行,或在拒绝传输的情况下按照SYN / RST进行;两个对等体维护连接的状态(握手,建立,关闭,关闭)。 TCP还引入了“服务器”和“客户端”这些术语,其中服务器是侦听传入连接的对等方。


6
嗯...我在思考如何用措辞表达出我需要的东西。我知道TCP添加了额外的功能,使数据传输更加可靠,还具有处理拥塞控制的特性。我想忽略这些特性,只关注实际的“连接”。如果我设计一个UDP客户端和服务器,并通过发送确认消息来增加可靠性,那么这是否就像TCP中使用的“连接”一样? - Cheese
2
哇,你的回答的最后一段在搜索“tcp连接”时出现在谷歌的顶部。恭喜啊,我猜。 - Parziphal
1
@renocor:哈哈,确实,谢谢 :-) 这有点尴尬,不是吗。嗯,算了。 - Kerrek SB
1
@KasunSiyambalapitiya:这些是TCP数据包的类型。SYN、ACK、FIN和RST是握手元数据,用于建立或结束连接。 - Kerrek SB
3
根据原帖评论,我认为这个答案虽然正确,但并没有回答原帖的问题,也没有回答我的问题。我的问题是:“当我们说两台主机之间建立了连接时,这意味着什么?如果我能够获得一个魔法显微镜并检查服务器或客户端,那么我会看到什么?是操作系统代码中分配的某个变量吗?还是某种表中的某个条目?它是如何被创建和删除的?” - Rafael Eyng
显示剩余10条评论

3
TCP和UDP套接字的主要区别在于UDP是无连接的,不使用任何确认对方是否接收到数据。

传输控制协议(TCP)是互联网协议套件的核心协议之一。TCP是套件的两个原始组成部分之一,与Internet协议(IP)相辅相成,因此整个套件通常被称为TCP/IP。TCP提供可靠有序的字节流从一个计算机上的程序到另一个计算机上的程序的传递。TCP是主要的互联网应用程序,如万维网、电子邮件、远程管理和文件传输所依赖的协议。其他不需要可靠数据流服务的应用程序可能会使用用户数据报协议(UDP),它提供了强调延迟降低而不是可靠性的数据报服务。1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接