1. TCP三次握手
1)客户端向服务器端发送一个SYN包,请求建立连接
2)服务器端受到SYN包之后,会发送一个SYN/ACK 确认包回去,表示对第一个SYN包的确认
3)客户端收到SYN/ACK包之后,会发送一个ACK确认包,通知服务器端连接已建立
三次握手目的:
为了防止已失效的连接请求报文段,突然又传送到服务器端,因而产生错误
2.TCP四次挥手:关闭连接
1) 客户端向服务器端FIN报文,请求关闭连接
2)服务器端发送ACK,表示收到请求。但是服务器端还有数据没有
发送完成,则不必着急关闭Socket,可以继续发送数据。这时客户
端进入FIN_WAIT状态,等待Server端的FIN报文
3) 当服务器端确定数据已发送完成,则向客户端发送FIN报文,表明可
以关闭连接
4) 客户端收到FIN报文后,知道可以关闭连接了,再发送ACK,后进入
TIME_WAIT状态,客户端等待了2MSL(最大报文生存时间)后依旧没有收到回复,则证明Server端已经正常关闭,然后客户端也可以关闭连接了,进入closed状态
服务器端收到ACK后,就关闭连接了,如果服务器端没有收到ACK,那么将重发FIN
3.TCP/UDP是传输层协议,有状态,主要解决数据如何在网络中传输
http是应用层协议,无状态
4.TCP和UDP区别
TCP:面向连接,可靠的,可以传输大量数据,慢
UDP:面向非连接,不可靠,只能传输少量数据,快