Article ID: 798
Cập nhật gần nhất: 24 Th10, 2021
Socket là gì?Socket là giao diện lập trình ứng dụng mạng được dùng để truyền và nhận dữ liệu trên internet. Giữa hai chương trình chạy trên mạng cần có một liên kết giao tiếp hai chiều, hay còn gọi là two-way communication để kết nối 2 process trò chuyện với nhau được ràng buộc bằng một cổng. Điểm cuối (endpoint) của liên kết này được gọi là socket. Vì sao cần sử dụng Socket?Thường thì với một trang web tin tức hay bán hàng, blog v.v... người dùng chỉ cần yêu cầu máy chủ tải đúng trang mình cần để hiển thị lên và đọc sau đó lại chuyển sang trang khác, nhưng bây giờ ta cần một thứ gì đó cần được cập nhật liên tục thì sao? ví dụ như hiển thị kết quả sổ số, cập nhật tỉ số bóng đá, server game, hoặc thông dụng hơn là chat theo thời gian thực. Khi này ta sẽ cần dùng đến Socket, nó sẽ lắng nghe trên một cổng được định sẵn và bất kỳ khi nào có dữ liệu nó sẽ ngay lập tức xử lý và đưa ra kết quả, giúp người dùng cập nhật thông tin nhanh chóng với độ trễ cực thấp. Tất nhiên là một server web bình thường cũng có thể làm được tuy nhiên chúng phải request liên tục vào server điều này sẽ nhanh chóng làm đuối server và sẽ không thể mang lại hiệu suất cao được. Socket hoạt động như thế nàoNếu như một webserver thông thường thì người dùng phải gọi đến server rồi chờ server trả lời, thì socket sẽ lắng nghe từ 2 phía(cả server và client) từ đó mang lại cho nó được khả năng real-time. Quá trình khởi tạo socket connection từ client tới server.Như chúng ta đã biết thì có những port được server service quy định dùng cho các dịch vụ quy định (Assigned Numbers Authority). (Port 80 dùng cho giao thức HTTP, 20 dùng cho FTP, 22 dùng cho SSH, 25 dùng cho SMTP, ...ect). Quá trình khởi tạo kết nối tới Gmail sẽ diễn ra như sau:
Làm sao để client và server có thể duy trì được kết nối ?Sở dĩ 2 máy có thể duy trì được kết nối là do port đã được mở và sẽ không đóng cho đến khi chiều bên kia gửi tín hiệu muốn chấm dứt bằng cách gửi gói tin RST. Trong trường hợp chiều bên kia ngắt kết nối mà không gửi RST thì kết nỗi vẫn sẽ được đóng sau một khoảng timeout nào đó được quy định ở quá trình Keep-Alive. Quá trình Keep-Alive có 3 thuộc tính để quyết định có đóng kết nối hay không:
Phân loại SocketStream Socket: Dựa trên giao thức TCP( Tranmission Control Protocol), việc truyền dữ liệu chỉ thực hiện giữa 2 quá trình đã thiết lập kết nối. Do đó, hình thức này được gọi là socket hướng kết nối.
Datagram Socket: Dựa trên giao thức UDP( User Datagram Protocol) việc truyền dữ liệu không yêu cầu có sự thiết lập kết nối giữa 2 quá trình. Do đó, hình thức này được gọi là socket không hướng kết nối.
Trên đây là những thông tin cơ bản về Socket hy vọng đem lại một số kiển thức bổ ích cho các bạn về Socket.
Article ID: 798
Cập nhật gần nhất: 24 Th10, 2021
Lần sửa đổi: 1
Lượt xem: 0
Tags
Also read
|