Nếu bạn là một lập trình viên, chắc hẳn bạn nên biết socket là gì? Một socket trông và hoạt động giống như một file descriptor cấp thấp. Điều này là do các lệnh như read() và write() hoạt động với các socket giống như cách chúng làm với các file và pipe.
Socket là gì?
Socket cho phép giao tiếp giữa hai process khác nhau trên cùng một máy hoặc hai máy 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 các file descriptor Unix tiêu chuẩn. Trong Unix. Mọi hành động I/O được thực hiện bằng cách write hoặc read một File descriptor. File descriptor chỉ là một số nguyên được liên kết với một file đang mở. Và nó có thể là kết nối mạng, file văn bản, thiết bị đầu cuối hoặc một cái gì đó khác.
Các socket được giới thiệu lần đầu tiên trong 2.1BSD. Và sau đó được tinh chỉnh thành dạng hiện tại với 4.2BSD. Tính năng socket hiện có sẵn với hầu hết các bản phát hành hệ thống UNIX hiện tại.
Socket được sử dụng ở đâu?
Một socket Unix được sử dụng trong framework client-server. Hầu hết các application protocol như FTP, SMTP và POP3 sử dụng các socket để thiết lập kết nối giữa client và server, sau đó thực hiện trao đổi dữ liệu.
Các loại socket là gì?
Có bốn loại socket, 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 process được cho là chỉ giao tiếp giữa các socket 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 loại socket khác nhau.
Stream Sockets
Truyền tải dữ liệu trong một môi trường mạng được đảm bảo. Nếu bạn gửi qua socket ba mục “A, B, C”. Chúng sẽ đến theo cùng một thứ tự – “A, B, C”. Các socket này sử dụng TCP để truyền dữ liệu. Nếu không thể gửi, người gửi sẽ nhận được một chỉ báo lỗi.
Socket Datagram
Truyền tải dữ liệu trong môi trường mạng không được đảm bảo. Chúng sử dụng giao thức UDP, do đó, bạn không cần phải thiết lập và duy trì kết nối như TCP. Bạn build một packet với thông tin địa chỉ đích và gửi nó đi, vậy là hoàn tất, bạn cũng không cần phải quan tâm thứ tự gói tin hoặc tính toàn vẹn của chúng ở phía người nhận.
Raw Sockets
Chúng 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ấp thấp. Hỗ trợ trừu tượng hóa socket. Raw socket 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 những đặc điểm cấp thấp rất chuyên sâu của các giao thức.
Sequenced Packet Sockets
Loại socket này được cung cấp như một phần của Network System (NS) socket abstraction, và nó cực kỳ quan trọng với các NS applications. Sequenced-packet sockets cho phép người dùng điều chỉnh Sequence Packet Protocol (SPP) hoặc Internet Datagram Protocol (IDP) headers của gói tin bằng cách viết prototype header kèm theo data cần gửi, hoặc sử dụng header mặc định cho các data được gửi ra, và cho phép người dùng nhận headers trong những incoming packets để hiểu được cấu trúc.
Theo Valueimpression