前几个博客一直在说TCP是面向连接的服务,那么TCP连接的建立和关闭是怎样一回事?
TCP连接的建立
起初两端的TCP进程都处于CLOSED(关闭)状态
我们从tcp编程就可以知道每次是服务器首先启动,启动之后实际上是创建了TCB传输控制块,随后进入LISTEN状态,等待客户端连接请求。客户端启动起来也是先创建TCB传输控制块,接下来连接阶段。
ps:seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。
(1)第一次握手:
Client发出连接请求报文段(SYN报文段),将标志位SYN置为1,随机产生一个初始序号seq=x(以该序列号为原点,对自己将要发送的每个字节的数据进行编号),并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。(SYN=1的报文段不能携带数据,但是要消耗掉一个序号)