Socket là gì? Các loại Socket phổ biến hiện nay

1170
25-05-2020
Socket là gì? Các loại Socket phổ biến hiện nay

Nếu như là một lập trình viên thì chắc hẳn khái niệm Socket không còn xa lạ gì với bạn nữa. Tuy nhiên, để đi sâu vào phân tích Socket là gì? Cách thức Socket hoạt động như thế nào thì không phải ai cũng nắm rõ. Bài viết dưới đây, Bizfly Cloud sẽ cung cấp cho bạn những kiến thức cơ bản nhất về giao diện lập trình này.

socket1

Socket là gì?

Hiện nay, nhiều bài viết nói về Socket nhưng để hiểu thì hơi khó khăn. Thuật ngữ phần mềm này còn khá mới lạ gây nên còn khiến nhiều người lạ lẫm. Thực chất,  giống như hầu hết các thuật ngữ phần mềm, Socket được hiểu là một cách trừu tượng hóa ổ cắm vật lý (giống như ổ cắm trên hình) mà chúng ta vốn đã quen thuộc. Khi một ổ cắm vật lý là một điểm tiếp xúc để nhận cáp điện., một 1 software socket cũng là một điểm nhận. thay vì nhận cáp nguồn, nó được nhận kết nối mạng từ một máy tính khác.

socket2

Các lớp Socket được dùng để tiến hành kết nối giữa client và server. Tất cả các Socket đều ràng buộc thông qua một cổng port (thể hiện là một con số cụ thể) để các tầng TCP (TCP Layer) có thể định danh ứng dụng mà dữ liệu sẽ được gửi tới.

Socket hoạt động như thế nào?

Theo những gì đã chia sẻ, chức năng của Socket chính là kết nối giữa client và server thông qua TCP/IP và UDP để truyền cũng như nhận dữ liệu qua Internet. Giao diện Socket chỉ có thể hoạt động khi đã có số hiệu cổng của 2 ứng dụng cần trao đổi dữ liệu và thông số IP.

Socket chỉ hoạt động khi 2 ứng dụng cần truyền thông tin đã đáp ứng đủ các điều kiện dưới đây:

1. 2 ứng dụng có thể cùng nằm trên một máy hoặc nằm trên 2 máy khác nhau.

2. Nếu ứng dụng cùng nằm trên một máy thì số hiệu cổng phải không trùng với nhau.

Vì sao nên dùng Socket?

Socket có tác dụng chính là duy trì kết nối giữa các client với server để ứng dụng có thể hoạt động liên tục. Chẳng hạn khi nhận một ứng dụng từ nhắn tin, Socket sẽ nhận ra có tin nhắn mới, reaction... ect  để thông báo lên giao diện. 

socket4

Hầu hết các socket là hỗ trợ hầu hết các hệ điều hành bao gồm MS Windows, Linux,,..  Socket được dùng  với nhiều ngôn ngữ lập trình, gồm C, C , Java, Visual Basic, Visual C ,… nên Socket tương thích với hầu hết mọi cấu hình máy tính khác nhau.  Socket có thể chạy liên tục, giúp tiết kiệm được thời gian mà nâng cao hiệu suất làm việc. 

Các loại Socket hiện nay

Có bốn loại socket hiện có sẵn cho người dùng sử dụng. Hai loại đầu tiên được sử dụng phổ biến nhất và hai loại còn lại có mức độ sử dụng ít hơn hoặc hiếm khi được sử dụng.

Các quy trình được cho là chỉ giao tiếp giữa các socket trong cùng loại, tuy nhiên việc giao tiếp giữa các loại socket khác nhau thì không có hạn chế.

Stream Sockets – Truyền phát 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 việc truyền phát không thể thực hiện, người gửi sẽ nhận được báo lỗi. Các bản ghi dữ liệu không có bất kỳ giới hạn nào.

Datagram Sockets - Truyền phát trong môi trường mạng không được đảm bảo. Các socket không kết nối với nhau vì bạn không cần phải có kết nối mở như trong Stream Sockets - bạn tạo một packet với thông tin đích và gửi nó đi. Dạng socket này sử dụng UDP.

socket3

Raw Sockets - Cung cấp cho người dùng quyền truy cập vào các giao thức vận chuyển cơ bản, hỗ trợ socket abstractions. Các socket này thường theo hướng datagram, mặc dù các đặc tính cụ thể của chúng phụ thuộc vào giao diện do giao thức cung cấp. Raw Sockets không dành cho người dùng phổ thông; chúng chủ yếu phục vụ cho những người quan tâm đến việc phát triển các giao thức giao tiếp mới hoặc muốn có quyền truy cập vào một số phương tiện truyền phức tạp hơn.

Sequenced Packet Sockets – Các socket này tương tự như stream socket, ngoại trừ giới hạn bản ghi được giữ nguyên. Sequenced-packet sockets cho phép người dùng thao tác các header của SPP hoặc IDP trên một packet hoặc một nhóm các packet, bằng cách viết header nguyên mẫu kết hợp với bất kỳ dữ liệu nào được gửi đi, hoặc bằng cách chỉ định một header mặc định sẽ được sử dụng cho tất cả dữ liệu gửi đi, cùng với đó cho phép người dùng nhận các header trên các packet đến.

Websocket là gì?

Websocket góp phần giúp kết nối giữa internet giữa client và server diễn ra nhanh và chính xác hơn.

websocket

Websocket thực chất là công cụ hỗ trợ client và server kết nối với nhau qua internet. Thông qua việc sử dụng TCP socket giúp kết nối giữa 2 bên client và server  nhanh và mượt. 

Ưu điểm của Websocket 

Websocket mang ưu điểm vượt trội so trong việc kết nối giữa client và server. Điều này khiến cho công việc của từng cá nhân và doanh nghiệp được thực thi nhanh hơn. Cụ thể như sau:

- Tăng tốc độ truyền tải thông tin giữa 2 chiều

- Dễ phát hiện và xử lý trong trường hợp có lỗi xảy ra

- Dễ dàng sử dụng, không cần cài đặt thêm các phần mềm bổ sung khác

- Không cần sử dụng nhiều phương pháp kết nối khác nhau

Websocket được sử dụng nhiều trong trường hợp yêu cầu real time như chat, chứng khoán hay biểu đồ

Nhược điểm của Websocket

Một số nhược điểm của Websocket mà bạn cần lưu ý khi sử dụng có thể kể đến như:

- Với các dịch vụ có phạm vi yêu cầu, Websocket chưa hỗ trợ hoàn toàn.

- Hỗ trợ trình duyệt có chọn lọc nên gây nhiều bất tiện

Nguồn: Bizfly Cloud chia sẻ

BizFly Cloud là hệ sinh thái điện toán đám mây được vận hành bởi VCCorp - Công ty dẫn đầu trong lĩnh vực truyền thông và internet tại Việt Nam. Với đội ngũ kỹ thuật viên trình độ cao và kinh nghiệm lâu năm làm việc trên các công nghệ khác nhau như cloud, mobile, web..., chúng tôi có đủ khả năng để hỗ trợ đưa ra những lời khuyên hữu ích và công nghệ toàn diện giúp doanh nghiệp chuyển đổi số thành công. Dành cho độc giả quan tâm tới các dịch vụ đám mây do BizFly Cloud cung cấp có thể truy cập tại đây.
TAGS: socket
SHARE