TCP是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。运输连接就有三个阶段,即:连接建立、数据传送和连接释放的过程,下面,我们就来详细的介绍一下这个过程吧
一、建立连接
1.1在TCP连接建立过程中 要解决的问题
- 要知每一方能够确知对方的存在
- 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
- 能够对运输实体资源进行分配
TCP连接的建立采用客户服务器方式。主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。
1.2TCP建立连接三次握手过程
我们可以用下图表示TCP建立连接的过程,A为主动打开连接。而B被动打开连接
- B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,然后服务器处于listen状态,等待客户的连接请求,如有,即作出响应
- A的TCP客户进程也是首先创建传输控制模块TCB,然后向B发出连接请求报文段(connect)。这时首部中的同步位SYN=1,同时选择一个初始序号seq=x.(tcp规定,SYN=1的报文段不能携带数据,但是要消耗一个序号。这时,TCP客户进程进入SYN_SENT(同步已发送)状态
- B收到连接请求报文段后,如同意建立连接,则向A发送确认。在确认报文段中应把SYN位和ACK都置1,确认号是ack = x+1,同时也为自己选择一个初始序号seq=y.(注意,这个报文段也不能携带数据,但同时要消耗掉一个序号)这时服务器进程进入SYN_RCVD(同步收到)状态<