关于TCP三次握手

150 阅读2分钟

TCP简介

  1. TCP是一种面向连接的可靠的传输层协议
  2. TCP通过将应用层数据流分割为报文段传输到目标节点
  3. 使用校验和来检测传输过程中是否有误
  4. 具有拥塞控制,超时重传的功能

TCP报文头

20190818161727869.png

  1. 源端口和目的端口:IP地址+协议+端口号可以唯一标识网络中的一个进程
  2. 序号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号
  3. 确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号
  4. 数据偏移:因为存在可选字段,所以需要数据偏移来指出数据与TCP报文的起时处距离
  5. 保留字段
  6. UGR:紧急标志 ACK:确认标志 PSH RST SYN:同步标志 FIN:断连标志
  7. 窗口:标示滑动窗口大小
  8. 检验和:验证数据完整性,正确性
  9. 紧急指针: 标记紧急数据在数据字段中的位置
  10. 选项
  11. 填充:字节对齐

TCP三次握手

20180717202520531.png

  1. client端发送连接请求,SYN标记置为1,seq=x
  2. server端接收请求,发送确认报文CK标记置为1,发送连接数据seq=y,发送ack为client下次发送数据序号ack=x+1
  3. client发送确认包,发送数据,seq=x+1,ack为server序号ack=y+1

首次握手的隐患

server收到syn后,发送syn-ack未收到ack报文不断重发报文直到超时恶意,网络攻击不断发送不回发ack报文的请求连接,使SYN队列满,导致server拒绝正常请求连接.