Lập trình mạng Python: giao thức TCP (phần 2)

Khi nào sử dụng TCP (tiếp tục)

Một câu hỏi để hỏi, mặc dù vậy, là liệu một máy khách có thể muốn mở một kết nối TCP và sau đó sử dụng nó
trong một vài phút hay giờ để thực hiện nhiều yêu cầu riêng rẽ tới cùng máy chủ. Một khi kết nối đang
đi và phí tổn của handshake đã được trả, mỗi yêu cầu và trả lời thực sự sẽ yêu cầu chỉ một gói dữ liệu
đơn trong mỗi hướng, cái sẽ hưởng lợi từ tất cả thông minh của TCP về truyền lại, exponential backoff, và
kiểm soát dòng.
Nơi UDP thực sự sáng thì là nơi một mối quan hệ dài hạn sẽ không tồn tại giữa máy khách và máy chủ, đặc
biệt nơi có quá nhiều máy khách cái một thực thi TCP điển hình sẽ cạn kiệt bộ nhớ nếu nó phải giữ nhịp với
một dòng dữ liệu riêng rẽ cho mỗi máy khách hoạt động.
Tình huống thứ hai nơi TCP là không phù hợp là khi một ứng dụng có thể làm thứ gì đó thông minh hơn
nhiều đơn giản truyền lại dữ liệu khi một gói dữ liệu bị mất. Tưởng tượng một trao đổi trò chuyện audio
chat, ví dụ. Nếu một dữ liệu đáng 1 giây bị mất vì một gói dữ liệu bị bỏ, thì nó sẽ làm ít tốt đơn giản
gửi lại cùng audio của giây đó, lặp lại nhiều lần, cho đến khi nó cuối cùng đi đến. Thay vào đó, máy khách
chỉ nên điền giây khó xử đó với bất cứ audio nào nó có thể lắp đoạn với nhau từ các gói dữ liệu cái đã đi
đến (một giao thức audio thông minh sẽ bắt đầu và kết thúc mỗi gói dữ liệu với 1 chút audio nén mạnh từ
khoảnh khắc trước và sau của thời điểm để bao chính xác tình huống này) và sau đó giữ tiếp tục đi sau gián
đoạn như thể là nó đã không xảy ra. Cái này là không thể với TCP, cái sẽ giữ truyền lại bướng bỉnh thông
tin bị mất thậm chí khi nó đã quá cũ để cho sử dụng nào. UDP datagrams thường là cơ sở của live-streaming
đa phương tiện trên internet.

Chia sẻ