Sockets có thể được phân thành hai loại dựa trên giao thức lớp chuyển vận mà chúng sử dụng:
stream sockets và datagram sockets.
Stream Sockets (TCP Sockets)
Stream sockets sử dụng giao thức kiểm soát chuyển vận TCP cho trao đổi thông tin. Chúng là
hướng kết nối, có nghĩa rằng một kết nối được thiết lập giữa máy gửi và máy nhận trước chuyển
vận dữ liệu. Stream sockets đảm bảo trao đổi thông tin đáng tin cậy, trong trật tự và không
lỗi, làm chúng thích hợp cho các ứng dụng cái yêu cầu độ tin cậy cao, như lướt web, chuyển file
, và email.
Một vài đặc điểm then chốt của stream sockets là:
+ Đáng tin cậy: Chúng đảm bảo truyền dữ liệu chính xác, trong trật tự và không lỗi.
+ Hướng kết nối: Một kết nối phải được thiết lập trước khi dữ liệu có thể được trao đổi
+ Duplex đầy đủ: Chúng cho phép truyền dữ liệu đồng thời theo cả hai hướng.
+ Thích hợp cho các ứng dụng yêu cầu độ tin cậy cao và truyền dữ liệu chính xác.
Datagram Sockets (UDP Sockets)
Datagram sockets sử dụng giao thức UDP cho trao đổi thông tin. Chúng là phi kết nối, có nghĩa rằng
dữ liệu được truyền độc lập mà không phải thiết lập một kết nối giữa máy gửi và máy nhận. Datagram
sockets thích hợp cho các ứng dụng cái ưu tiên tốc độ và đơn giản hoá so vói tin cậy, như dòng đa phương
tiện, chơi game online và VOIP.
Một vài đặc điểm then chốt của datagram sockets là:
+ Không đáng tin cậy: Chúng không đảm bảo phân phát dữ liệu, trật tự hay thực thể.
+ Phi kêt nối: Không kết nối nào được thiết lập trước truyền dữ liệu.
+ Light weight: Chúng có một kích cỡ header nhỏ hơn so sánh với stream sockets, dẫn đến phí tổn thấp hơn
và xử lí nhanh hơn.
+ Thích hợp cho các ứng dụng yêu cầu độ trễ tối thiểu và truyền dữ liệu nhanh.
Hiểu các cơ bản và dạng của sockets là cơ bản cho lập trình socket thành công trong Python. Stream sockets (TCP)
và datagram sockets (UDP) phục vụ cho các dạng khác nhau của ứng dụng dựa trên độ tin cậy, hướng kết nối và yêu
cầu độ trễ của chúng. Bằng cách chọn dạng socket phù hợp, bạn có thể phát triển các ứng dụng mạng hiệu quả cái đáp
ứng các nhu cầu cụ thể của các use cases khác nhau.