NetWork
정의
두 대 이상의 컴퓨터를 연결하는 것(인터넷을 통해서 클라이언트와 서버를 연결하는 것)
클라이언트와 서버의 연결
- 클라이언트: 사용자가 볼 수 있는 기기(n개)
- 서버: 사용자가 볼 수 없는 기기(1개)
네트워킹
- 서버와 클라이언트의 의사소통
- 네트워크 약속(프로토콜(통신규약))이 존재한다.
네트워크 프로토콜
여러 가지의 통신규약이 있지만 일단은 내가 필요한 HTTP만을 기억하자
- FTP -> 파일 전송 규약
- SMTP -> 메일 전송규약
- HTTP -> 인터넷 서비스를 위한 규약
Request와 Response
- Request -> 클라이언트가 서버에게 보내는 요청
- Response -> 서버가 클라이언트에게 보내는 응답
요청을 할 때는 Header와 Body가 있는데 둘 다 추가정보를 실은 상태로 요청을 한다
HTTP메서드
- get
- post
- patch
- delete
등이 있다.
ResponseCode
응답의 요약으로 통신이 잘되었는지 아닌지 확인할 수 있다.
예를 들어 2xx 번대는 통신이 잘 되었다.
4xx번대는 뭔가 잘못되었다 정도로 알 수 있겠다.
네트워크가 필요한 이유
대부분의 앱들이 서버로부터 정보를 받아서 화면을 구성한다.
문제점
대부분의 앱들은 서버에서 정보를 받아서 화면을 구성한다고 했는데 이럴 경우 매번 똑같은 화면을 그리는데도
요청을 하기 때문에 리소스낭비가 있을 수 있다.
해결책
이럴 때 해결 방법으로는 캐싱이라는 것이 있다. 하지만 난이도가 높은 작업이기에 일단은 알고만 넘어가자
캐싱
- 한번 받은 데이터를 클라이언트가 로컬 데이터베이스에 저장을 하고 다시 필요한 경우 서버에게 요청을 하는 것이 아닌 데이터베이스에 있는 데이터를 이용한다.
- 캐싱은 구현 난이도가 높기에 실제로 캐싱을 구현하지 않은 앱들도 많다.
라이브러리
서버와 통신을 할 때 HttpURLConnection이라는 안드로이드에서 기본으로 제공해 주는 네트워크 모듈이 있지만
사용하기가 매우 번거롭기에(메인 스레드에서 작동하기에 따로 동작하게 만들어주어야 하는 번거로움이 있다.)
실제로는 라이브러리를 많이 이용하는 편이다.
- Volley
- Retrofit
- OKHttp
- 기타 등
'Android > 이론' 카테고리의 다른 글
| suspend 함수 (0) | 2025.05.20 |
|---|---|
| 안드로이드 액티비티 라이프 사이클 (0) | 2024.04.08 |
| [안드로이드] Activity Stack(액티비티 스택) singleTask (2) | 2023.11.20 |
| 안드로이드] Activity Stack(액티비티 스택) SingleTop (0) | 2023.11.16 |
| [안드로이드] Activity Stack(액티비티 스택) Standard (0) | 2023.11.14 |
댓글