- vừa được xem lúc

Socket() là gì

0 0 4

Người đăng: Nguyễn Đặng Triều

Theo Viblo Asia

Trên máy tính hay các bo mạch nhúng, khi ta viết một ứng dụng nào đó trên hệ điều hành. Ứng dụng đó sẽ tạo một hoặc nhiều process để có thể chạy ứng dụng đó. Và để trao đổi giữ liệu giữa 2 process với nhau thì dùng

🖥️ Trên 1 máy (Single host)

  • Pipe, FIFO → trao đổi dữ liệu tuyến tính giữa process cha-con.
  • Message Queue → gửi/nhận thông điệp không đồng bộ.
  • Shared Memory + Semaphore/Mutex → tốc độ cao, cần đồng bộ hóa.
  • Signal → gửi thông báo sự kiện nhỏ.

Tất cả mấy cái này đều chỉ hoạt động trong nội bộ kernel của cùng một máy.

Nhưng một câu hỏi đặt ra là: "Làm thế nào mà ta có thể trao điểm dữ liệu giữa hai process trên 2 máy 🖥️ khác nhau ?"

Socket() ra đời để giải quyết vấn đề này.

I. Tổng quan

1. Khái niệm

Trong hệ thống mạng máy tính tồn tại những mô hình tham chiếu có kiến trúc phần tầng (OSI, TCP/IP…) nhằm hỗ trợ chức năng trao đôi thông tin giữa các ứng dụng ở nhiều máy tính khác nhau. image.png

Dữ liệu sẽ được đóng gói từ application -> physcal, và sau đó được chuyển qua cho máy khác. Máy khác nhận được sẽ truyền từ physical -> application. image.png

Nếu bạn quan tậm có thể đọc kỹ hơn ở đây: mô hình OSI

Ở đây socket chính là cửa giao tiếp giữa applicationtransport, mà còn là những API để ứng dụng có thể làm việc với TCP/UDP.

Một socket thường được định danh bởi cặp (IP address, Port number).

"Thế IP là gì ? PORT là gì?"

Ví dụ: - Trong một thành phố, để có thể gửi hàng tới một tòa nhà nào đó thì ta cần phải biết địa chỉ của tòa nhà đó -> IP.
- Khi tòa nhà đó đã nhận được hàng thì cần phải gửi gói hàng đó đến phòng của cư dân. Số phòng -> Port

Trong môi trường mạng cũng thế, IP dùng để xác định máy tính nào nhận dữ liệu, và Port sẽ xác định được chính xác ứng dụng nào đang cần dữ liệu này.

Có thể thấy ở hình ảnh trên, tầng transport có 2 phương thức là TCP (Ttransmission Control Protocol) và UDP (User Datagram Protocol), như vậy socket cơ bản là có 2 loại:

  • Stream Socket sử dụng TCP truyền dòng bytes
  • Datagram Socket dử dụng UDP truyền gói tin.

2. Mô hình client-server

image.png

  • Server sẽ lắng nghe các yêu cầu kết nối từ client.
  • Sau khi kết nối, client bắt đầu yêu cầu dữ liệu. Server đọc yêu cầu đó, tiến hành xử lí.
  • Data sau khi xử lí xong, sẽ được trả về cho client.
  • Nếu client không muốn giao tiếp nữa, thì gọi close() điều này sẽ giúp server nhận ra và ngắt kết nối.

Tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Lập trình socket bằng Python

Socket là gì. Một chức năng khác của socket là giúp các tầng TCP hoặc TCP Layer định danh ứng dụng mà dữ liệu sẽ được gửi tới thông qua sự ràng buộc với một cổng port (thể hiện là một con số cụ thể), từ đó tiến hành kết nối giữa client và server.

0 0 162

- vừa được xem lúc

Lập trình mạng với Java Swing + Socket

Xin chào mọi người trong bài này mình sẽ hướng dẫn các bạn thiết kế ra 1 form đơn giản có gửi nhận dữ liệu với Java Swing + Socket, IDE mình sử dụng là Eclipse mọi người nhé. Để cài đặt được windowbui

0 0 176

- vừa được xem lúc

Django channels hướng dẫn cơ bản

Giới thiệu. Channels kết hợp hỗ trợ chế độ xem không đồng bộ gốc của Django, cho phép các dự án của Django xử lý không chỉ HTTP mà còn các giao thức yêu cầu kết nối lâu dài - WebSockets, MQTT, chatbot

0 0 80

- vừa được xem lúc

Basic Socket Programming

1. Struct address. 1.1.

0 0 47

- vừa được xem lúc

Khám Phá Công Nghệ Bí Mật Giúp Canva Dẫn Đầu Trong Lĩnh Vực Thiết Kế Trực Tuyến

Trong thế giới ngày càng số hóa, nhu cầu về công cụ thiết kế đơn giản nhưng đầy đủ tính năng ngày càng trở nên phổ biến. Canva, một nền tảng thiết kế trực tuyến ra đời vào năm 2013, đã nhanh chóng trở

0 0 30

- vừa được xem lúc

Cơ chế client kết nối server tưởng dễ hóa khó

1. Mở đầu.

0 0 13