3.TCP和UDP协议对比

Posted 诚毅网协

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.TCP和UDP协议对比相关的知识,希望对你有一定的参考价值。

TCP、UDP协议对比


任务:掌握TCP协议、UDP协议的作用;TCP的三次握手和四次挥手;RST断开连接过程和作用。




1.TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP在IP报文的协议号是6。


1.1 TCP的三次握手

三次握手的目的是连接服务器指定端口,建立TCP连接。三次握手过程可同步连接双方的序列号和确认号,并交换 TCP 窗口大小等。

第一次握手:建立连接时,HostA发送SYN包(syn=0)到HostB,SYN位置1,并进入SYN_SENT状态,等待HostB确认;(SYN为同步序列编号)

第二次握手:HostB收到SYN包,必须确认客户的SYN(ack=0+1),同时自己也发送一个SYN包(syn=0),即SYN+ACK包,SYN为和ACK位置1,此时HostB进入SYN_RECV状态;

第三次握手:HostA收到HostB的SYN+ACK包,向HostB发送确认包ACK(ack=0+1),ACK位置1,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。


1.2 TCP的四次挥手

四次挥手指的是TCP连接拆除时,要发四个包才能彻底断开连接。

3.TCP和UDP协议对比

1)HostA进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=101,此时HostA进入FIN-WAIT-1(终止等待1)状态。( TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。)

2)HostB收到连接释放报文,发出确认报文,ACK=1,ack=102,并且带上自己的序列号seq=301,此时HostB就进入了CLOSE-WAIT(关闭等待)状态。此时HostA已经没有数据要发送了,但是HostB若发送数据,HostA依然要接受。HostA收到HostB的确认请求后,HostA就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受HostB发送的最后的数据)。

3)HostB将最后的数据发送完毕后,就向HostA发送连接释放报文,FIN=1,ack=102,由于在半关闭状态,HostB很可能又发送了一些数据,假定此时的序列号为seq=301,此时HostB就进入了LAST-ACK(最后确认)状态,等待HostA的确认。

4)HostA收到HostB的连接释放报文后,HostA就进入了TIME-WAIT(时间等待)状态。此时TCP连接还没有释放,必须经过2个MSL(最长报文段寿命)的时间后,当HostA撤销相应的TCB(计算机内保护装置的总体)后,才进入CLOSED状态。而HostB只要收到了HostA发出的确认,立即进入CLOSED状态。


1.3 TCP的一些特性

面向字节流:即TCP将应用程序看成是一连串的无结构的字节流,并且可以拆分发送。

滑动窗口机制:窗口大小决定了在收到确认前可以发送的字节数,进行流量控制。

可靠传输:包括同步报文、确认机制和重传机制等。

拥塞控制:防止过多的数据注入到网络中,使路由器或链路过载。


1.4 RST标志位

RST表示复位,用来异常的关闭连接,发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。RST置位的原因:服务器端口没有打开;服务器响应太慢,用户终止连接;遭受网络攻击。


2.UDP协议

UDP 是User Datagram Protocol用户数据报协议,提供面向事物的、简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。


2.1 UDP报文结构(头部8字节)

3.TCP和UDP协议对比

2.2UDP的一些特性

无连接:在传输数据之前,不需要进行复杂的三次握手来建立连接;传输结束后,也不用四次握手来结束连接。

不可靠:没有拥塞控制、重传机制。

面向报文:即应用层交给UDP多长的报文,UDP就照样发送,不进行拆分合并。


3. TCP和UDP的对比

TCP应用场景:效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。例如:文件传输(FTP、HTTP对数据准确性要求高,速度可以相对慢)、接受邮件(POP 、IMAP、 SMTP 对数据准确性要求高,非紧急应用)、远程登录(TELNET、 SSH 对数据准确性有一定要求,有连接的概念)等等。

图文|郑泽辉

排版|陈海心

以上是关于3.TCP和UDP协议对比的主要内容,如果未能解决你的问题,请参考以下文章

传输层UDP/TCP协议

计算机网络之TCP/UDP协议详解

tcp and udp

网络:传输层协议:TCP&&UDP

网络:传输层协议:TCP&&UDP

网络:传输层协议:TCP&&UDP