9 Differences between TCP and UDP Protocol-Java Network Interview Question-译文

原文:http://www.javacodegeeks.com/2014/07/9-differences-between-tcp-and-udp-protocol-java-network-interview-question.html?utm_source=tuicool

  TCP和UDP两种传输层的协议,它被广泛地用于在互联网发送一个主机之间的数据到另一个。很好的了解TCP和UDP的工作方式是任何程序员必不可少的。这就是为什么TCP和UDP之间的差异是一个流行的Java编程面试问题。我已经看到了这个问题很多次在不同的Java面试,尤其是对于服务器端的Java开发人员的位置。由于FIX(金融信息交换)协议也是基于TCP的协议,几家投资银行,对冲基金和外汇解决方案提供商寻求Java开发人员都必须很好的了解TCP和UDP知识。写的FIX引擎和服务器端组件的高速电子交易平台,需要开发者能够对基本面,包括数据结构,算法和网络有深刻的理解。

  顺便说一句,使用TCP和UDP不仅限于一个领域,它在互联网的心脏。它是因特网的核心协议,HTTP是基于TCP。还有一个原因,为什么一个Java开发者应该详细了解这两个协议是Java被广泛用于编写多线程,并行和可扩展的服务器。 Java还提供了丰富的Socket编程的API基于TCP和UDP通信。在本文中,我们将了解TCP和UDP协议的主要区别。要下手时,TCP代表传输控制协议和UDP代表用户数据报协议,双方被广泛用于构建互联网应用。

TCP与UDP协议之间的差异

  我喜欢比较不同点的两件事情,这不仅使他们容易比较,但也使得它容易记住的差异。当我们比较TCP与UDP,我们学会了如何在TCP和UDP的比较中,我们学习哪一个提供可靠和有保证的交付并没有区别。这协议是快速,所以,最重要的时,选择TCP 超过UDP,同时建立自己的分布式应用程序。在这篇文章中,我们将看到在9点,如UDP和TCP之间的区别连接建立,可靠性,排序,速度,开销,报头大小,拥塞控制,应用,基于TCP和UDP,以及它们如何传输数据不同的协议。

面向连接与无连接

  他们之间的第一个和最重要的区别是,TCP是一个面向连接的协议,而UDP是无连接的协议。这意味着建立客户端和服务器之间的连接,才可以通过TCP传送数据。连接建立过程也被称为TCP握手,其中控制消息是客户机和服务器之间交换。该图像在这里介绍了TCP握手,在控制消息的客户端和服务器之间交换的过程。客户端,它是TCP连接的发起方,发送一个SYN消息给服务器,这是监听一个TCP端口上。服务器接收和发送一个SYN-ACK报文,这是接收客户端再次使用ACK回应。一旦服务器接收该ACK消息,在TCP连接建立和准备好进行数据传输。在另一方面,UDP是无连接协议,点对点连接发送消息之前,是不成立的。这就是为什么,UDP是更适合多播信息,一个以数据的单次传输的许多分发组播分发。

可靠性

  TCP提供的交付保证,这意味着使用TCP协议发送的消息是保证交付给客户。如果邮件在运输途中丢失,然后它是用重发,这是由TCP协议本身处理回收。在另一方面,UDP是不可靠的,它不提供任何保证交付。数据报包可能在运输过程中丢失。这就是为什么UDP是不适合用于要求有保证的递送方案。

顺序性

  除了交期保证,TCP还保证了订单的消息。该消息将被递送到客户端以相同的顺序,该服务器发送它们,尽管其可能的话,有可能达到不按顺序到网络的另一端。 TCP协议将尽一切的排序和顺序为您服务。 UDP不提供任何顺序或序列的保证。数据报的报文可以到达任何顺序。这就是为什么TCP是适合于应用程序,它需要交付的排序方式,但也有基于UDP的协议以及其使用的序列号和还船,例如提供订购和可靠性TIBCO会合,这实际上是一种基于UDP的应用程序。

数据边界

  TCP不保留数据边界,UDP呢。在传输控制协议,数据被发送的字节流,并传送无显着迹象显示信号消息(段)的边界。在UDP报文将被单独发送,并进行完整性检查,只有当他们到达了。包有哪些??是在收到荣幸,这意味着在接收端套接字进行读操作将产生一个完整的消息,因为它最初发出明确的界限。虽然TCP还将装配的所有字节后提供完整的信息。消息存储在TCP发送缓冲区,以最大限度地利用网络带宽之前。

速度

  总之,TCP是缓慢和UDP是快的。由于TCP确实有创建的连接,保证担保,有序传递,但它确实比很多的UDP多。该花费的TCP在速度方面,这就是为什么UDP是更适合对速度是一个问题,例如在线视频流媒体,电视节目或在线多玩家游戏。

重量级与轻量级

  因为上面提到的开销,传输控制协议被认为是重重量相比重量轻UDP协议。 UDP的简单的是提供信息不承建立连接,并保证交付或为了保证任何开销。这也反映在其报头的大小,它是用于承载的元数据。

Header的大小

  TCP比UDP的有更大的头部。 TCP数据包的报头通常大小为20字节,这是两倍以上的8个字节,UDP数据报分组的报头大小。 TCP报头中包含序列号,确认号,数据偏移,保留,控制位,窗,紧急指针,选择,填充,校验和,源端口和目的端口。而UDP报头只包含长度,源端口,目的端口,校验和。下面是TCP和UDP报头的样子:

拥塞与流量控制

  TCP做流量控制。 TCP要求三包建立socket连接,任何用户都可以将数据发送之前。 TCP处理可靠性和拥塞控制。另一方面,UDP不具有用于流控制的选项。

使用与应用

  TCP和UDP那个会用于上网?知道TCP和UDP之间的关键区别后,我们就可以很容易地得出结论,这情况适合他们。因为TCP提供递送和测序担保的,而且最适合用于需要高可靠性的应用程序,并传输时间是相对不那么重要。而UDP是更适合于应用程序,需要快速,有效的传输,比如游戏。 UDP的无状态特性也是服务器回答客户的大批小疑问是有用的。在实践中,使用TCP在金融领域如FIX协议是基于TCP的协议,而UDP是大量使用在游戏和娱乐网站。

基于TCP和UDP协议

  一个基于TCP的高端协议的最好的例子是HTTP和HTTPS,它是无处不在的网络连接。其实大多数常用的协议,你所熟悉的,例如TELNET,FTP和SMTP都是基于通过传输控制协议。 UDP没有什么流行的HTTP,但它也广泛的协议,如DHCP和DNS使用。一些这是基于用户数据报协议的其他协议是简单网络管理协议(SNMP),TFTP,BOOTP和NFS(早期版本)。

一定要记住一提的是TCP是面向连接的,可靠的,缓慢的,提供有保证的保和订单信息的,而UDP是无连接的,不可靠,没有顺序的保证,而是一个快速的协议。 TCP开销也比UDP的要高得多,因为它传输每个数据包的多个元数据而不是UDP的。值得一提的传输控制协议标头的大小为20字节,相对于用户数据报协议8个字节的头。使用TCP,如果你不能承受失去任何消息,而UDP是一种用于高速数据的传输,其中单个数据包的丢失是可以接受的,例如更好视频流或在线多玩家游戏。而在Linux上基于TCP / UDP的应用程序的工作,这也是很好的记住基本的网络命令如: telnet和netstat的,它们大大帮助调试或解决任何连接问题。

时间: 2024-10-25 15:10:52

9 Differences between TCP and UDP Protocol-Java Network Interview Question-译文的相关文章

Java网络编程之TCP、UDP

Java网络编程提供了两种协议:TCP(传输控制协议)和UDP(数据报协议).TCP(Transmission Control Protocol)是一种可靠的传输协议,传输时会采用"三次握手"端的方式建立连接,以保证数据的可靠性和安全性:而UDP(User Datagram Protocol)协议是一种不可靠的传输协议,发送的数据不一定能够接受的到,网上的聊天是工具一般采用的此协议.下面将详细的接受TCP和UDP的使用以及相应的编码. 一.TCP网络通信 Java中使用Socket(套

java:网络编程(InetAddress,InetSocketAddress,URL,TCP(Socket与SeverSocket),TCP与UDP的区别)

InerAddress: /**IP地址:在网络上唯一标示一台计算机 * 端口号:标示计算机上不同的应用程序 * java.net.InetAddress类:此类表示互联网协议 (IP) 地址. * 常用方法: * getByName(String host) 在给定主机名的情况下确定主机的 IP 地址. * getHostName() 获取此 IP地址的主机名. * getHostAddress()返回 IP 地址字符串(以文本表现形式). * getLocalHost() 返回本地主机. *

[Java网络安全系列面试题] 说一说TCP和UDP的区别与联系?

TCP TCP是Transfer Control Protocol(传输控制协议)的简称,是一种面向连接的保证可靠传输的协议. 在TCP/IP协议中,IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一确定Internet上的一台主机. TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 通过TCP协议传输,得到的是一个顺序的无差错的数据流. 发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基

JAVA中TCP和UDP传输例子的对比

在本文中我将学到的java中的UDP和TCP在局域网内的传输做了对比,这里强调 的是局域网范围内,非广域网.首先,下面的是我写的在局域网内利用java中的UDP协议写的一个传输文件或者图片的类. --------------------------------------------------------------------------------------------------------------------------------------------------------

java的TCP和UDP编程

TCP 客户端: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class MyClient { public static void main(String[] args) throws Exception{ Socket socket = null; BufferedReader in = n

Java Socket实现基于TCP和UDP多线程通信

一.通过Socket实现TCP编程 1.1 TCP编程 TCP协议是面向连接,可靠的,有序的,以字节流的方式发送数据.基于TCP协议实现网络通信的类有客户端的Socket类和服务器端的ServerSocket类. 1.2 服务器端套路 1.创建ServerSocket对象,绑定监听端口. 2.通过accept()方法监听客户端请求. 3.连接建立后,通过输入流读取客户端发送的请求信息. 4.通过输出流向客户端发送响应信息. 5.关闭响应的资源. 1.3 客户端套路 1.创建Socket对象,指明

运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接

运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接 最近在项目中可能要用到socket相关的东西来发送消息,所以初步研究了下socket的TCP和UDP实现方式,并且结合java1.5的concurrent.ExecutorService类来实现多线程. 具体实现方式见代码: 一.TCP方式: 1.服务端实现方式: TCP的服务端实现方式主要用到ServerSocket类,接收等待客户端连接的方法是accept(); 代码如下:类Sock

java——TCP和UDP

在现有的网络中通讯方式协议有两种:TCP和UDP TCP 是专门设计用于不可靠的的因特网上提供可靠的.端到端的字节流通信的协议,它是一种面向连接的协议,TCP连接是字节流而非报文流. TCP协议就像打电话一样,接通以后有讲话有应答. UDP 向应用程序提供了一种发送封装的原始IP数据报的方法.并且发送时无需建立连接,是一种不可靠的连接. UDP协议就像发电报一样,发出去后就不在去考虑对方收到没有收到. 根据TCP/IP的模式图可以看出这两种协议的关系. socket socket在TCP/IP的

TCP和UDP套接字编程 (java实现)

在了解网络编程之前,我们先了解一下什么叫套接字 套接字即指同一台主机内应用层和运输层之间的接口 由于这个套接字是建立在网络上建立网络应用的可编程接口 因此也将套接字称为应用程序和网络之间的应用程序编程接口! 关于TCP和UDP这里就不作太多介绍了,我们知道TCP是面向连接的,UDP是不面向连接的,TCP可靠,UDP不可靠即可! 我们来设计一个应用来示范一下,流程: 客户机从键盘读取一行字符串,并通过套接字发送到服务器. 服务器从连接的套接字获取这行字符串,并对其进行修改(将小写转为大写),最后再