我昨天正在配置IPtable。我的同事刚问我这个问题,我无法回答。我意识到我是一个比系统管理员更好的开发人员,需要改进它。
那他们是什么?它们适用于什么?缺点/优点(如果相关)。
答案 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)