TCP协议特点:面向连接、字节流、可靠传输。
面向连接:使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该链接分配必要的内河资源,以管理连接的状态和连接上数据的传输。TCP连接是全双工的,双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。
字节流:发送端可以逐个字节地向数据流(发送缓冲区)中写入数据,接收端也可以逐个字节地将他们读出(从接收缓冲区)。基于流的数据没有边界(长度)限制。当发送端应用程序连续执行多次写操作时,TCP模块先将这些数据放入TCP发送缓冲区中。当TCP模块真正开始发送数据时,发送缓冲区中这些等待发送的数据可能被封装成一个或多个TCP报文段发出。应用程序执行的读写操作次数和TCP模块发送/接收的报文段个数之间没有固定的数量关系。
可靠传输:1.应答机制:发送端发送的每个TCP报文段都必须得到接收方的应答,才认为该报文段传输成功。2.超时重传机制:发送端在发送出一个TCP报文段之后启动定时器,如果定时时间内未收到应答,将重发该报文段。3.接收端的TCP协议程序会对接收到的TCP报文段排序、去重,交给上层(应用层)应用程序。
TCP连接建立过程(四次握手):