Socket Là Gì? Hoạt động của Socket Server và Phân loại Socket

Socket chính là điểm cuối (được gọi là end point) của một liên kết truyền thông 2 chiều giữa 2 chương trình chạy trên môi trường mạng internet.

Nếu bạn đang tìm hiểu về Socket là gì thì chia sẻ sau của TLT Việt chính là nguồn thông tin hữu ích dành cho bạn đấy.

Socket là gì?

Socket chính là điểm cuối (được gọi là end point) của một liên kết truyền thông 2 chiều giữa 2 chương trình chạy trên môi trường mạng internet. Chúng được dùng để thể hiện kết nối giữa máy chủ với client và bị ràng buộc nhau bởi một cổng Port, nhằm mục đích để các tầng TCP (viết tắt của Transmission Control Protocol) thực hiện chức năng định danh ứng dụng các dữ liệu được gửi đến. 

Vậy lập trình Socket là gì? Nó chính là lập trình hỗ trợ người dùng dễ dàng kết nối máy tính truyền tải, sau đó thông qua mạng internet để nhận tất cả thông tin dữ liệu từ máy tính. Hoặc hiểu một cách đơn giản, Socket chính là một thiết bị truyền thông, thực hiện chức năng gửi và tiếp nhận dữ liệu từ ứng dụng hay máy tính khác.

Đối với khái niệm Socket trong Server Vật lý, thì số Socket tương ứng với Số CPU Vật lý được cắm trên Server. Phổ biến là 1, 2 và 4 Socket trên 1 Server vật lý. Bạn đừng nhầm Socket với số core nhé!

socket la gi

Lý do lập trình viên cần đến Socket TCP

Phần lớn các lập trình viên đều sử dụng Socket vì nó mang lại khá nhiều lợi ích. Cụ thể như:

  • Cho phép người dùng sử dụng nhiều Socket TCP cùng lúc và liên tục để nâng cao năng suất làm việc và tiết kiệm thời gian.
  • Socket hỗ trợ các hệ điều hành phổ biến Windows, Linux… Đồng thời, nó còn được sử dụng cho các ngôn ngữ lập trình quen thuộc như C, C++, Java, Visual C++, Visual Basic,… Do đó, dù người dùng sử dụng máy có cấu hình như thế nào thì Socket cũng đều tương thích và phù hợp với mọi đối tượng.

Hoạt động của Socket server là gì?

Về bản chất, hoạt động của Socket là kết nối client với máy chủ bằng TCP/IP hay UDP để thực hiện việc truyền tải và nhận dữ liệu qua môi trường internet.Do đó,  Socket chỉ có thể hoạt động được khi có đủ các thông tin thông số IP, số hiệu Port của 2 ứng dụng muốn trao đổi dữ liệu.

Ngoài ra, 2 ứng dụng muốn truyền tải dữ liệu cho nhau cần phải đáp ứng điều kiện là chúng cùng nằm trên một máy tính hoặc cũng có thể ở 2 máy khác nhau. Đối với trường hợp cùng nằm trên một máy thì số hiệu cổng bắt buộc phải khác nhau.

socket la gi

Phân loại Socket

Socket có 4 loại khác nhau là Stream Socket. Datagram Socket, Websocket và Unix socket.

 

  • Tìm hiểu Stream Socket là gì?

 

Đây là một socket hướng kết nối hoạt động qua giao thức TCP. Có nghĩa là nó chỉ hoạt động khi máy chủ và client đã kết nối thành công với nhau.

Ưu điểm: 

- Đảm bảo truyền dữ liệu đến đúng đối tượng, theo đúng thứ tự một cách nhanh chóng. 

- Khi thông điệp được gửi đi thì hệ thống luôn có xác nhận nhằm thông báo về tình trạng của tiến trình truyền tải cho người dùng. 

Nhược điểm: 

Vì chỉ có một địa chỉ IP giữa máy chủ và máy nhận nên bắt buộc một máy phải chờ máy kia chấp nhận kết nối.  

socket la gi

  • Tìm hiểu Datagram Socket là gì?

Ngược lại với Stream Socket, Datagram Socket là Socket không hướng kết nối và chúng hoạt động qua giao thức UDP (viết tắt của User Datagram Protocol). Vì thế, Socket này có thể hoạt động dù không có bất kỳ sự kết nối nào của 2 máy với nhau. 

Ưu điểm:

- Quá trình kết nối, truyền dữ liệu vô cùng đơn giản.

- Việc truyền tải thông tin dữ liệu diễn ra nhanh chóng. 

Nhược điểm:

Thông tin truyền tải có thể bị lặp hoặc truyền sai thứ tự, do đó thông tin nhận được có độ tin cậy chưa cao. 

  • Tìm hiểu Websocket là gì?

Đây là một Socket có chức năng hỗ trợ việc kết nối trong môi trường internet giữa client với máy chủ để chúng được diễn ra nhanh chóng, tăng hiệu quả hơn bằng cách dùng Socket TCP. Websocket được dùng cho ứng dụng web và tất cả các ứng dụng cần trao đổi thông tin qua môi trường internet.

Ưu điểm:

- Tốc độ truyền thông tin giữ máy chủ và client diễn ra nhanh chóng.

- Người dùng dễ dàng phát hiện lỗi để có thể xử lý chúng.

- Cách sử dụng đơn giản và không cần cài thêm các phần mềm khác để hỗ trợ.

- Người dùng không cần kết hợp thêm các phương pháp kết nối khác trong quá trình sử dụng.

Nhược điểm:

- Hạn chế trong việc tương thích với trình duyệt, bởi Websocket chưa hỗ trợ được ở tất cả các trình duyệt đang có mặt trên thị trường hiện nay.

  • Websocket chưa hoàn toàn hỗ trợ các dịch vụ yêu cầu về phạm vi nên ít nhiều đem lại bất tiện cho người dùng.
  • socket la gi
  • Tìm hiểu Unix Socket là gì?

Xét về tốc độ kết nối thì Unix socket cũng giống như Websocket, đó là nó giúp tăng tốc độ kết nối và quá trình truyền dữ liệu được diễn ra nhanh chóng, nhẹ và hiệu quả hơn.

Unix socket được xem như một điểm giao tiếp, thúc đẩy tiến trình trao đổi thông tin giữa các ứng dụng khác nhau trên cùng một máy tính. Theo đó, toàn bộ hoạt động Unix socket được thực hiện ở nhân của hệ điều hành. Chính nhờ điều này mà dữ liệu giũa các ứng dụng được truyền tải nhanh chóng hơn rất nhiều. 

Ngoài ra, nhờ khả năng tránh được routing hay các bước kiểm tra nên với sự hỗ trợ Unix Socket, việc truyền tải của dữ liệu càng được dễ dàng và đảm bảo hơn

Ưu điểm:

- Quá trình truyền tải nhanh chóng, nhẹ nhàng và chính xác.

- Tốc độ truy cập vào MySQL tăng đến 30 – 50%.

- Giảm độ trễ thời gian từ 60ms xuống còn 5ms.

-  PostgreSQL tăng đến hơn 30%.

- Redis tăng khoảng 50%.

- Và còn nhiều thông số về tốc độ khác để minh chứng cho quá trình truyền tải dữ liệu ưu việc mà Unix Socket mang lại.

Nhược điểm:

- Đối với các ứng dụng không cùng trên một máy chủ thì Unix Socket không thể kết nối được. 

- Trên Unix Socket, vấn đề phân quyền của các tập tin đôi khi xảy ra lỗi làm ảnh hưởng thao tác trong quá trình sử dụng của người dùng.

socket la gi

Bài viết cùng chuyên mục :

Server là gì? Tại sao phải sử dụng server?

6 yếu tố giúp khách hàng biết được nên thuê server - máy chủ ở đâu tốt