三次握手、四次挥手
三次握手:客户端与服务端传输数据
第一次:客户端向服务端发送消息,此信息主要确定的是服务端是否处于运行状态,传输内容包括(ACK=0,协议为syn)。
注:syn:同步序列编号(Synchronize Sequence Numbers),是TCP/IP建立连接时使用的握手信号。
第二次:服务端向客户端发送消息,此信息主要是告诉客户端,服务器处于运行状态,传输内容包括(标识为0+1,协议为syn+ack)当客户端接收到此消息后,客户端与服务端就处于连接状态
注:ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。
第三次:客户端向服务端发送数据包,传输内容包括(ack,标识为1,数据)。
四次挥手:客户端与服务端断开连接
第一次:客户端调用close方法,向服务端发送长度为0的消息,协议为FIN。
注:FIN,为结束标志。
第二次:服务端向客户端发送确认消息(关闭连接消息)。
第三次:服务端调用close方法,通知客户端。
第四次:客户端向服务端发送确认消息,此时客户端与服务端断开连接。
Tcp比Udp稳定
Tcp在建立连接时,需要客户端与服务端确认是否连接成功,如果没有连接成功,客户端还会想服务端发送确认消息,在建立连接后,每次客户端向服务端发送消息后,服务端都会向客户端发送确认收到的消息。
而upd,每次只会发送数据,而不管数据是否发送成功。
Tcp的长连接与短连接
长连接:client请求server,会创建一次连接,访问结束就断开连接,长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。
注:在http1.0中,默认使用的是短连接。
短连接:client请求server,会先建立连接,(响应头的属性:connect:keep-alive)每次client访问server时,都会使用第一次创建的连接,当超过一定时间没有请求时,会断开连接,重新访问时,会再次创建连接,client主动调用close时,也会断开连接。诸如WEB网站的http服务一般都用短链接。
注:在http1.1中,默认使用的是长连接。
seq是序号,ack是确认号