Socket là gì?
Sockets cho phép giao tiếp giữa hai tiến trình khác nhau trên cùng một máy hoặc khác nhau. Nói chính xác hơn, đó là một cách để nói chuyện với các máy tính khác bằng cách sử dụng bộ mô tả tệp Unix tiêu chuẩn. Trong Unix, mọi hành động I / O được thực hiện bằng cách ghi hoặc đọc một bộ mô tả tệp. Bộ mô tả tệp chỉ là một số nguyên được liên kết với tệp đang mở và nó có thể là kết nối mạng, tệp văn bản, thiết bị đầu cuối hoặc thứ gì khác.
Đối với một lập trình viên, một socket trông và hoạt động giống như một bộ mô tả tệp cấp thấp. Điều này là do các lệnh như read () và write () hoạt động với socket giống như cách chúng làm với các tệp và đường ống.
Sockets lần đầu tiên được giới thiệu trong 2.1BSD và sau đó được tinh chỉnh thành hình thức hiện tại với 4.2BSD. Tính năng ổ cắm hiện có sẵn với hầu hết các phiên bản hệ thống UNIX hiện tại.
Ổ cắm được sử dụng ở đâu?
Unix Socket được sử dụng trong khuôn khổ ứng dụng máy khách-máy chủ. Máy chủ là một quá trình thực hiện một số chức năng theo yêu cầu từ máy khách. Hầu hết các giao thức cấp ứng dụng như FTP, SMTP và POP3 sử dụng các ổ cắm để thiết lập kết nối giữa máy khách và máy chủ và sau đó để trao đổi dữ liệu.
Các loại ổ cắm
Có bốn loại ổ cắm có sẵn cho người dùng. Hai cái đầu tiên được sử dụng phổ biến nhất và hai cái cuối cùng hiếm khi được sử dụng.
Các quy trình được cho là chỉ giao tiếp giữa các ổ cắm cùng loại nhưng không có hạn chế nào ngăn cản giao tiếp giữa các ổ cắm khác loại.
Stream Sockets- Giao hàng trong môi trường mạng được đảm bảo. Nếu bạn gửi qua ổ cắm luồng ba mục "A, B, C", chúng sẽ đến theo cùng một thứ tự - "A, B, C". Các ổ cắm này sử dụng TCP (Transmission Control Protocol) để truyền dữ liệu. Nếu không thể giao hàng, người gửi sẽ nhận được chỉ báo lỗi. Hồ sơ dữ liệu không có bất kỳ ranh giới nào.
Datagram Sockets- Giao hàng trong môi trường mạng không đảm bảo. Chúng không có kết nối vì bạn không cần phải có kết nối mở như trong Stream Sockets - bạn xây dựng một gói với thông tin đích và gửi nó đi. Họ sử dụng UDP (User Datagram Protocol).
Raw Sockets- Các giao thức này cung cấp cho người dùng quyền truy cập vào các giao thức truyền thông cơ bản, hỗ trợ trừu tượng hóa socket. Các socket này thường được định hướng datagram, mặc dù các đặc điểm chính xác của chúng phụ thuộc vào giao diện được cung cấp bởi giao thức. Ổ cắm thô không dành cho người dùng phổ thông; chúng đã được cung cấp chủ yếu cho những người quan tâm đến việc phát triển các giao thức truyền thông mới hoặc để có quyền truy cập vào một số cơ sở khó hiểu hơn của một giao thức hiện có.
Sequenced Packet Sockets- Chúng tương tự như một ổ cắm luồng, ngoại trừ các ranh giới bản ghi được giữ nguyên. Giao diện này chỉ được cung cấp như một phần của sự trừu tượng hóa ổ cắm của Hệ thống mạng (NS) và rất quan trọng trong hầu hết các ứng dụng NS nghiêm túc. Các ổ cắm gói có trình tự cho phép người dùng thao tác các tiêu đề của Giao thức gói trình tự (SPP) hoặc Giao thức dữ liệu Internet (IDP) trên một gói hoặc một nhóm gói, bằng cách viết một tiêu đề nguyên mẫu cùng với bất kỳ dữ liệu nào sẽ được gửi đi hoặc bằng chỉ định tiêu đề mặc định được sử dụng với tất cả dữ liệu gửi đi và cho phép người dùng nhận tiêu đề trên các gói đến.
Tiếp theo là gì?
Một vài chương tiếp theo nhằm củng cố kiến thức cơ bản của bạn và chuẩn bị nền tảng trước khi bạn có thể viết các chương trình Máy chủ và Máy khách bằng socket . Nếu bạn trực tiếp muốn xem cách viết chương trình máy khách và máy chủ, thì bạn có thể làm như vậy nhưng không được khuyến khích. Chúng tôi thực sự khuyên bạn nên thực hiện từng bước và hoàn thành một vài chương ban đầu này để làm cơ sở trước khi chuyển sang học lập trình.