Socket là gì? Có vai trò gì trong kết nối mạng? | BKHOST

Socket là một thuật ngữ khá phổ biến trong lĩnh vực Công nghệ thông tin. Nhưng nếu bạn chưa hiểu rõ về Socket và đang muốn tìm hiểu về nó thì bài viết này là dành cho bạn. Ok, hãy cùng BKHOST bắt đầu ngay thôi nào.

Socket là gì ?

Socket là gì?

Hiểu một cách đơn giản, Socket được ví như một cáp sạc điện thoại, khi cắm nó vào ổ cắm điện thì nó sẽ truyền tải điện từ ổ cắm sang điện thoại.

Ví dụ, khi bạn Ultraview hay Teamviewer để remote vào một máy tính khác thì Socket cũng hoạt động tương tự như vậy, nó là một cổng kết nối Internet, giúp chương trình của máy này có thể kết nối với chương trình của máy khác.

Hay nói cách khác, Socket là điểm cuối trong một liên kết hai chiều của hai chương trình chạy trên mạng. Mục đích của Socket là cho phép 1 process giao tiếp với 1 process khác.

Ngoài ra Socket còn có công dụng chính là tạo link giữa client và server nhờ vào cổng ( Port ). Tại đây những tầng TCP ( TCP layer ) hoàn toàn có thể định danh ứng dụng và tài liệu được truyền tới bằng link của những lớp Socket .

Vì sao nên dùng Socket ?

Một trong những nguyên do chính khiến Socket trở thành công cụ phổ cập của những lập trình viên là nó hoàn toàn có thể thích hợp trên hầu hết những hệ điều hành quản lý như Windows, Linux, MacOs, … Không những thế, Socket còn hoàn toàn có thể phối hợp với nhiều ngôn từ lập trình khác nhau như : Java, C, C + +, Visual Basic, …Ngoài ra, lập trình viên hoàn toàn có thể chạy song song nhiều Socket cùng lúc và liên tục. Việc này giúp tăng hiệu suất là việc, rút ngắn thời hạn thiết kế xây dựng loại sản phẩm .

Socket hoạt động giải trí như thế nào ?

Socket hoạt động như thế nào?Nhiệm vụ chính của Socket là liên kết giữa client và Server, quy trình gửi và nhận tài liệu sẽ trải qua giao thức TCP / IP và UDP. Để hai chương trình liên kết với nhau trên thiên nhiên và môi trường có internet, điều kiện kèm theo cần có là phải xác lập được thông tin địa chỉ IP và số hiệu Port của hai chương trình thì Socket mới hoàn toàn có thể hoạt động giải trí .Chúng ta hoàn toàn có thể link hai chương trình trên cùng một máy hoặc hai máy khác nhau. Tuy nhiên, so với trường hợp cùng máy thì bắt buộc số liệu về IP và Port giữa hai chương trình phải khác nhau trọn vẹn .

Phân loại Socket

Các loại Socket hoàn toàn có thể tiếp xúc với nhau mà không bị hạn chế bởi việc cùng loại hay khác loại .Để hiểu sâu hơn về Socket, tất cả chúng ta sẽ khám phá đến những loại Socket. Tùy vào mức độ sử dụng nhiều hay ít mà Socket được hiện hành với 4 loại :

  • Stream Sockets.
  • Datagram Sockets.
  • Raw Sockets.
  • Sequenced Packet Sockets.

Stream Sockets

Streams Socket hay còn gọi là Socket TCP, nó hoạt động giải trí dựa trên giao thức TCP và được tăng trưởng theo thiên hướng liên kết. Tức là nó chỉ hoạt động giải trí khi có sự link thành công xuất sắc giữa sever và máy khách .

Stream Sockets

Với Stream Socket, quy trình trao đổi tài liệu sẽ diễn ra một cách nhanh gọn và đúng mực. Dữ liệu sẽ được bảo vệ gửi đi đúng điểm nhận, người dùng trọn vẹn hoàn toàn có thể yên tâm về độ đáng tin cậy cao của Stream Socket .Ngoài ra, nó còn ghi lại thông tin di dời tài liệu trong quy trình truyền tải tài liệu và gửi thông tin về cho người dùng với bất kể tác dụng nào dù là thành công xuất sắc hay thất bại, giúp người dùng quản trị được quy trình truyền tải tài liệu cũng như sớm phát hiện ra lỗi. Bản ghi của Stream Socket là không số lượng giới hạn, bạn hoàn toàn có thể sử dụng tùy thích .

Stream Socket còn có hai cơ chế là Quản lý luồng lưu thông trên mạngChống tắc nghẽn, giúp cho quá trình truyền tải dữ liệu được mượt mà và tiết kiệm thời gian.

Tóm tắt thông tin về Stream Sockets:

  • Phải xác định địa chỉ IP rõ ràng giữa 2 process cần kết nối.
  • Gửi thông tin theo trình tự cụ thể và được lên kế hoạch từ trước.
  • Một trong 2 process phải gửi yêu cầu liên kết trước.
  • Hoạt động trên mô hình client/ server – Mô hình lắng nghe và chấp nhận.
  • Mỗi thông điệp gửi đi đều phải có thông báo gửi về thì mới được tính là hoàn thành.

Datagram Sockets

trái lại với Stream Sockets, Datagram Sockets hoạt động giải trí theo hướng không liên kết và dựa vào giao thức UDP. Tức là nó không cần có sự liên kết thành công xuất sắc giữa client và server để hoạt động giải trí mà chỉ cần cung ứng connection-less point để nó triển khai quy trình gửi và nhận thông tin .

Datagram Sockets

Nhờ vào việc không cần thiết lập liên kết giữa client và server nên quy trình trao đổi tài liệu giữa hai process diễn ra với rất nhanh và đơn thuần. Nó tương thích để vận dụng vào những hoạt động giải trí yên cầu truyền tài liệu nhanh như gửi tin nhắn, chat game trực tuyến, …

Tóm tắt thông tin về Datagram Sockets:

  • Thông quan Datagram Sockets, hai process có thể kết nối với nhau mà không cần xác định rõ thông tin IP.
  • Để gửi thông điệp đúng người nhận thì thông điệp gửi đi phải kèm thông điệp của người nhận.
  • Có thể gửi một thông điệp nhiều lần nhưng không được gửi cùng lúc.
  • Không đảm bảo kết quả của tiến trình, thông điệp có thể không đến được tay người nhận.
  • Thứ tự hoàn thành tiến trình không chính xác, người gửi sau có thể đến trước hoặc ngược lại
  • Điều kiện để kết nối giữa 2 process là một trong 2 bên phải cung cấp port của Socket mà mình đang dùng.

Raw Sockets

Raw Sockets được cho phép người dùng truy vấn vào những giao thức tiếp thị quảng cáo truyền thông cấp thấp, giúp trừu tượng hóa Socket. Socket này hoạt động giải trí theo thiên hướng của Datagram. Nó không tương thích với người dùng đại trà phổ thông mà thường tập trung chuyên sâu vào những đối tượng người dùng chăm sóc đến những giao thức tiếp thị quảng cáo mới hoặc cần có quyền để truy vấn vào những phương tiện đi lại có giao thức nâng cao và khó hiểu hơn .

Sequenced Packet Sockets

Sequenced-packet sockets hoạt động theo thiên hướng Streams Sockets trừ việc giới hạn bản ghi được giữ nguyên. Nó được cung cấp như một phần của trừu tượng hóa Sockets và giữ vai trò vô cùng quan trọng đối với các ứng dụng hệ thống mạng nghiêm trọng. Nó cung cấp quyền cho người dùng thao tác trên SPP (Tiêu đề của giao thức) hoặc IDP (Giao thức gói dữ liệu Internet) trên một hoặc nhiều gói, người dùng có thể viết tiêu đề nguyên mẫu cùng với các dữ liệu được gửi đi. Ngoài ra, nó còn có thể chỉ định một tiêu đề cụ thể mặc định sẽ được kết hợp với các dữ liệu gửi đi. Song song đó nó còn cho phép nhận các tiêu đề của các gói đến.

Bonus : Tìm hiểu thêm về Websocket

Xem bài viết chi tiết cụ thể : Websocket là gì ?So với những loại Sockets trên thì Websocket là ứng dụng được sử dụng nhiều nhất nhờ vào những quyền lợi to lớn mà nó mang lại .

Websocket là một module giúp kết nối giữa client và server một cách nhanh chóng và ít tốn kém. Nó hoạt động dựa vào giao thức TCP mà không cần đến HTTP.

Tuy được phong cách thiết kế chuyên sử dụng cho web nhưng nó lại tương hỗ phần nhiều tổng thể những ứng dụng cần trao đổi tài liệu trên thiên nhiên và môi trường có internet. Lập trình viên hoàn toàn có thể sử dụng nó vào bất kể ứng dụng nào .

Ưu điểm

Websocket là loại Socket chứa hầu hết ưu điểm từ những loại sockets khác như :

  • Khả năng xảy ra delay là rất thấp.
  • Dễ phát hiện và xử lý lỗi một cách dễ dàng.
  • Không cần bổ sung thêm phần mềm hỗ trợ nào.
  • Không cần sử dụng nhiều phương thức kết nối phức tạp.
  • Tốc độ dịch chuyển thông tin nhanh và chính xác, phù hợp cho các ứng dụng mang tính chất realtime như: chat online, chart chứng khoán,…

Cấu trúc WebSocket

Cấu trúc WebSocket

Ta thường bắt gặp giao thức của HTTP có cấu trúc thông thường là http:// hoặc https:// thì tương tự giao thức WebSocket cũng có 2 cấu trúc chuẩn như sau:

  • Cấu trúc phổ biến: ws://
  • Cấu trúc giao thức secure: wss://

Cấu trúc của Websocket bộc lộ cho sự liên kết của sever và website, thường được ghi ở phần đầu của một URL. Ví dụ : ws : / / abc.com

Các thuộc tính của WebSocket

Ready State: Đây là thuộc tính thể hiện trạng thái kết nối giữa server và client.

Các giá trị của nó gồm có :

  • Giá trị bằng 0 (WebSocket.CONNECTING): Thể hiện cho việc kết nối chưa được thiết lập.
  • Giá trị bằng 1 (WebSocket.OPEN): Thể hiện cho việc kết nối đã được thiết lập, lúc này client và server có thể giao tiếp với nhau.
  • Giá trị bằng 2 (WebSocket.CLOSING): Thể hiện cho việc kết nối đang chuẩn bị đóng.
  • Giá trị bằng 3(WebSocket.CLOSED): Thể hiện cho việc kết nối đã được đóng hoặc bạn không thể mở kết nối được nữa.

Buffered Amount: Đây là thuộc tính dùng để thể hiện số byte của UTF-8 khi sử dụng phương thức gửi (send ()).

Ví dụ:

switch (socket.readyState) {
  case WebSocket.CONNECTING:
    // do something
    break;
  case WebSocket.OPEN:
    // do something
    break;
  case WebSocket.CLOSING:
    // do something
    break;
  case WebSocket.CLOSED:
    // do something
    break;
  default:
    // this never happens
    break;
}

Bộ xử lý sự kiện WebSocket ( Event Handlers )

SỰ KIỆN EVENT HANDLER MÔ TẢ
open onopen Sự kiện open này thông báo việc Websocket đã được khởi tạo. Callback tương ứng với sự kiện này là onopen.
message onmessage Sự kiện message này thông báo client đã nhận được dữ liệu được gửi từ server. Callback tương ứng với sự kiện này là onmessage.
error onerror Sự kiện error này thông báo rằng đã có lỗi xảy ra trong quá trình kết nối của Websocket. Callback tương ứng với sự kiện này là onerror.
close onclose Sự kiện close này thông báo rằng kết nối đã được đóng. Callback tương ứng với sự kiện là onclose.

Bạn có thể sử dụng phương thức addEventListener() để các ứng dụng có thể lắng nghe sự kiện:

Ví dụ :

onopen

socket.onopen = function(event) {
  // handle open event
};

Sử dụng addEventListener()

socket.addEventListener("open", function(event) {
  // handle open event
});

onmessage

socket.onmessage = function(event) {
  var data = event.data;
  // process data as string, blob, or ArrayBuffer
};

Sử dụng addEventListener()

socket.addEventListener("message", function(event) {
  var data = event.data;
  // process data as string, blob, or ArrayBuffer
});

onerror

socket.onerror = function(event) {
  // handle error event
};

Sử dụng addEventListener()

socket.addEventListener("error", function(event) {
  // handle error event
});

onclose

socket.onclose = function(event) {
  var code = event.code;
  var reason = event.reason;
  var wasClean = event.wasClean;
  // handle close event
};

Thực hiện handler onClose sự kiện sử dụng addEventListener()

socket.addEventListener("close", function(event) {
  var code = event.code;
  var reason = event.reason;
  var wasClean = event.wasClean;
  // handle close event
});

Các phương pháp của WebSocket

send(): Gửi dữ liệu tới server. Message data là string, ArrayBuffer, blob.

close(): Đóng kết nối đang tồn tại.

Ví dụ:

var data = new ArrayBuffer(1000000);
// perform some operations on the ArrayBuffer
socket.send(data);
if (socket.bufferedAmount === 0) {
  // data sent
}
else {
  // data did not send
}

Tổng kết về Socket

Hy vọng, qua bài viết này, bạn đã hiểu hơn về Socket. Nếu bạn có bất cứ thắc mắc nào liên quan đến Socket, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P. / s : Bạn cũng hoàn toàn có thể truy vấn vào Blog của BKHOST để đọc thêm những bài viết san sẻ kiến thức và kỹ năng về quản trị mạng, server, vps, hosting, domain, … Chúc bạn thành công xuất sắc .