#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： 当对网络通讯质量有要求的时候，比如：整个数据要准确无误的传递给对方，这往往用于一些要求可靠的应用，比如HTTP、HTTPS、FTP等传输文件的协议，POP、SMTP等邮件传输的协议。 在日常生活中，常见使用TCP协议的应用如下： 浏览器，用的HTTP FlashFXP，用的FTP Outlook，用的POP、SMTP Putty，用的Telnet、SSH QQ文件传输 ………… 什么时候应该使用UDP： 当对网络通讯质量要求不高的时候，要求网络通讯速度能尽量的快，这时就可以使用UDP。 比如，日常生活中，常见使用UDP协议的应用如下： QQ语音 QQ视频 TFTP ……



#TCP的逻辑通信信道是全双工的可靠信道，UDP则是不可靠信道

# (1) 第一次握手：建立连接时，客户端A发送SYN包(SYN=j)到服务器B，并进入SYN_SEND状态，等待服务器B确认。

#  (2) 第二次握手：服务器B收到SYN包，必须确认客户A的SYN(ACK=j+1)，同时自己也发送一个SYN包(SYN=k)，即SYN+ACK包，此时服务器B进入SYN_RECV状态。
#
#  (3) 第三次握手：客户端A收到服务器B的SYN＋ACK包，向服务器B发送确认包ACK(ACK=k+1)，此包发送完毕，客户端A和服务器B进入ESTABLISHED状态，完成三次握手。
#
# 完成三次握手，客户端与服务器开始传送数据。


#第一阶段   客户机发送完数据之后，向服务器发送一个FIN数据段，序列号为i；
   #  1.服务器收到FIN(i)后，返回确认段ACK，序列号为i+1，关闭服务器读通道；
   #  2.客户机收到ACK(i+1)后，关闭客户机写通道；
   # （此时，客户机仍能通过读通道读取服务器的数据，服务器仍能通过写通道写数据）
   #  第二阶段 服务器发送完数据之后，向客户机发送一个FIN数据段，序列号为j；
   #  3.客户机收到FIN(j)后，返回确认段ACK，序列号为j+1，关闭客户机读通道；
   #  4.服务器收到ACK(j+1)后，关闭服务器写通道。