- Tổng đài 24/7: 1800 646 881
- Đăng nhập
- 3
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.
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ó chức năng chính là tạo liên kết giữa client và server nhờ vào cổng (Port). Tại đây các tầng TCP (TCP layer) có thể định danh ứng dụng và dữ liệu được truyền tới bằng liên kết của các lớp Socket.
Một trong những lý do chính khiến Socket trở thành công cụ phổ biến của các lập trình viên là nó có thể tương thích trên hầu hết các hệ điều hành như Windows, Linux, MacOs,… Không những thế, Socket còn có thể kết hợp với nhiều ngôn ngữ lập trình khác nhau như: Java, C, C++, Visual Basic,…
Ngoài ra, lập trình viê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 gian xây dựng sản phẩm.
Nhiệm vụ chính của Socket là kết nối giữa client và Server, quá trình gửi và nhận dữ liệu sẽ thông qua giao thức TCP/IP và UDP. Để hai chương trình kết nối với nhau trên môi trường có internet, điều kiện cần có là phải xác định được thông tin địa chỉ IP và số hiệu Port của hai chương trình thì Socket mới có thể hoạt động.
Chúng ta có thể liên kết hai chương trình trên cùng một máy hoặc hai máy khác nhau. Tuy nhiên, đối 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 hoàn toàn.
Các loại Socket có thể giao tiếp 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, chúng ta sẽ tìm hiểu đến các 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:
Streams Socket hay còn gọi là Socket TCP, nó hoạt động dựa trên giao thức TCP và được phát triển theo thiên hướng kết nối. Tức là nó chỉ hoạt động khi có sự liên kết thành công giữa máy chủ và máy khách.
Với Stream Socket, quá trình trao đổi dữ liệu sẽ diễn ra một cách nhanh chóng và chính xác. Dữ liệu sẽ được đảm bảo gửi đi đúng điểm nhận, người dùng hoàn toàn có thể yên tâm về độ tin cậy cao của Stream Socket.
Ngoài ra, nó còn ghi lại thông tin dịch chuyển dữ liệu trong quá trình truyền tải dữ liệu và gửi thông báo về cho người dùng với bất kỳ kết quả nào dù là thành công hay thất bại, giúp người dùng quản lý được quá trình truyền tải dữ liệu cũng như sớm phát hiện ra lỗi. Bản ghi của Stream Socket là không giới hạn, bạ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ạng và Chố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:
Ngược lại với Stream Sockets, Datagram Sockets hoạt động theo hướng không kết nối và dựa vào giao thức UDP. Tức là nó không cần có sự kết nối thành công giữa client và server để hoạt động mà chỉ cần cung cấp connection-less point để nó thực hiện quá trình gửi và nhận thông tin.
Nhờ vào việc không cần thiết lập kết nối giữa client và server nên quá trình trao đổi dữ liệu giữa hai process diễn ra với rất nhanh và đơn giản. Nó phù hợp để vận dụng vào các hoạt động đòi hỏi truyền dữ liệu nhanh như nhắn tin, chat game online,…
Tóm tắt thông tin về Datagram Sockets:
Raw Sockets cho phép người dùng truy cập vào các giao thức truyền thông media cấp thấp, giúp trừu tượng hóa Socket. Socket này hoạt động theo thiên hướng của Datagram. Nó không phù hợp với người dùng phổ thông mà thường tập trung vào những đối tượng quan tâm đến các giao thức truyền thông mới hoặc cần có quyền để truy cập vào các phương tiện có giao thức chuyên sâu và khó hiểu hơn.
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.
Xem bài viết chi tiết: Websocket là gì?
So với các loại Sockets trên thì Websocket là ứng dụng được sử dụng nhiều nhất nhờ vào những lợi ích 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 thiết kế chuyên dụng cho web nhưng nó lại hỗ trợ hầu như tất cả các ứng dụng cần trao đổi dữ liệu trên môi trường có internet. Lập trình viên có thể sử dụng nó vào bất kỳ ứng dụng nào.
Websocket là loại Socket chứa hầu hết ưu điểm từ những loại sockets khác như:
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 của Websocket biểu hiện cho sự kết nối của máy chủ và website, thường được ghi ở phần đầu của một URL. Ví dụ: ws://abc.com
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ó bao gồm:
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ụ:
{{EJS0}}
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
{{EJS1}}
Sử dụng addEventListener()
{{EJS2}}
onmessage
{{EJS3}}
Sử dụng addEventListener()
{{EJS4}}
onerror
{{EJS5}}
Sử dụng addEventListener()
{{EJS6}}
onclose
{{EJS7}}
Thực hiện handler onClose sự kiện sử dụng addEventListener()
{{EJS8}}
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ụ:
{{EJS9}}
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 có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về quản trị mạng, server, vps, hosting, domain,… Chúc bạn thành công.
Mua tên miền .COM tại BKHOST
BKHOST cam kết giá tốt. Kiểm tra tên miền .COM đẹp và đăng ký ngay hôm nay!