Chia sẻ kiến thức lập trình

UDP

Chỉ gửi và quên đi

Gần đây mình nhận được rất nhiều câu hỏi về #UDP, có vẻ mọi người rất quan tâm đến anh chàng này, và quả thực chúng ta không thể không quan tâm

Nếu như chúng ta đã quá quen với #TCP qua #HTTP với Restful API và đã quen với mức lương dưới 3k thì xin mời, hãy bước vào lĩnh vực của #MMORPG, của #livestreaming, của #VoIP những lĩnh vực thú vị khó khăn và mức lương cao ngất ngưởng. Vậy tại sao UDP thú vị đến vậy?

UDP Header

Nếu như TCP có đến 12 trường cho 1 header với tối thiểu 20 bytes thì UDP header chỉ vỏn vẹn có 4 trường với tối thiểu 6 bytes.
Nếu như TCP bắt buộc phải gửi lại gói tin khi bị mất mát thì UDP chỉ gửi đi và quên
Chính vì vậy UDP rất phù hợp với những ứng dụng cần tốc độ nhanh lượng dữ liệu gửi nhận lớn và không đòi hỏi độ tin cậy (không bắt buộc phải nhận được gói tin)

UDP rất quan trọng

Nếu không có UDP có thể chúng ta đã không có game để chơi, không thể gọi video với độ mượt mà như hiện nay.
MMORPG đòi hỏi phải đồng bộ vị trí của của người chơi, của các vật phẩm, quái vật giữa client và server, hãy tưởng tượng khung hình của bạn có 100 đối tượng, mỗi đối tượng có 3 vị trí x, y, z (kiểu int 4 bytes) thì mỗi giây (24 hình / giây) bạn đã tốn 100 3 4 * 24 = 28KB. Hay #livestreaming với khung hình 640x320 bạn tốn 600KB rồi. Một khối lượng lớn dữ liệu như vậy được gửi qua môi trường #internet với biết bao nhiêu router, biết bao thiết bị mạng, tường lửa thì khả năng mất mát gói tin là rất lớn, chúng ta không thể nào đợi đủ tất cả gói tin rồi mới tính toán hay hiển thị được

Tham khảo

  1. wiki
  2. H264 frame size calculator
  3. Code example
Share: