传输控制协议是啥?
传输控制协议其实就是我们嘴上老是说的TCP,但是以前压根就没了解过,也就是跟着别人说而已。上了计算机网络这门课程之后终于对其有所了解,这次的博客就相当于做个笔记吧。
TCP协议(Transport control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP的工作原理
TCP的原理分为三部分:TCP建立连接,报文传输以及TCP连接释放。其中TCP连接建立需要经过“三次握手”。
TCP连接建立
原理图如下:
”三次握手“如下:
(1)一开始客户端TCO进程是处于CLOSED状态。当客户端准备发起一次TCP连接时,进入SYN-SEND(准备发送)的状态,客户端首先相处于LISTEN(监听)状态的服务器端TCP进程发送第一个控制位SYN=1的“连接请求报文”。
(2)服务器端在接收到”连接请求报文“之后,如果对方同意建立连接,则向客户端发送第二个控制位SYN=1,ACK=1的”连接建立请求确认报文“。
(3)在接收到”连接建立请求确认报文“之后,客户端发送第三个控制位ACK=1”连接建立请求确认报文“。这时,客户端进入了ESTABLISHED(已建立连接)状态,服务器在接受到ACK报文之后也进入了ESTABLISHED(已建立连接)状态。
报文传输
当客户进程与服务器进程之间的TCP传输连接建立之后,客户端的应用进程与服务器端的应用进程就可以使用这个连接,进行全双工的字节流传输。为了保证TCP工作正常、有序地进行,TCP设置了保持计时器(keep timer),用来防止TCP连接处以长时期空闲。
TCP连接释放
TCP传输连接的释放过程比较复杂,客户端与服务器都可以主动提出连接释放的请求。下面是客户主动提出请求的连接释放“四次握手”的过程。
(1)当客户准备结束一次数据传输,主动提出释放TCP连接时,进入FIN-WAIT-1(释放等待-1)状态。它向服务器端发送第一个控制位FIN=1的“连接释放请求报文”,提出连接释放请求,停止发送数据。
(2)服务器在接受到“连接释放请求报文”之后,需要向客户端发回“连接释放请求确认报文”,表示对接收第一个连接释放请求报文的确认。
(3)服务器的高层应用没有数据需要发送时,它会通知TCP可以释放连接,这时服务器向哭护短发送“连接释放请求报文”。()
(4)客户在收到FIN报文之后,向服务器发送“连接释放请求确认报文”,表示对服务器“连接释放请求报文”的确认。
注:
ACK(确认位):TCP在确认连接建立后发送的所有报文段的ACK都要置1.
SYN(同步位):同步位在连接建立时用来同步序号。例如:当SYN=1,ACK=0时,表示这是一个建立连接的请求报文;当SYN=1,ACK=1时,表示这是一个同一连接建立的相应报文。
FIN(终止位):FIN=1时表示发送端的报文发送完毕,请求释放TCP连接。