IOS application/Networking

1. 네트워킹에 필요한 기초지식

개발자킹콩 2021. 4. 11. 16:57

네트워킹에 필요한 기조지식

 

 

 

 

네트워킹이란 서버와 앱 간의 데이터를 주고 받는 것이다. 어떻게 주고받을까?

HTTP라는 방법으로 RESTAPI를 이용해서 JSON데이터를 주고받는다.

 

 

HTTP는 우리가 쓰는 웹 브라우져 주소 좌측에 보이는 글자가 있는데 본적이 있는가?

이것은 서버에서 데이터를 받을 때 HTTP방법을 이용하자고 전세계에서 약속한 것이다. 

이렇게 약속한 방법을 통해서 RESTAPI를 서버에서 구성해서 JSON 데이터 파일을 받게된다.

JSON 데이터 파일은 전세계에서 약속한 것은 아니지만, 대부분의 회사에서 사용하고 있는 데이터 타입이다.

 

 

 

 


 

 

 

 

HTTP 기초

 

HTTP: HyperText Transfer Protocol

 

HTTP는 클라이언트(웹 브라우져, 모바일 앱)과 서버 간의 데이터를 어떻게 주고받을 것인지에 대한 규칙이다.

자세하게 설명하면 HTTP는 클라이언트와 서버간의 document를 전달하는 목적으로 만들어진 통신 규약이다. 초기에는 웹서버에서 웹 브라우져에게 HTML에게 document 데이터를 HTTP를 통해서 보내왔다. 인터넷이 폭발적으로 성장하면서 document뿐만 아니라 다양한 데이터를 HTTP를 통해서 보낼 수 있게 되었다. 그래서 지금까지도 HTTP를 통해서 서버와 데이터를 주고 받고 있는 것이다. 

 

정리하면 HTTP는 앱과 서버간의 데이터를 주고받을때 사용하는 통신 규약(규칙) 이다.

 

 

 

 


 

 

 

 

HTTP 동작 방식

 

 

 

서버와 클라이언트는 메세지를 주고 받는 형식으로 의사소통을 한다.

그럼 메세지를 어떻게 주고 받는지가 궁금해질 것이다. 

 

 

 

(1) 앱에서 서버에게 필요한 데이터를 요청하게 된다. (최신곡 TOP100 알려줘~)

 

 

 

(2) 그럼 서버는 요청에 대한 응답으로 해당 데이터를 보내 준다. (JSON형태의 곡 데이터를 보낸다.)

 

 

클라이언트와 서버는 메세지 형태로 데이터를 주고 받는데 요청과 응답으로 데이터를 주고 받는다.

 

 

 

 

 


 

 

 

그럼 여기서 의문점은 Request는 어떻게 보낼 수 있는가?

 

 

 

 

HTTP는 request를 보내는 방식이 4가지가 존재한다.  (HTTP Request Method)

  1. POST (Create) : 새로운 데이터를 해당 URL에 생성을 요구할 때

  2. GET (Read) : 해당 URL에 있는 데이터를 보고싶을 때

  3. UPDATE (Update) : 해당 URL에 있는 데이터를 수정하고 싶을 때

  4. DELETE (Delete) : 해당 URL에 있는 데이터를 삭제하고 싶을 때

 

 

우리가 HTTP Request Method에 대해서 배워 봤는데 실제로 Request를 해볼까?

우리는 일상에서 항상 GET method를 사용하고 있었다. ????

—> 대표적인 예로 주소창에 URL을 검색하면 서버에 HTTP Request를 보내는 행위를 한 것이다.

 

 

URL: Uniform Resource Locator 

URL은 웹 리소스의 주소를 나타낼 때 사용한다. 이것이 document가 되었건, 이미지 파일이 되었건 해당하는 리소스 주소를 알아야 우리가 그것을 달라고 요청할 수 있기 때문이다. URL은 주소다.

이것이 HTTP Request를 요청하는 방법이다.

이로써 우리는 URL을 통해서 서버에 요청을 보낼 수 있음을 알게되었다.

 

 

 

 


 

 

 

 

요청을 보낼 때 내부를 살펴보도록 하자!

 

Request를 보낼때 필요한 정보 요청을 Request의 Headers과 Body로 나누어서 보낸다.

 

 

 

응답(Response) 데이터의 내부를 살펴보도록 하자.

 

 

서버로부터 받은 응답 데이터의 경우에도 Headers와 Body로 나누어져 데이터를 받게된다.

Header에는 아주 중요한 정보인 상태코드를 받게된다.

200은 서버에서 응답을 받는데 아무 문제가 없었다는 것을 의미한다.

Body에서는 실제 Google 페이지의 Html파일이 존재함을 알 수 있다.

이를 통해 구글에 get을 통해 request를 보냈고 서버로 부터 응답을 받았는데 응답으로 Header과 Body를 받에 되었는데, Header에는 상태코드(응답이 제대로 되었는가?)와 Body에는 Contents 가 존재한다.

 

 

 

 

응답 데이터에 있는 Content-Type를 살펴보면 어떤게 어떤 데이터 타입으로 내려왔다는 정보를 알 수 있다. 

 

Content-Type: 어떤 포맷의 데이터가 전달 될 것인가? 를 표시해 주는 것이다.

 

 

 

 

 

 


 

 

 

 

 

HLS (HTTP Live Streaming)

 

 

예전에는 HTTP는 Text 데이터만 보내주기에 급급 했었는데, 통신망 환경의 발달로 텍스트 뿐만 아니라 비디오 스트리밍을 할 때에도 HTTP를 내려주곤 한다.

 

 

예전에는 HTTP로 비디오를 보내기에는 다양한 제약들이 있어서 RTMP라는 다른 프로토콜을 통해서 데이터를 보냈는데, 기술 발달로 요즘에는 HLS를 사용하고 있다.

 

 

 

 

 


 

 

 

 

정리하자

 

HTTP는 서버와 앱(클라이언트) 사이의 통신하는 방법이다.

HTTP를 사용하기 위해서는 적절한 HTTP method와 URL을 이용하면 된다는 것을 알게 되었다.

서버로 부터 요청에 대한 응답이 오고 응답데이터의 Header를 통해 요청에 대한 응답이 성공적 이었는지 아닌지를 확인할 수 있다.

 

 

 

 

 

'IOS application > Networking' 카테고리의 다른 글

5. DispatchQueue는 어떻게 사용할까?  (0) 2021.04.16
4. GCD (Grand Central Dispatch)  (0) 2021.04.15
3. Concurrency (동시성)  (0) 2021.04.14
2. 네트워킹 하는 것을 확인할 수 있는 툴  (0) 2021.04.12
0. Networking  (0) 2021.04.10