Đi xuống qua các cách thức (tiếp tục)
Cái này minh hoạ một bài học rằng bạn nên nhớ xuyên suốt mọi học phần tiếp theo rằng thực thi
các giao thức mạng đúng đắn là khó và rằng bạn nên sử dụng Standard Library hay các thư viện bên
thứ ba bất cứ khi nào có thể. Đặc biệt khi bạn đang viết một máy khách mạng, bạn sẽ luôn bị dụ dỗ
đơn giản hoá quá mức code của bạn; bạn sẽ có xu hướng bỏ qua nhiều điều kiện lỗi cái có thể phát sinh,
để chuẩn bị chỉ cho trả lời có khă năng nhất, để tránh escaping hợp lí các tham số vì bạn thích tin
rằng các strings truy vấn của bạn sẽ chỉ bao gồm các kí tự anphabê đơn giản, và nói chung để viết code
nhỏ cái biết ít về dịch vụ nó đang nói chuyện với là có thể về mặt kĩ thuật. Bằng cách thay vì sử dụng
một thư viện bên thứ ba cái đã phát triển thực thi kĩ càng một giao thức, cái đã phải hỗ trợ nhiều nhà phát
triển Python khác nhau những người đang sử dụng thư viện cho nhiều nhiệm vụ, bạn sẽ hưởng lợi từ tất cả edge
cases và awkwark corners cái các nhà thực thi thư viện đã khám phá và học làm cách nào xử lí đúng đắn.
Thứ tư, nó cần được nhấn mạnh rằng các giao thức mạng mức cao hơn – như Google Geocoding API cho
phân giải một street address – nói chung làm việc bằng cách che giấu các tầng mạng dưới chúng. Nếu bạn chỉ
từng sử dụng thư viện pygeocoder, bạn thậm chí có thể không biết rằng các URLs và HTTP là các cơ chế mức thấp
hơn cái đang được sử dụng để xây dựng và trả lời các truy vấn của bạn.
Một câu hỏi thú vị, câu trả lời của nó khác nhau phụ thuộc vào một thư viện Python được viết cẩn thận như thế
nào, là liệu thư viện che giấu đúng đắn các lỗi tại các mức thấp hơn đó. Một lỗi mạng cái làm Google tạm thời không
đến được từ vị trí của bạn có thể dấy lên một ngoại lệ mạng mức thấp thô ở giữa code cái đang cố tìm ra các toạ độ
của một street address? Hay tất cả các lỗi có sẽ thay đổi thành một ngoại lệ mức cao hơn tuỳ theo geocoding? Chú ý cẩn
thận tới chủ đề catch các lỗi mạng khi bạn tiến lên xuyên suốt các học phần, đặc biệt trong học phần này với nhấn
mạnh lên mạng mức thấp.
Cuối cùng, chúng ta đã đi đến chủ đề cái chiếm trọn bạn cho phần còn lại của học phần đầu tiên: giao diện socket()
được sử dụng trong search4.py, không phải là trên thực tế mức giao thức thấp nhất trong hoạt động khi bạn thực hiện request này tới Google!. Chính như ví dụ có các giao thức mạng hoạt động trên mức trên các raw sockets, nên cũng có các
giao thức xuống bên dưới trừu tượng sockets cái Python không thể thấy vì hệ điều hành của bạn quản lí chúng thay vào.
Các tầng hoạt động dưới socket() API là cái sau:
+TCP hỗ trợ trao đổi trò chuyện hai chiều hình thành từ các dòng bytes bằng cách gửi (hay có thể gửi lại), nhận và tái trật tự
lại các thông điệp mạng nhỏ gọi là các gói (packets).
+ Giao thức Internet biết làm cách nào gửi các packets giữa các máy tính khác nhau.
+ Link layer tại đáy chứa các thiết bị phần cứng mạng như cổng Ethernet và các cards không dây, cái có thể gửi các thông
điệp vât lí trực tiếp giữa các máy tính được liên kết.