UDP和TCP数据包有什么区别?你用它们做什么的?

时间:2011-02-03 09:14:10

标签: networking tcp udp

我昨天正在配置IPtable。我的同事刚问我这个问题,我无法回答。我意识到我是一个比系统管理员更好的开发人员,需要改进它。

那他们是什么?它们适用于什么?缺点/优点(如果相关)。

6 个答案:

答案 0 :(得分:10)

这些就像基本问题。

UDP ::用户数据报协议

1)没有端到端机器之间的连接(可能在本地网络或互联网的某个地方)。

2)在接收端接收的数据不像TCP那样在流中,而是作为完整的数据块。

3)在传输层,不执行包顺序检查。即如果收到的数据包中有任何错误,接收方将不会要求将相同的数据包重新发送给发送方。

4)由于上述行为,发送方端不需要发送缓冲区。

5)因为没有端到端的连接。并且不需要握手,UDP比TCP快得多但不太可靠。因此主要用于游戏和DNS等。

6)收到数据包后无需确认。

TCP ::传输控制协议

1)端到端在机器之间保持连接(可以在本地网络中或在互联网的某个地方)。

2)在接收器端接收的数据是TCP中的流。因此,当我们对服务器进行网络编程时,我们首先先解析头,然后根据头中提到的大小,我们从缓冲区中获取更多的字节数。

3)错误检查和序列号都已完成。因此,如果任何数据包是无序接收的(很少)或者是错误的,那么该数据包将被重新发送。此外,许多其他协议涉及流量控制(端到端流量控制)。

4)作为连接建立,握手和确认是TCP操作基本上比UDP慢。(我不相信)

5)许多协议使用TCP作为底层传输协议。 HTTP,FTP,TELNET等..

6)沟通程序包括:

Server :: 1)套接字打开          2)套接字绑定          3)套接听          4)套接字接受          5)Socket Send / Recv 客户端:: 1)套接字打开           2)套接字连接           3)套接字发送/接收

还有很多其他的差别......但上面是最常见的。

答案 1 :(得分:5)

TCP是一种可靠的协议,可确保您的数据包到达目的地,并用于所有数据必须在各方之间准确传输的应用程序中。 TCP要求双方在数据传输开始之前协商连接,并且它是一个弹性协议,因为它将重复重新发送数据包,直到预期接收者收到该数据包。

UDP在某种意义上是不可靠的,它允许一些数据包在传输过程中丢失。 UDP的一些应用程序可以在电影流中找到,您实际上可以承受丢失帧并且不会危及电影质量。 UDP不需要在双方之间进行绑定,并且通常被视为TCP的替代方案。

这里有一个很好的表格:TCP vs UDP

答案 2 :(得分:2)

P.R.的答案大多是正确的,但不完整。

TCP是一种可靠的连接流协议。它的数据视图是主机之间的双向字节流:您发送的任何字节都将以相同的顺序到达另一端,至少就应用程序而言(如果需要,操作系统将重新安排数据包)。 / p>

UDP是未连接的数据报协议。它的数据视图是离散数据报或消息,不能保证这些消息实际到达其接收者,或者它们按照发送顺序到达。它确实保证了如果消息到达,它将完整地到达并且不需要修改。

答案 3 :(得分:1)

答案 4 :(得分:1)

This website可能对UDP和TCP的实际差异提供了最简单的解释。从实施的角度来看,请参阅this question

简短回答:TCP有点像挂号信,当UDP有点像普通的字母时 - 后者你永远不知道收件人是否收到你发送的包。

答案 5 :(得分:0)

克里斯是对的! 脱离谷歌的一个奇特链接是:http://www.skullbox.net/tcpudp.php