code: func (h *handshake) checkAck(s *segment) bool {
  	if s.flagIsSet(header.TCPFlagAck) && s.ackNumber != h.iss+1 {
  		// RFC 793, page 36, states that a reset must be generated when
  		// the connection is in any non-synchronized state and an
  		// incoming segment acknowledges something not yet sent. The
  		// connection remains in the same state.
  		ack := s.sequenceNumber.Add(s.logicalLen())
  		h.ep.sendRaw(buffer.VectorisedView{}, header.TCPFlagRst|header.TCPFlagAck, s.ackNumber, ack, 0)
  		return false
  	}
  
  	return true
  }
docs: // checkAck checks if the ACK number, if present, of a segment received during
  // a TCP 3-way handshake is valid. If it's not, a RST segment is sent back in
  // response.