Khi nào sử dụng TCP
Nếu các chương trình mạng của bạn tất cả như của tôi, hầu hết trao đổi thông tin mạng bạn thực hiện từ
Python sẽ sử dụng TCP. Bạn có thể, trên thực tế, dùng toàn bộ một sự nghiệp mà không chú tâm khởi tạo một
gói dữ liệu UDP từ code của bạn (Mặc dù, UDP là có thể liên quan trong nền mọi lần chương trình của bạn
cần look up một DNS hostname).
Mặc dù TCP gần đây trở nên mặc định phổ biến khi hai chương trình internet cần trao đổi thông tin, tôi
sẽ đề cập một vài ví dụ trong đó hành vi của nó là không tối ưu, trong trường hợp một ứng dụng bạn đang
viết rơi vào một trong những hạng mục này.
Trước tiên, TCP là khó sử dụng cho các giao thức nơi các máy khách muốn gửi các yêu cầu nhỏ, đơn giản tới
một máy chủ, và sau đó chúng được thực hiện và sẽ không nói chuyện với nó xa hơn. Nó lấy 3 gói dữ liệu cho
hai hosts để thiết lập một kết nối TCP – chuỗi nổi tiếng của SYN, SYN-ACK và ACK
+ SYN ” Tôi muốn nói chuyện, đây là số chuỗi gói dữ liệu tôi sẽ bắt đầu với”
+ SYN-ACK: “Okay, đây là số chuỗi khởi tạo tôi sẽ sử dụng trong hướng của tôi”
+ ACK: “Okay”
Ba hay bốn gói dữ liệu khác là cần thiết để đóng kết nối khi nó được hoàn thành – hoặc là một FIN, FIN-ACK và
ACK nhanh hoặc một cặp gói dữ liệu FIN và ACK riêng rẽ hơi dài hơn trong mỗi hướng. Cùng với nhau, một tối thiểu
6 gói dữ liệu là cần thiết chỉ để phân phát một yêu cầu đơn! Các nhà thiết kế giao thức nhanh chóng chuyển sang
UDP trong những trường hợp như vậy.