1.什么是TCP
TCP(Transmission Control Protocol):传输控制协议,属于传输层,基于TCP协议的应用层协议有HTTP、STMP、FTP、Telnet、POP3
2.特点
- 面向连接:使用TCP传输数据前,必须先建立TCP连接;传输完成后在释放连接
- 全双工通信:建立TCP后,通信双方都能发送数据
- 可靠:通过TCP连接发送的数据:不丢失、无差错、不重复并且按序到达
- 面向字节流:数据以流的形式进行传输
3.优缺点
优点:数据传输可靠
缺点:效率慢(因需建立连接、发送确认包等)
4.建立连接过程
众所周知,TCP建立连接需要三次握手
- 第一次握手,客户端向服务端发送一个请求的报文段;客户端进入同步已发送状态,等待服务器确认。
- 第二次握手,服务器收到请求报文段后,若同意建立连接,则向客户端发回连接确认的报文段,服务端进入同步已接收状态。
- 第三次握手,客户端收到确认报文段后,向服务器再次发出连接确认报文段,客户端、服务端都进入已创建状态。可开始发送数据。
因为TCP提供的是全双工通信,故通信的双方应用进程在任何时候都可以发送数据,三次握手期间,任何1次未收到对面的回复,都会重发。
5.释放连接过程
- 第一次挥手,客户端向服务端发送一个连接释放的报文段(停止再发送数据),客户端进入终止等待1状态,等待服务端确认
- 第二次挥手,服务器收到连接释放的报文后,则向客户端发回连接释放确认的报文段,服务器进入关闭等待状态,客户端收到服务器的确认后,进入终止等待2状态,等待服务器发出释放连接的请求。至此,客户端 --> 服务端的TCP连接已经断开,即TCP连接处于处于半关闭状态,即客户端 --> 服务端断开,但服务端 --> 客户端未断开
- 第三次挥手,若服务器已无要向客户端发送的数据,则发出释放连接的报文段,服务器进入最后确认状态
- 第四次挥手,客户端接收到释放报文段后,则向服务器发回连接释放确认的报文段,客户端进入时间等待状态,服务器进入关闭状态,此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,客户端才会进入关闭状态,即服务器进入关闭状态比客户端要早一些
6.为什么需要三次握手和四次挥手
再连接建立的过程中,三次握手防止服务器因接收了早已失效的连接请求报文,从而一直等待客户端的请求,最终导致形成死锁、浪费资源。
再释放连接的过程中,四次挥手保证通信双方都能通知对方需要释放并且断开连接。
7.什么是UDP
UDP(User Datagram Protocol):用户数据协议,属于传输通信层的协议,基于UDP的应用层协议有TFTP、SNMP与DNS
8.特点
- 无连接,使用UDP传输数据前,不需要建立UDP连接
- 不可靠,UDP的数据包发送后,不管其是否会到达接收方
- 面向报文,数据以数据报文(包)的形式传输,UDP数据报文长度无限制,都一次性发送,不像TCP会拆分
- 无拥塞控制,由于是不可靠传输,即不管是否到达接收方,故不需要拥塞控制
9.优缺点
优点:速度快
缺点:消息易丢失,特别是网络较差的时候
10.TCP和UDP的对比
-->是否面向连接:
TCP:面向连接
UDP:无连接
-->传输可靠性
TCP:可靠
UDP:不可靠
-->传输形式:
TCP:字节流
UDP:数据报文段
-->传输效率:
TCP:慢
UDP:快
-->所需资源:
TCP:多
UDP:少
-->应用场景:
TCP:要求通信数据可靠(如文件传输、邮件传输等)
UDP:要求通信速度很高(如域名转换)