一、TCP与UDP
TCP(传输控制协议)和UDP(用户数据报协议)是OSI模型中的传输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于广播和细节控制交给应用的通信传输。传输层的功能是使源主机和目标端主机上的实体可以进行会话。
TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。需要三次握手建立连接才能进行数据传输。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。
UDP协议是一个不可靠、无连接协议,不与对方建立连接而是直接就把数据包发送过去。主要适用于不需要对报文进行排序和流量控制的场合。UDP适用于一次只传少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
TCP/UDP的优缺点:
TCP的优点:可靠、稳定;TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立来连接,而且在数据传递时,有确认、窗口、拥塞控制机制,在数据传完后,还会断开连接来节约系统资源。
TCP的缺点:慢、效率低、占用系统资源高、易被攻击;TCP在传递数据之前,要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接。事实上,每个链接都会占用系统的CPU、内存等硬件资源。而且因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
UDP的优点:快、比TCP稍安全;UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据是非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些,但UDP也是无法避免攻击的,比如UDP Flood攻击......
UDP的缺点:不可靠、不稳定;因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
两者的区别大致如下:
TCP面向连接;UDP面向非连接,即发送数据前不需要建立连接;
TCP提供可靠的服务(数据传输);UDP无法保证;
TCP面向字节流、UDP面向报文;
TCP数据传输慢;UDP数据传输快;
TCP/UDP应用场景:
什么时候使用TCP?答:当对网络通讯质量有要求时,比如:整个数据要准确无误地传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输协议。
什么时候使用UDP?答:当对网络通讯质量要求不高时,要求网络通讯速度能尽量的快,这是就可以使用UDP。
面向连接和面向无连接的区别?
面向连接举例:两个人之间通过电话进行通信;面向无连接举例:邮政服务,用户把信函放在邮件中期待邮政处理流程来传递邮政包裹。显然,不可达代表不可靠。
TCP通信需要服务器端侦听listen、接收客户端连接请求accept,等待客户端connect建立连接后才能进行数据包的收发(recv/send)工作。而UDP则服务器和客户端的概念不明显,服务器端即接收端需要绑定端口,等待客户端数据的到来,后续便可以进行数据的收发(recvfrom/sendto)工作。
TCP和UDP中报文的边界问题:在默认的阻塞模式下,TCP无边界,UDP有边界。
对于TCP协议,客户端连续发送数据,主要服务端的这个函数的缓冲区足够的大,会一次性接收过来,即客户端是分好几次发过来,是有边界的,而服务端却一次性接收过来,这个名师无边界的;
对于UDP协议,客户端连续发送数据,即使服务端的这个函数的缓冲区足够大,也只会一次一次的接收,发送多少次接收多少次,即客户端分几次发送过来,服务端就必须按几次接收,从而证明,UDP的通讯模式是有边界的。
二、TCP对应的协议和UDP对应的协议
TCP对应的协议:
1)FTP:定义了文件传输协议,使用21端口。计算机开了FTP服务便是启动了文件传输服务。下载文件、上传主页,都要用到FTP服务。
2)Telent:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
3)SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常用的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置中常看到有SMTP端口设置这个栏,服务器开放的是25号端口。
4)POP3:它是和SMTP对应,POP3用于接收邮件,通常情况下,POP3协议所用的是110端口。也就是说,只要你有相应的使用POP3协议的程序,就可以不以web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件。
5)HTTP协议:是从web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
1)DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53端口。
2)SNMP:简单网络管理协议,使用161端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
3)TFTP,简单文件传输协议,该协议在端口69上使用UDP服务。
原文:https://www.cnblogs.com/HuiH/p/11877494.html