一、TCP:传输控制协议(Transmission Control Protocol)
主要作用:把数据流分割成适当长度的报文段之后进行传输
工作机制:紧小细微型。它是面向连接的运输层协议。在使用TCP之前,应用程序必须先建立TCP连接(三次握手建立连接),然后传输数据,这里通过停止等待协议,连续ARQ(自动重传请求)协议等确保可靠,然后断开TCP连接(四次挥手)。
优势:可靠性好
TCP如何实现可靠性:劣势:速度慢,占用系统资源高,容易被攻击
首先,发送方和接收方都维持一个发送窗口/接收窗口,发送窗口内的数据是允许发送的(发送窗口内的数据又可以分为"已发送但未收到确认"和"允许发送但未发送"),接收窗口代表了接收方接受数据包的能力大小。当发送方发送一段数据之后,等待接收方的确认,如果在规定时间内收到确认了,发送窗口后移,已发送但未收到确认的窗口长度变小,允许发送但尚未发送的窗口长度变大;如果没有在规定时间内收到确认,则重发。当接收方接收到期待收到的连续数据包会发送给发送方确认。
TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)
既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
TCP的接收端必须丢弃重复的数据
流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
应用:当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 …………TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间。 由于在每台设备上都需要维护所有的传输连接,而每个连接都会占用系统的CPU、内存等硬件资源。 此外,由于TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
二、UDP:用户数据报协议(User Datagram Protocol)
主要作用:将网络数据压缩成数据包的形式(数据包:一个二进制数据的传输单位)
工作机制:蛮干型。它是在IP数据报服务商添加了复用、分用、差错检测的功能。它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。因此,在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
优势:速度快,比较安全
与TCP协议相比,UDP协议排除了信息可靠传递机制,也就是减少了TCP协议中提供数据包分组、组装和排序的过程需要的时间消耗。其次,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。
劣势:不可靠
UDP协议是一种无连接的传输协议,排除信息可靠传递机制带来速度优势的同时,显然降低了可靠性的需求,也就是UDP协议无法得知其是否安全,完整到达的。
应用:
因为UDP协议的控制选项较少,在数据传输过程中延迟小、数据传输效率高,适合对可靠性要求不高的应用程序,或者可以保障可靠性的应用程序,如DNS、TFTP、SNMP等。
在生活中音频、视频和普通数据都可以采用UDP协议来进行数据传输,比如腾讯QQ这些社交软件也多采用UDP。
三、补充
1.TCP和UDP的报文头