Giao thức UDP là một trong hai giao thức quan trọng trong lớp vận chuyển (transport layer) cùng với giao thức TCP. Trong bài viết này, mình sẽ giới thiệu chi tiết về giao thức UDP để xem nó là gì? Hoạt động như thế nào? Và nó khác gì với giao thức TCP?
Giao thức UDP là gì?
Giao thức UDP là giao thức liên lạc được sử dụng trên Internet để dùng cho các ứng dụng nhảy cảm với thời gian như phát lại Video, tra cứu DNS hay chơi game online, gọi điện thoại Video,… Giao thức UDP tăng tốc độ truyền dữ liệu giữa máy chủ và máy khách bằng cách không thiết lập kết nối trước khi truyền dữ liệu. Điều này cho phép dữ liệu được truyền rất nhanh nhưng cũng có rủi ro khi các gói tin bị mất trong quá trình truyền và ẩn chứa nguy cơ cho tấn công DDoS.
Về cơ bản giao thức UDP là một phiên bản thu nhỏ của TCP. Giống như giao thức TCP, giao thức này cũng cung cấp khả năng phân phối dữ liệu giữa các ứng dụng trên mạng TCP/IP. Điểm khác biệt giữa của UDP là nó không xắp xếp dữ liệu theo trình và không quan tâm đến thứ tự các Segment (phân đoạn) đến đích. Do đó, giao thức UDP không phải là giao thức đáng tin cậy. Điều này cũng là lý do giải thích tại sao TCP lại phổ biến hơn.
UDP cũng không được coi là giao thức không kết nối vì nó không có mạch ảo nào được thiết lập giữa 2 máy chủ trước khi quá trình dữ liệu diễn ra. UDP tập trung vào hiệu suất truyền dẫn cao, và cho phép loại bỏ các gói tin thay vì xử lý các gói tin. Tức là không có việc kiểm tra lỗi trên UDP, điều này cũng khiến nó hiệu quả hơn TCP về độ trễ và băng thông.
Tiêu đề UDP
Tiêu đề UDP là tiêu đề đơn giản và định với độ dài 8 Byte. Đây cũng là một điểm khác biệt với TCP vì giao thức này có tiêu đề thay đổi từ 20 Byte đến 60 Byte. Các trường số cổng UDP có độ dài 16 bit nên phạm vi số cổng được xác định từ 0 đến 65535. Cổng số 0 được bảo lưu.
Dưới đây là hình ảnh biểu diễn các trường trong tiêu đề UDP và giải thích:
– Cổng nguồn (Source Port): là số cổng của ứng dụng trên máy chủ gửi dữ liệu có độ dài 2 Byte.
– Cổng đích (Destination Port): là số cổng của ứng dụng trên máy chủ nhận dữ liệu, có độ dài trường bằng 2 byte.
– Độ dài (length): là độ dài của tiêu đề và dữ liệu UDP. Độ dài trường là 16 bit.
– Checksum: là tổng kiểm tra của cảu trường dữ liệu UDP và tiêu đề UDP có độ dài là 2 Byte. Nó là phần bù 16 bit của tổng phần bù một của tiêu đề UDP, tiêu đề giả của thông tin từ tiêu đề IP và dữ liệu, được đệm bằng octet 0 ở cuối (nếu cần) để tạo bội số của hai octet.
Lưu ý: Không giống như TCP, việc tính toán tổng kiểm tra không bắt buộc trong UDP. Không có điều khiển lỗi hoặc điều khiển luồng nào được cung cấp bởi UDP. Do đó UDP phụ thuộc vào IP và ICMP để báo cáo lỗi. Ngoài ra UDP còn cung cấp số cổng để có thể phân biệt giữa các yêu cầu của người dùng.
So sánh UDP với TCP
Nếu để nhận xét sự khác nhau giữa UDP với TCP thì mình sẽ nêu tóm gọn như sau: “UDP nhanh hơn nhưng kém tin cậy hơn TCP”. Điểm khác nhau cụ thể giữa 2 giao thức này như sau:
- TCP xây dựng kết nối trước bằng quá trình bắt tay 3 bước, nhưng UDP thì không.
- TCP đánh dấu các gói tin bằng số thứ tự để đảm bảo tính toàn vẹn của dữ liệu, UDP thì không.
- TCP hay dùng trong việc tải file, còn UDP dùng cho các ứng dụng như chơi game trực tuyến, call video, tra cứu DNS,…
Các cuộc tấn công DDoS tận dụng UDP như thế nào?
Như mình đã nói ở đầu bài viết, giao thức UDP có ưu điểm mạnh trong việc giảm độ trể và băng thông. Tuy nhiên nó lại tiềm ẩn rủi ro khai thác cho các mục đích xấu như DDoS. Vì UDP không cần thiết lập kết nối trước khi truyền dữ liệu nên kẻ tấn công có thể làm tràn lưu lượng UDP vào 1 máy chủ mà không phải xin cáp phép máy chủ đó.
Một cuộc tấn công DDoS diễn ra rất đơn giản, kẻ xấu tận dụng lỗ hổng của UDP để gửi 1 lượng lớn dữ liệu đến các cổng trên máy tính bị nhắm đến. Điều này khiến máy chủ phải phản hồi với lượng gói ICMP tương đương và cho biết các cổng đó không truy cập được. Do đó máy tính sẽ từ chối dịch vụ với các lưu lượng truy cập hợp từ người dùng trên web.
Biện pháp để bảo vệ khỏi tấn công DDoS rất nhiều. Một trong các cánh là hạn chế tốc độ phản hồi của các gói ICMP, tuy nhiên cách này cũng có thể lọc cả các gói tin hợp pháp. Mộ cách khác là nhận và phản hồi lưu lượng UDP qua mạng trung gian gồm nhiều trung tâm dữ liệu phân tán và ngăn không cho 1 máy chủ gốc duy nhất bị “nhấn chìm” bởi các yêu cầu truy cập xấu.
Kết luận:
Giao thức UDP cùng với TCP là 2 giao thức quan trọng trong lớp vận chuyển. Mong rằng qua bài viết này bạn đã hiểu rõ hơn về giao thức UDP này và sự khác biệt giữa UDP và TCP. Nếu có bất kỳ câu hỏi nào khác, hãy để lại dưới phần bình luận để được hỗ trợ giải đáp chi tiết nhất!
Xem thêm bài viết:
ACL là gì? Access Control List có vai trò như thế nào trong mạng?