前言
TCP协议,相信对于每一个开发工程师都不陌生。由于该协议是一个面向连接,可靠的特性,广泛应用于现在互联网的应用中。如常见的web,ssh,ftp等都是基于TCP协议。目前TCP协议占全网的流量达到80%,因此这也成为黑客主要攻击的类别。
TCP报文结构
一个TCP报头的标识(code bits)字段包含6个标志位:
- SYN:标志位用来建立连接,让连接双方同步序列号。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接
- FIN:表示发送端已经没有数据要求传输了,希望释放连接
- RST:用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包
- URG:为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效
- ACK:为确认标志位。如果为1,表示包中的确认号时有效的。否则,包中的确认号无效
- PSH:如果置位,接收端应尽快把数据传送给应用层, 不必等缓冲区满再发送
TCP 三次握手与四次挥手