TCP简介
- TCP是一种面向连接的可靠的传输层协议
- TCP通过将应用层数据流分割为报文段传输到目标节点
- 使用校验和来检测传输过程中是否有误
- 具有拥塞控制,超时重传的功能
TCP报文头
- 源端口和目的端口:IP地址+协议+端口号可以唯一标识网络中的一个进程
- 序号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号
- 确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号
- 数据偏移:因为存在可选字段,所以需要数据偏移来指出数据与TCP报文的起时处距离
- 保留字段
- UGR:紧急标志 ACK:确认标志 PSH RST SYN:同步标志 FIN:断连标志
- 窗口:标示滑动窗口大小
- 检验和:验证数据完整性,正确性
- 紧急指针: 标记紧急数据在数据字段中的位置
- 选项
- 填充:字节对齐
TCP三次握手
- client端发送连接请求,SYN标记置为1,seq=x
- server端接收请求,发送确认报文CK标记置为1,发送连接数据seq=y,发送ack为client下次发送数据序号ack=x+1
- client发送确认包,发送数据,seq=x+1,ack为server序号ack=y+1
首次握手的隐患
server收到syn后,发送syn-ack未收到ack报文不断重发报文直到超时恶意,网络攻击不断发送不回发ack报文的请求连接,使SYN队列满,导致server拒绝正常请求连接.