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

Các TCP sockets nghĩa là gì (tiếp tục)

Trên “phía máy chủ”- cái, theo định nghĩa là đối tác trao đổi trò chuyện không thực hiện lời gọi
connect() nhưng nhận gói dữ liệu SYN cái lời gọi connect khởi tạo – một kết nối đi đến khởi tạo một sự kiện quan trọng nhiều hơn cho một ứng dụng Python: việc tạo một socket mới. Đây là vì giao diện POSIX
tiêu chuẩn đối với TCP thực sự đòi hỏi hai loại hoàn toàn khác nhau của sockets: các sockets lắng nghe
thụ động và các cái được kết nối chủ động.
+ Passive socket hay listening socket duy trì tên socket – địa chỉ và số cổng – tại đó máy chủ đã sãn sàng
để nhận các kết nối. Không dữ liệu nào được nhận hay gửi bởi loại socket này. Nó không trình bày bất cứ trao
đổi trò chuyện mạng thực sự nào. Thay vào đó, nó là máy chủ cảnh báo hệ điều hành như thế nào đối với sự sẵn
sàng của nó để nhận các kết nối đi đến tại một số cổng TCP đã cho trong vị trí đầu tiên.
+ Một active, connected socket được gắn với một đối tác trao đổi trò chuyện ở xa với một địa chỉ IP và số cổng
cụ thể. Nó có thể được sử dụng chỉ cho nói chuyện tới và lui với một đối tác đó, và nó có thể được đọc và viết lên
mà không lo lắng về dữ liệu kết quả sẽ được chia tách như thế nào thành các gói dữ liệu. Dòng trông rất giống
một ống hay file cái, trên hệ thống UNIX, một TCP socket được kết nối có thể được truyền tới chương trình khác cái
mong đợi để đọc từ một file thông thường, và chương trình đó sẽ thậm chí không bao giờ biết rằng nó đang nói chuyện
trên mạng.
Chú ý rằng trong khi một passive socket được làm duy nhất bởi số cổng và địa chỉ giao diện tại đó nó đang lắng nghe –
không ai khác được phép nhặt cùng địa chỉ và cổng – có thể có nhiều active sockets cái tất cả chia sẻ cùng tên socket
địa phương. Một máy chủ web bận rộn tới nó một nghìn máy khách tất cả đã tạo các kết nối HTTP, ví dụ, sẽ có 1000 active
sockets tất cả gắn với địa chỉ IP public tại cổng TCP 80. Cái làm một active socket là duy nhất là 4 phần toạ độ, thể hiện
ở đây:

(local_ip, local_port, remote_ip, remote_port)

Nó là 4 tuple này theo đó hệ điều hành đặt tên mỗi kết nối TCP active, và các gói dữ liệu TCP đi đến được thẩm định để xem
liệu địa chỉ nguồn và đích của chúng liên đới chúng với các sockets active hiện tại nào trên hệ thống.

Chia sẻ