Làm thế nào để ổ cắm làm việc trên các kết nối không dây?


15

Tôi chỉ làm việc trên các ứng dụng phía máy khách (cụ thể là thiết bị di động) bằng Android, trong đó tất cả các mạng được xử lý ở lớp HTTP bằng cách sử dụng các thành phần được cung cấp khung như httpUrlConnection.

Nhưng các hệ thống nhắn tin đẩy như Websockets / XMPP, v.v., tất cả đều duy trì kết nối liên tục đến máy chủ. Ngay cả GCM của Google, được đưa vào các thiết bị được hỗ trợ của Google Play, vẫn duy trì kết nối liên tục đến các máy chủ.

Câu hỏi của tôi là, làm thế nào để nó hoạt động mà không làm cạn kiệt pin? Nếu chúng tôi thực hiện các yêu cầu HTTP liên tục một cách tuần tự, việc tiêu hao pin là rất đáng kể. Làm thế nào những kết nối liên tục này được duy trì mà không gặp phải cùng một vấn đề?


Là câu hỏi của bạn về ổ cắm hoặc websockets? Đó là hai điều rất khác nhau.
Svick

@svick Câu hỏi của tôi liên quan đến ổ cắm.
Vinay S Shenoy

Câu trả lời:


23

Kết nối TCP mở là trạng thái logic. Nó không ngụ ý rằng dữ liệu luôn luôn được gửi qua lại. Sau cái bắt tay ba bước ban đầu , bạn đã chuyển sang trạng thái "được kết nối". Bạn đang ở trạng thái đó cho đến khi xảy ra ngắt kết nối 3 chiều hoặc lỗi không hoạt động.

Trong suốt thời gian kết nối, các tài nguyên từ phương tiện "vật lý" cơ bản có thể được thiết lập để thực hiện chuyển dữ liệu cho kết nối đó. Trong trường hợp kết nối có dây, đây là vấn đề chuyển các khung ethernet xung quanh. Trong trường hợp kết nối không dây 3G / 4G, điều này được thực hiện bằng cách thiết lập kết nối với các giao thức cấp thấp hơn khi cần thiết.

Vì vậy, trong vòng đời của kết nối, không có kết nối dữ liệu cơ bản nào tồn tại. Thay vào đó, nó nằm im lìm chờ kết nối TCP trong kết nối TCP cần gửi dữ liệu.

Một vấn đề khác là TCP dựa trên ack . Các đồng nghiệp TCP có thể khá hiệu quả giữ cho nhau được thông báo về những gì đã được nhận chắc chắn. Khi thất bại, TCP sẽ truyền lại. Điều này hoạt động tuyệt vời cho các liên kết vật lý khá đáng tin cậy, nhưng có xu hướng sụp đổ trong các liên kết rất ồn / bị hỏng, như các kết nối không dây của bạn. Như bạn có thể tưởng tượng, acks / truyền lại sẽ xảy ra rất thường xuyên trong các môi trường này.

Vì vậy, thông thường, giao thức không dây cơ bản làm mọi thứ có thể để giảm nhu cầu truyền lại TCP. Ví dụ, có rất nhiều kiểm tra lỗi được tích hợp trong lớp không dây. Các đồng nghiệp trong vương quốc không dây (trạm gốc / điện thoại) cũng sử dụng giao thức dựa trên nak để nói với phía bên kia khi họ không nhận được thứ gì đó. Được nak dựa giảm chi phí trong việc kiểm tra lỗi (chúng tôi giả định tất cả mọi thứ tốt trừ khi phía bên kia nói mình không). Nó cũng giúp giải quyết các lỗi trướcchúng nổi bong bóng lên lớp TCP - do đó tránh được rất nhiều sự cố TCP đang cố truyền lại. Ngoài ra, nó còn giảm phạm vi truyền lại cho các thiết bị ngang hàng không dây - điện thoại không cần yêu cầu máy chủ ở đâu đó trên Internet để nhận lại gói, chỉ cần trạm gốc qua liên kết không dây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.