Trong bài này
14/07/2023
Socket là một trong các khái niệm quan thuộc với lập trình viên, có cách thức hoạt động tương tự như một tập tin descriptor cấp thấp. Vậy, Socket là gì? Có những loại Socket nào và chúng hoạt động như thế nào? Giữa Socket và giao thức TCP/IP có mối liên hệ ra sao? Cùng tìm hiểu qua bài viết bên dưới để giải đáp những câu hỏi này.
Socket là điểm cuối (endpoint) trong cách thức liên kết giao tiếp 2 chiều (two-way communication). Chúng thường dùng để biểu diễn cách thức kết nối giữa Server và Client. Hiện nay, Socket được liên kết với 1 cổng Port cụ thể, cho phép các tầng lớp TCP có thể định danh dữ liệu được gửi đến từ ứng dụng.
Có thể nói, Socket là một giao diện lập trình ứng dụng mạng, cho phép chúng ta gửi và nhận dữ liệu trong môi trường Internet. Giữa 2 chương trình trong Internet cần có sự kết nối 2 chiều để trò chuyện và giao tiếp với nhau. Điểm cuối của sự kết nối này có thể gọi là Socket.
Trong kiến trúc của một máy tính có bao gồm bộ Unix Adapter. Một hệ thống cơ sở dữ liệu có vai trò đáp ứng yêu cầu gửi đến từ khách hàng. Socket được sử dụng bởi đa số các bộ router xác thực đầu vào, ví dụ như FTP (File Transfer Protocol), POP3 hoặc là SMTP (Simple Mail Transfer Protocol), nhằm mục đích tạo ra sự kết nối giữa người gửi và người nhận, phục vụ mục đích trao đổi thông tin.
Như đã trình bày ở phần Socket là gì trên, Socket có chức năng kết nối các Server và Client dựa trên giao thức TCP/IP và UDP, nhằm mục đích gửi và nhận dữ liệu trên Internet. Socket có thể hoạt động khi có thông số IP và tên Port của 2 ứng dụng đang cần gửi / nhận dữ liệu với nhau.
Dưới đây là điều kiện cần đó để Socket hoạt động:
Socket được chia thành 4 loại phổ biến, bao gồm:
Websocket giúp hỗ trợ việc kết nối qua lại giữa Server và Client trên Internet được hiệu quả và nhanh chóng hơn. Chúng hoạt động thông qua giao thức TCP Socket. Websocket có thể được sử dụng trong Web hoặc bất kỳ các ứng dụng nào cần sự trao đổi dữ liệu trong môi trường Internet.
Ưu điểm của Websocket:
Nhược điểm của Websocket:
Stream Socket có thể được hiểu là Socket hướng kết nối. Chúng hoạt động dựa trên giao thức TCP và chúng chỉ hoạt động khi máy chủ và máy khách đã kết nối với nhau.
Ưu điểm của Stream Socket:
Nhược điểm của Stream Socket:
Datagram Socket là Socket không hướng kết nối, được hoạt động thông qua giao thức UDP (User Datagram Socket). Loại hình Socket có thể hoạt động ngay cả khi máy chủ và máy khách chưa kết nối với nhau.
Ưu điểm của Datagram Socket:
Nhược điểm của Datagram Socket:
Unix Socket giúp cho việc trao đổi dữ liệu giữa các ứng dụng khác nhau trên cùng một máy tính được nhanh chóng và nhẹ hơn. Tất cả các hoạt động của Unix Socket đều diễn ra bên trong hệ điều hành, mang lại hiệu quả cao hơn. Quá trình truyền dữ liệu trên Unix Socket cũng được đảm bảo, vì chúng tránh được routing hoặc các lớp kiểm tra khác.
Ưu điểm của Unix Socket:
Nhược điểm của Unix Socket:
Có thể thấy, TCP/IP và UDP có vai trò cực kỳ quan trọng trong việc hỗ trợ Socket hoạt động. Cùng tìm hiểu kỹ hơn về TCP/IP và UDP:
package org.o7planning.tutorial.socket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleServerProgram {
public static void main(String args[]) {
ServerSocket listener = null;
String line;
BufferedReader is;
BufferedWriter os;
Socket socketOfServer = null;
// Mở ServerSocket tại cổng 9999.
// Chú ý bạn không thể chọn cổng nhỏ hơn 1023 nếu không là người dùng
// đặc quyền (privileged users (root)).
try {
listener = new ServerSocket(9999);
} catch (IOException e) {
System.out.println(e);
System.exit(1);
}
try {
System.out.println("Server is waiting to accept user...");
package org.o7planning.tutorial.socket;
import java.io.*;
import java.net.*;
public class SimpleClientDemo {
public static void main(String[] args) {
// Địa chỉ máy chủ.
final String serverHost = "localhost";
Socket socketOfClient = null;
BufferedWriter os = null;
BufferedReader is = null;
try {
// Yêu cầu kết nối với Server nhận dữ liệu
// trên máy 'localhost' cổng 9999.
socketOfClient = new Socket(serverHost, 9999);
// Tạo luồng để gửi dữ liệu từ Client đến Server
os = new BufferedWriter(new OutputStreamWriter(socketOfClient.getOutputStream()));
// Tạo luồng để nhận dữ liệu từ Server
is = new BufferedReader(new InputStreamReader(socketOfClient.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host " + serverHost);
return;
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to " + serverHost);
return;
Trên đây là các thông tin chi tiết về Socket là gì, cách hoạt động cũng như phân loại các Socket phổ biến nhất. Nhìn chung, Socket là một trong các ứng dụng quan trọng mà chúng ta cần dùng, đặc biệt là các nhà phát triển Website. Mời bạn tiếp tục theo dõi blog tại CMC Cloud để cập nhật thêm các bài viết công nghệ liên quan khác.
CMC Cloud - Giải pháp Điện toán đám mây Toàn diện & Linh hoạt nhất. Cho phép tùy biến sử dụng và quản trị 25+ dịch vụ
Xu hướng hạ tầng mở cho tương lai: Góc nhìn từ VietOpenInfra x CMC Telecom Meet Up #45
Key Management phiên bản nâng cấp: Tăng cường chủ động quản lý khóa mã hóa
VIETOPENINFRA x CMC TELECOM MEETUP #45 – Đồng hành cùng cộng đồng công nghệ mã nguồn mở
Elastic Load Balancer L7 Policy – Nâng cấp đột phá cho cân bằng tải ứng dụng trên CMC Cloud
CMC Telecom thiết lập bản đồ phát thải khí nhà kính, tạo nền tảng cho trung tâm dữ liệu xanh
Bài viết liên quan
Cùng chuyên mục
Key Management phiên bản nâng cấp: Tăng cường chủ động quản lý khóa mã hóa
17/09/2025
CMC Cloud chính thức nâng cấp dịch vụ Key Management, bổ sung loại khoá mã hoá mới dành cho Volume, hỗ trợ chuẩn mã hóa AES-256 trực tiếp trên hệ thống, giúp doanh nghiệp gia tăng quyền kiểm soát dữ liệu và củng cố lớp bảo mật một cách chủ động.
Bứt tốc công nghệ, phát triển ứng dụng cùng CMC Cloud
15/08/2025
Để hỗ trợ khách hàng rút ngắn hành trình từ ý tưởng đến triển khai thực tế, CMC Cloud đã xây dựng nhóm dịch vụ DevOps toàn diện, giúp doanh nghiệp tối ưu quy trình phát triển, vận hành ổn định và mở rộng ứng dụng nhanh chóng.
Bạn muốn cập nhật thông tin mới nhất từ CMC Cloud?! Hãy để lại địa chỉ email của bạn ngay để nhận những bản tin bổ ích
Điều khoản & Chính sách