Một trong những lĩnh vực làm điên đảo mọi người hiện nay không thể không nhắc tới công nghệ thông tin. Và máy tính chính là 1 trong những thiết bị được dùng phổ biến bậc nhất. Trong quá trình sử dụng bạn đã từng nghe đến Socket chưa? Bạn đã từng tìm hiểu về nó chưa? Và để biết nó có điểm lợi gì khi dùng thì dưới đây sẽ là câu trả lời.
Sự hoạt động của Socket
1. Khái niệm Socket là gì?
Bạn đã và đang sử dụng phần mềm Teamview, Ultraview…. Bạn biết được tác dụng của nó khi có thể kết nối giữa máy tính này với máy tính khác. Và Socket cũng tương tự vậy
Socket chính là 1 hệ thống cổng kết nối Internet giúp chương trình của máy tính này có thể kết nối với chương trình của máy kia. Hay có thể nói dễ hiểu hơn thì Socket chính là điểm cuối để kết nối liên lạc 2 chiều giữa các con sông. Và đặc biệt, với sự phát triển tiên tiến thì Socket không chỉ được kết nối với 1 chương trình mà còn có thể kết nối với nhiều chương trình khác
Trong Socket có nhiều lớp khác nhau sử dụng để kết nối giữa Client với server. Tất cả đều được ràng buộc thông qua cổng Port để TCP có thể định danh được các ứng dụng gửi tới.
2. Phân loại Socket
Tính đến thời điểm này thì Socket được chia ra làm 4 loại chính. Đó là Stream Socket, Datagram Socket, Websocket, Unix Socket. Mỗi loại sẽ có những ưu và nhược điểm khác nhau.
– Stream Socket
Stream Socket được phát triển thiên về hướng kết nối. Tức là muốn hoạt động được thì cần phải thông qua giao thức TCP. Và chúng sẽ chỉ đáp ứng hoạt động với nhau khi Client kết nối với Server hoặc ngược lại.
Ưu điểm
+ Những gì truyền đi sẽ đảm bảo truyền đến đúng nơi nhận, đúng theo thứ tự lúc gửi
+ Khi các thông điệp gửi đi thì sẽ có thông báo xác nhận trả về. Từ đó bạn cũng nắm được thông tin về quá trình chuyển tải.
Nhược điểm
Không thể kết nối song song cùng 1 lúc 2 máy. Bạn cần phải chờ 1 máy xác nhận trước thì máy kia mới có thể kết nối tiếp
Stream socket phát triển theo hướng kết nối
– Datagram Socket
Nếu như Stream Socket phát triển theo hướng kết nối thì Datagram lại theo hướng không kết nối. Hoạt động thông qua giao thức UDP kể cả khi 2 máy không có sự kết nối với nhau.
Ưu điểm
+ Tiết kiệm rất nhiều thời gian vì quá trình kết nối khá đơn giản, tối ưu được nhiều thao tác
+ Thời gian truyền tải dữ liệu nhanh
Nhược điểm
Tải dữ liệu nhanh nhưng không đảm bảo độ tin cậy. Có những lúc thông tin sẽ bị truyền sai thứ tự hoặc là trùng lặp dữ liệu
Datagram Socket phát triển theo hướng không kết nối
– Websocket
Websocket có sự kết nối qua lại giữa Client và Server khi có Internet. Phù hợp sử dụng cho mọi ứng dụng
Ưu điểm
+ Quá trình truyền tải tốc độ tăng cao
+ Dễ phát hiện và xử lý các lỗi xảy ra
+ Không cần phải cài đặt thêm bất kỳ phần mềm bổ sung nào
+ Không phải sử dụng nhiều phương pháp kết nối khác nhau
Nhược điểm
+ Chưa hỗ trợ trên các trình duyệt
+ Websocket chưa hỗ trợ hoàn toàn các dịch vụ có trong phạm vi yêu cầu
Websocket phát triển theo hướng kết nối qua lại
– Unix socket
Unix socket chính là điểm giao để hỗ trợ các ứng dụng với nhau trên cùng máy tính. Mọi hoạt động sẽ diễn ra ở ngay nhân của hệ điều hành. Vì vậy, tốc độ kết nối cũng như truyển tải được tối ưu tốt nhất
Ưu điểm
+ Tăng tốc độ truy cập MySQL có thể lên tới 50%
+ Giảm tối đa thời gian latency xuống (60ms còn 5ms)
+ Tăng PostgreSQL lên 30%
+ Tăng Redis lên 50%
Nhược điểm
+ Unix không áp dụng trường hợp ứng dụng nằm trên máy chủ khác
+ Vấn đề phân quyền giữa các tệp tin chưa được hợp lý, đôi khi vẫn xảy ra điều không mong muốn
3. Socket hoạt động như thế nào?
Socket hoạt động khi có sự tác động. Tức là cần phải lập trình kết nối các ứng dụng với nhau. Từ đó giúp truyền và nhận dữ liệu trong môi trường kết nối Internet. Thông thường được sử dụng trên phương thức TCPIP và UDP
Khi muốn trao đổi dữ liệu cho nhau thì buộc 2 ứng dụng phải biết thông tin về IP, số hiệu cổng của ứng dụng kia. Và điều này chúng tôi đã đề cập rất rõ trong phần phân loại Socket
Socket sẽ hoạt động khi có sự tác động nào đó
4. Tìm hiểu về Socket trong Java
Socket trong Java giữa máy khách và máy chủ thì thực hiện như nào. Đây là câu hỏi mà rất nhiều bạn đã thắc mắc. Và câu trả lời chính là:
Đầu tiên, máy khách cần phải đợi máy chủ khởi động. Và muốn máy khách gửi yêu cầu tới máy chủ được thì cần thực hiện như sau:
– Thiết lập kết nối để 2 máy có thông tin của nhau: IP, cổng TCP
– Để giao tiếp qua kết nối Socket thì các luồng phải áp dụng cho cả đầu vào và đầu ra. Sau đó là khi thiết lập kết nối và gửi yêu cầu thì người dùng sẽ đóng kết nối
– Kết nối Socket sẽ được đóng sau khi yêu cầu đã được gửi tới máy chủ
– Để mã hóa ứng dụng phía máy chủ thì bạn cần có 2 socket
+ Server Socket để chờ yêu cầu của khách
+ Một Socket để giao tiếp
Trên đây là những thông tin về Socket mà chúng tôi muốn gửi tới các bạn. Hi vọng thông tin này sẽ giúp bạn rút ngắn được thời gian thực hiện công việc của mình