1.TCP基本认识
在回答三次握手与四次挥手之前我们首先对TCP有一定的理解。如上图所示,该图为TCP头部的组成。
- 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接受端主机,每发送一次数据,就累加一次该数据字节数的大小,主要是用来解决网络包乱序问题。
- 确认应答号:指下一次期望收到的数据的序列号,发送段接收这个确认应答以后可以认为在这个序列之前的数据都被正常接收了,主要用来解决不丢包的问题。
控制位:
- ACK:该位为1时,确认应答的字段变为有效,TCP规定戳最初建立连接时SYN包之外,该位必须置为1。
- RST:该位为1时,表示TCP连接中出现异常必须强制断开连接。
- SYN:该位为1时,表示希望创建连接,并在其序列号的字段进行序列号初始值的设定。
- FIN:该位为1时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位为1的TCP段。