Chào mừng các bạn tiếp tục với Series Giải phẫu Mạng & Packet Analysis! Ở bài trước, chúng ta đã thấy Tầng 2 và 3 chỉ biết tìm đường và “ném” gói tin đi mà không hề quan tâm đến sự sống chết của dữ liệu. Để đảm bảo thông tin không bị thất lạc hay lộn xộn trên môi trường Internet khắc nghiệt, chúng ta cần đến “trái tim” của sự ổn định: Giao thức TCP tại Tầng 4. Hôm nay, hãy cùng mổ xẻ cơ chế Bắt tay 3 bước kinh điển và cách dùng Wireshark để phát hiện các đòn tấn công mạng nguy hiểm.
1. Tầng 4 (Transport) và Sứ mệnh của TCP
Nhiệm vụ cốt lõi của Tầng 4 (Giao vận) là kiểm soát toàn bộ quá trình truyền tải dữ liệu. Khi nhận dữ liệu từ các tầng trên, Tầng 4 sẽ thực hiện phân đoạn (Segmentation) để chia nhỏ dữ liệu cho vừa với đường truyền, đánh số thứ tự (Sequencing) và dùng số Cổng (Port) để định tuyến đến đúng ứng dụng.
Tại đây, hai giao thức thống trị là TCP (Transmission Control Protocol) và UDP (User Datagram Protocol). Việc lựa chọn giao thức nào hoàn toàn phụ thuộc vào ứng dụng ở Tầng 7. Hệ điều hành sẽ dán một cái nhãn vào IP Header ở Tầng 3 (ví dụ nhãn số 6 cho TCP, 17 cho UDP) để Tầng 4 biết phải lôi “bộ máy” nào ra xử lý.
Trong khi UDP đề cao tốc độ bằng cách “cứ có là gửi, mất thì thôi”, thì TCP lại là biểu tượng của sự tin cậy. TCP đảm bảo mọi gói tin đều đến đúng nơi, đúng thứ tự, và nếu có bất kỳ dữ liệu nào bị mất, nó sẽ bắt buộc gửi lại (Retransmission).
2. Nghệ thuật Bắt tay 3 Bước (3-Way Handshake)
Trước khi truyền đi dù chỉ một byte dữ liệu ứng dụng, TCP yêu cầu hai thiết bị phải thiết lập một kết nối vững chắc thông qua quá trình Bắt tay 3 bước. Quá trình này diễn ra như sau:
- Bước 1 — Gói SYN: Máy Client gửi một gói tin mang cờ
SYN(Synchronize) với số thứ tự Sequence ban đầu để ngỏ lời kết nối. Gói này cũng khai báoWindow Size, báo cho Server biết: “Tôi có thể nhận tối đa 64,240 bytes dữ liệu một lúc đấy nhé”. - Bước 2 — Gói SYN-ACK: Server đồng ý và đáp lại bằng gói
SYN, ACK. CờACKđược bật để Server thông báo: “Tôi đã nhận được gói 0 của ông, tôi đang đợi gói 1 đây”. - Bước 3 — Gói ACK: Client gửi lại gói
ACKcuối cùng để chốt hạ. Từ lúc này, “đường ống” đã thông suốt.

Dưới đây là output Wireshark bắt được khi Client 192.168.1.114 kết nối đến Server 72.34.249.208 qua cổng HTTPS (443):
# Lọc theo địa chỉ IP của Client và Server:
# Mẫu luồng gói tin trong Wireshark
No. Time Source Destination Protocol Info
1 0.000000 192.168.1.114 -> 72.34.249.208 TCP 47682 -> 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
2 0.474661 72.34.249.208 -> 192.168.1.114 TCP 443 -> 47682 [SYN, ACK] Seq=0 Ack=1 Win=64512 Len=0
3 0.474780 192.168.1.114 -> 72.34.249.208 TCP 47682 -> 443 [ACK] Seq=1 Ack=1 Win=64512 Len=0
4 0.476483 192.168.1.114 -> 72.34.249.208 TLSv1.3 Client Hello (SNI=apex.go.sonobi.com)
Ghi chú: Gói số 4 cho thấy ngay sau khi bắt tay 3 bước hoàn tất, Client lập tức gửi
Client Hellocủa TLS để khởi động mã hóa. Đây là quy trình chuẩn của HTTPS.
3. Cơ chế Đảm bảo Toàn vẹn (Sequence & Acknowledgment)
Làm sao TCP biết một gói tin đã đến đích an toàn? Bí quyết nằm ở cách nó sử dụng hai con số: Sequence Number (Số thứ tự) và Acknowledgment Number (Số xác nhận).
Khi gửi dữ liệu, Tầng 4 sẽ tính toán dựa trên số lượng byte. Nếu gói tin thứ nhất mang 500 byte dữ liệu và có Seq=1, thì gói tin thứ hai sẽ được đánh số Seq=501.
Khi máy đích nhận được gói thứ nhất, nó sẽ phản hồi bằng một gói có Ack=501, mang hàm ý: “Tôi đã nhận đủ 500 byte, hãy gửi tiếp cho tôi dữ liệu từ byte 501 trở đi”. Nếu Server không gửi Acknowledgment phản hồi sau một khoảng thời gian chờ, máy gửi sẽ tự động thực hiện gửi lại gói tin đó (Fast Retransmit hoặc RTO).
4. Bắt bệnh Mạng và Cảnh báo SOC bằng Wireshark
Với cơ chế khắt khe của TCP, Wireshark cung cấp cho SOC Analyst các bộ lọc cực kỳ mạnh mẽ để “bắt bệnh” hệ thống khi mạng bị chậm hoặc gặp sự cố:
- Mất gói (Retransmission): Bộ lọc
tcp.analysis.retransmissionsẽ hiển thị các dòng chữ màu đỏ cảnh báo gói tin phải gửi lại do không nhận được ACK. - Thiếu mảnh dữ liệu (Duplicate ACK): Dùng bộ lọc
tcp.analysis.duplicate_ack. Bạn sẽ thấy máy nhận liên tục gửi các gói ACK có cùng một số hiệu để “gào thét” đòi mảnh dữ liệu bị rớt ở giữa luồng. - Hệ thống bị ngộp (Zero Window): Bộ lọc
tcp.analysis.zero_windowphát hiện khi thiết bị nhận đã cạn kiệt bộ nhớ đệm. Nó sẽ ném ra gói tin này để ép máy gửi phải dừng truyền ngay lập tức (cơ chế Flow Control).
Cảnh báo SOC — Tấn Công SYN Flood: Hacker rất thích lợi dụng sự “kỹ tính” trong quá trình Bắt tay 3 bước của TCP để thực hiện tấn công từ chối dịch vụ (DDoS). Bằng cách bắn hàng vạn gói
SYNgiả mạo vào Server nhưng tuyệt đối không bao giờ trả lời bằng góiACKcuối cùng, Server sẽ bị treo cứng vì cạn kiệt tài nguyên để chờ đợi những cái “bắt tay” không bao giờ hoàn tất. Bộ lọc phát hiện nhanh:tcp.flags.syn == 1 && tcp.flags.ack == 0.
Như vậy, việc thấu hiểu nhịp đập của “Trái tim” TCP giúp chúng ta phân biệt được một sự cố mạng do đường truyền kém với một cuộc tấn công từ chối dịch vụ có chủ đích. Ở Tầng 4, chúng ta mới chỉ quản lý được các cổng (Port), nhưng để duy trì trạng thái đăng nhập liên tục của người dùng, chúng ta cần tiến lên một bậc nữa. Trong Bài 4 tiếp theo, hãy cùng khám phá Lớp 5 (Session) và các kỹ thuật cướp phiên (Session Hijacking) tinh vi của Hacker. Đừng bỏ lỡ nhé!