tcp
1. 报文格式
标志位
URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据)。
PSH:为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
RST:TCP连接中出现严重差错(如主机崩溃),必须释放连接,在重新建立连接。
FIN:发送端已完成数据传输,请求释放连接。
SYN:处于TCP连接建立过程。 (Synchronize Sequence Numbers)
ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
2. 三次握手
连接过程
1)TCP服务器进程打开,准备接受客户进程的连接请求,此时服务器进入了LISTEN(监听)状态
2)客户端向服务器发出连接请求报文,这时报文首部SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。
3)TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1(确认号),自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。
4)当服务器收到客户端的确认后也进入ESTABLISHED状态,双方可以开始通信。
三次握手主要目的是:防止超时导致脏连接。