ACK (Acknowledgment) คืออะไร?
ACK = Acknowledgment (การรับทราบ/ยืนยัน) เป็นสัญญาณใน Communication Protocol ที่บ่งบอกว่า ข้อมูล (Packet/Frame/Segment) ถูกส่งมอบสำเร็จ และถูกต้อง
ACK ใน TCP (Transmission Control Protocol)
- TCP ใช้ Sequence Number และ Acknowledgment Number เพื่อ Reliable Delivery
- Receiver ส่ง TCP Segment ที่มี ACK Flag = 1 และ Acknowledgment Number = Next Expected Sequence Number
- ACK เดียวสามารถยืนยันได้หลาย Segments (Cumulative ACK)
- Selective ACK (SACK) รองรับการยืนยัน Out-of-order Segments (RFC 2018)
ACK ใน層อื่นๆ (Other Layers)
| Layer/Protocol | ACK Mechanism |
|---|---|
| Data Link (802.11 Wi-Fi) | ACK Frame หลังรับ Data Frame (SIFS + ACK) - Stop-and-Wait |
| Data Link (Ethernet) | ไม่มี ACK (Best-effort) ใช้ CSMA/CD |
| Transport (TCP) | Cumulative ACK, SACK, Fast Retransmit |
| Application (HTTP/2, QUIC) | Application-level ACK / ACK Frame (QUIC) |
NACK (Negative Acknowledgment)
NACK / NAK = บอก Sender ว่า Packet เสียหาย/ไม่ถูกต้อง/ไม่ได้รับ ให้ส่งใหม่ (Retransmit) ใช้ใน:
- ARQ (Automatic Repeat Request) Protocols
- TFTP, RTP, QUIC
- CAN Bus (Controller Area Network)
ACK Error / ACK Slot (CAN Bus)
- Transmitter คาดหวัง Dominant Bit ใน ACK Slot
- ถ้าไม่มี Node ใด ACK (Bus Idle/Recessive) = ACK Error
- หมายถึง: ไม่มี Receiver, Bus Off, หรือ Wiring Fault
ACK ในภาษาทั่วไป (Slang)
- ACK = Acknowledge (รับทราบ/เข้าใจ) ใน Chat/Military/Radio: "ACK" = "Roger", "Copy that"
- ACK-ACK = Anti-Aircraft Gun / Fire (Slang ทหาร)
No ACK / ACK Suppression
การปิด ACK เพื่อลด Overhead เพิ่ม Throughput (ใช้ใน QoS, Real-time, Multicast) แต่มีความเสี่ยง Packet Loss ไม่ถูกตรวจจับ
Lost Acknowledgment
Sender ไม่ได้รับ ACK ภายใน Timeout (RTO - Retransmission Timeout) > สมมติ Packet Lost > Retransmit (ARQ Mechanism)
สรุป: ACK ใน Network Security
ACK เองไม่ใช่ Security Mechanism แต่เป็นส่วนของ Reliable Transport ที่ Security Protocols (TLS, IPsec, SSH) พึ่งพา การโจมตีเกี่ยว ACK: ACK Flood, ACK Storm, TCP ACK Splitting เพื่อ Bypass Firewall/IDS