TCP是Transmission Control Protocol 传输控制协议;
为什么要三次握手?
三次握手的目的是建立可靠的通信信道,通讯就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。
TCP特点:
1)验证数据正确、合法,同时用md5认证对数据进行加密。
2)传数据可靠,用了超时重传和捎带确认机制。
3)实现流量控制,用滑动窗口协议,对于窗口内未经确认的分组需要重传。
( 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失)
TCP三次握手是啥:
服务器与客服端传数据前,建立连接的过程;
- 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
- 服务器端收到SYN报文,回应一个SYN(SEQ=y)+ ACK(ACK=x+1)报文,进入SYN_RECV状态。
- 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
TCP四次挥手是啥:
(1) 某个应用进程首先调用close,称该端执行“主动关闭”。该端的TCP发送一个FIN分节,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”,这个FIN由TCP确认。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
帮助理解——
三次握手类似打电话——
客户端:喂,我是客户端,我要传给服务器数据;
服务器:听到,准备了md5加密,你可以传了;
客户端:好的;
四次挥手理解——
1)客户端 :我要关连接,完毕;
2)服务端听到完毕,TCP确认收到完毕;
3)服务端去关了连接,TCP:完毕;
4)客服端:好的。
注:
SYN表示SYN报文;
SYN是标志位,SYN=1表示请求连接;
ACK表示Acknowledgment Number字段有意义;
FIN作为文件结束符传递给接收端应用进程,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是,客户执行主动关闭,但是某些协议,例如,HTTP/1.0却由服务器执行主动关闭。
握手过程中,任一阶段中断,TCP协议会从头再发数据包。
每隔75分钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。