简述TCP和UDP的主要区别,为什么有了TCP协议又要有UDP协议,主要应用场合是什么?
TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务;TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP具有较好的实时性,工作效率较TCP协议高。TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能顺序地从一端传到另一端。UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,不保证数据按顺序传递,故而传输速度很快。
TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务; TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP具有较好的实时性,工作效率较TCP协议高UDP段结构比TCP的段结构简单是否连接 面向连接 面向非连接传输可靠性 可靠 不可靠应用场合 传输大量数据 少量数据 速度 慢 快

TCP和 UDP协议使用的场合是什么
TCP/IP 是供已连接因特网的计算机进行通信的通信协议。TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。TCP 协议使用在面向连接的场合。 UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。 TCP协议使用在面向连接的场合,UDP 协议使用在面向不连接的场合。
TCP/IP 是供已连接因特网的计算机进行通信的通信协议。 TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。TCP 协议使用在面向连接的场合, UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。 协议使用在面向连接的场合,UDP 协议使用在面向不连接的场合.
TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。TCP 协议使用在面向连接的场合, UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。 协议使用在面向连接的场合,UDP 协议使用在面向不连接的场合.
TCP在通信前需要先建立连接,比如FTP,TELNET,而UDP则不用,比如DNS,SNMP等。
有花头像的那个人,说得对。

列举TCP和UDP协议的常用应用
一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。在现场测控领域,面向的是分布化的控制器、监测器等,其应用场合环境比较恶劣,这样就对待传输数据提出了不同的要求,如实时、抗干扰性、安全性等。基于此,现场通信中,若某一应用要将一组数据传送给网络中的另一个节点,可由UDP进程将数据加上报头后传送给IP进程,UDP协议省去了建立连接和拆除连接的过程!取消了重发检验机制,能够达到较高的通信速率。TCP和UDP协议是TCP/IP协议的核心。TCP传输协议:TCP 协议是一TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。
TCP提供的是面向连接的、可靠的数据流传输,如web/网页应用 而UDP提供的是非面向连接的、不可靠的数据流传输,如QQ
TCP提供的是面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。面向连接的协议在任何数据传输前就建立好了点到点的连接。ATM和帧中继是面向连接的协议,但它们工作在数据链路层,而不是在传输层。普通的音频电话也是面向连接的。

图文并茂,讲解TCP和UDP协议的原理以及区别
最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。首先,tcp和udp都是工作在传输层,用于程序之间传输数据的。数据一般包含:文件类型,视频类型,jpg图片等。TCP是基于连接的,而UDP是基于非连接的。tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等udp的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如:域名查询,语音通话,视频直播等。udp还有一个非常重要的应用场景就是隧道网络,比如:VXLAN以人与人之间的通信为例:UDP协议就相当于是写信给对方,寄出去信件之后不能知道对方是否收到信件,信件内容是否完整,也不能得到及时反馈,而TCP协议就像是打电话通信,在这一系列流程都能得到及时反馈,并能确保对方及时接收到。如下图:tcp是如何保证以上过程的?分为三个步骤:三次握手,传输确认,四次挥手。三次握手是建立连接的过程。当客户端向服务端发起连接时,会先发一包连接请求数据,过去询问一下,能否与你建立连接?这包数据称之为SYN包,如果对端同意连接,则回复一包SYN+ACK包,客户端收到之后,发送一包ACK包,连接建立,因为这个过程中互相发送了三包数据,所以称之为三次握手。这是为了防止,因为已失效的请求报文,突然又传到服务器,引起错误,这是什么意思?假设采用两次握手建立连接,客户端向服务端发送一个syn包请求建立连接,因为某些未知的原因,并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接,客户端会重发syn包,这次的数据包正常送达,服务端发送syn+ack之后就建立起了连接。但是第一包数据阻塞的网络突然恢复,第一包syn包又送达到服务端,这时服务端会认为客户端又发起了一个新的连接,从而在两次握手之后进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致,如果在三次握手的情况下,服务端收不到最后的ack包,自然不会认为连接建立成功。所以三次握手本质上来说就是为了解决网络信道不可靠的问题,为了在不可靠的信道上建立起可靠的连接,经过三次握手之后,客户端和服务端都进入了数据传输状态。一包数据可能会被拆成多包发送,如何处理丢包问题,这些数据包到达的先后顺序不同,如何处理乱序问题?针对这些问题,tcp协议为每一个连接建立了发送缓冲区,从建立链接后的第一个字节的序列号为0,后面每个字节的序列号就会增加1,发送数据时,从数据缓冲区取一部分数据组成发送报文,在tcp协议头中会附带序列号和长度,接收端在收到数据后需要回复确认报文,确认报文中的ack等于接受序列号加长度,也就是下包数据发送的起始序列号,这样一问一答的发送方式,能够使发送端确认发送的数据已经被对方收到,发送端也可以发送一次的连续的多包数据,接受端只需要回复一次ack就可以了。如图:六、四次挥手:处于连接状态的客户端和服务端,都可以发起关闭连接请求,此时需要四次挥手来进行连接关闭。假设客户端主动发起连接关闭请求,他给服务端发起一包FIN包,标识要关闭连接,自己进入终止等待1装填,服务端收到FIN包,发送一包ACK包,标识自己进入了关闭等待状态,客户端进入终止等待2状态,这是第二次挥手,服务端此时还可以发送未发送的数据,而客户端还可以接受数据,待服务端发送完数据之后,发送一包FIN包,最后进入确认状态,这是第3次挥手,客户端收到之后恢复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后,立即关闭连接,这是第四次挥手。为什么客户端要等待超时时间?这是为了保证对方已经收到ACK包,因为假设客户端发送完最后一包ACK包后释放了连接,一旦ACK包在网络中丢失,服务端将一直停留在 最后确认状态,如果等待一段时间,这时服务端会因为没有收到ack包重发FIN包,客户端会响应 这个FIN包进行重发ack包,并刷新超时时间,这个机制跟第三次握手一样。也是为了保证在不可靠的网络链路中进行可靠的连接断开确认。udp:首先udp协议是非连接的,发送数据就是把简单的数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系,正因为udp这种简单的处理方式,导致他的性能损耗非常少,对于cpu,内存资源的占用也远小于tcp,但是对于网络传输过程中产生的丢包,udp并不能保证,所以udp在传输稳定性上要弱于tcp。所以,tcp和udp的主要区别:tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方。比如,传输文件,发送邮件,浏览网页等等,udp的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如:域名查询,语音通话,视频直播等。udp还有一个非常重要的应用场景就是隧道网络,比如:VXLAN.

UDP 和 TCP 的 socket 分别一般用在什么地方
UDP 的使用范围很窄,而且编程比 TCP 难多了: 你真的很在乎延迟,不能忍受重传,那么就用UDP,例如 NTP 协议。重传NTP消息纯属添乱。你真的不在乎可靠性,丢一些包也不需要重传,那么就可以用 UDP。例子我想不出来。有人说音频或视频流可以用UDP,不过据我看来各大视频网站都用HTTP协议,而HTTP是基于TCP的。你需要NAT穿透,那么不得不用UDP。其他情况,一旦程序要自己做重传,你都是在用UDP模拟出蹩脚的TCP,还不如直接用TCP呢。总之:使用 UDP 需要有强大到不容置疑的理由,when in doubt, use TCP.一些协议,出于历史原因,受当时技术和网络条件限制,选择了基于UDP实现,其选择的理由现在很可能已经不再成立了。因此“xxx协议用UDP”不是你现在写网络应用程序也该用UDP的理由,除非你本身就是在实现xxx协议。 另外,那些说TCP比UDP慢、效率低的,你拿UDP写个程序,把千兆网带宽打满(TCP等价的代码只有两行:客户端 while (true) { send(...); } 服务端 while (true) { recv(...); }。),且不说你的程序会有多复杂,先看看goodput到底是不是比TCP大、CPU使用率是不是比TCP低嘛。
在绝大部分场景都开始直接选择TCP的时候,要提一个非常窄的UDP应用场景:翻嫱 从需求上说,翻嫱的业务场景对协议有如下要求:1. 不被嫱认为是敏感流量或者即使被认为是敏感流量也不能被重置2. 协议够轻,载荷比高(像Tor这种其实非常不适合做此用途)UDP本身无连接,所以即使被认为是敏感流量,也无法被重置; UDP作为协议“外壳”,里面往往搭载的是基于TCP的协议(比如http),TCP自己有检验和重传机制,不需要外壳操心。
TCP 协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。到底选择哪一种协议通常是由需要创建的应用程序决定的。下面的几个问题将有助于选择适宜的协议:1.在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息?如果需要,使用 TCP 协议,在收发数据之前先建立明确的连接。2.数据量是否特别大(例如图象与声音文件)?在连接建立之后,TCP协议将维护连接并确保数据的完整性。不过,这种连接需要更多的计算资源,因而是比较“昂贵”的。3.数据发送是间歇的,还是在一个会话内?例如,如果应用程序在某个任务完成的时候需要通知某个计算机,UDP 协议是更适宜的。UDP 协议适合发送少量的数据。

本文由 在线网速测试 整理编辑,转载请注明出处。