본문 바로가기
Android/이론

NetWork(네트워크)

by 둥글레차35 2023. 11. 23.

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
  • 기타 등

댓글