Có phải hầu hết app gửi tin nhắn đều sử sử dụng TCP để video call?
Vừa rồi em bảo vệ đồ án và bị chém 1 câu như sau: "Em kết nối P2P sử dụng giao thức TCP hay UDP để voice call?", em trl: "em sử dụng UDP ạ" và hội đồng không đồng ý
Ý kiến hội đồng: Hầu như tất cả service gọi điện đều phải sử dụng TCP vì firewall block, điều này em đồng ý và đã gặp. Và em phản biện lại rằng, đầu tiên nó là sẽ try connect with UDP nếu gặp tường lửa thì nó sẽ tạo TCP connnect -> MediaServer (Metered) và cũng không được đồng ý (*Có vẻ lúc đó em giải thích chưa rõ hoặc cũng có thể sai :)) )
Hội đồng ý kiến: Tất cả mọi mạng đều có firewall nên các dịch vụ không thể nào tạo UDP connection được
=> Em tự hỏi, liệu chẳng lẻ đối với gọi 1-1 như zalo, messenger, telegram đều kết nối với TCP hết à, thế thì server nào mà chịu nổi?
udp
webrtc
tcp
video call
Remain: 5
2 Answers
jungtin
Beginner
jungtin
Beginner
Note: Câu hỏi chỉ áp dụng cho việc call 1-1, vì em biết nếu thiết bị group call thì bắt buộc phải sử dụng mô hình MCU hoặc SFU với việc tạo TCP connection -> MediaServer rồi
+ Thêm là liệu UDP connect có kém bảo mật hơn TCP?
-
0
monkey
Enlightened
monkey
Enlightened
- Đối với việc gửi tin nhắn văn bản thì thường sẽ dùng TCP em ạ, vì nó sẽ đảm bảo tin nhắn sẽ được gửi đến đích, không như UDP có thể không gửi được đến đích nếu tin nhắn quá lớn, thông qua các cơ chế kiểm tra lỗi, kiểm tra toàn vẹn gói tin, window size, ... Còn về bảo mật thì cả TCP và UDP đều có thể được mã hóa thông tin ở tầng ứng dụng rồi gửi qua lại nên ko phải vấn đề.
- Đối với video call, audio call thì thường sẽ dùng udp vì dung lượng gói tin cho phần này cực kỳ lớn, nó cần một tốc độ truyền tải cao và độ trễ thấp. Chính vì vậy UDP phù hợp hơn. Bởi gói tin của udp có ít header hơn tcp, cũng không bị kiểm tra lỗi, không yêu cầu gửi lại, không yêu cầu thứ tự nên tốc độ truyền gần như là tuyệt đối, cũng may là phần call này thường chấp nhận việc mất gói tin và có thể sử dụng nội suy để đoán các frame bị thiếu nên UDP là hợp lý nhất.
Anh nghĩ các giảng viên cũng sẽ năm được điều này. Có thể ý họ ở đây là đầu tiên bao giờ cũng phải có kết nối tcp trước để hai bên bắt tay, xác thực nhau được trước rồi mới dùng udp để stream sau em ạ. Nên việc nói rằng một ứng dụng chat luôn cần phải có tcp là hợp lý.
-
1