minuco
article thumbnail

네트워크의 기원을 정리해 보고,

URLSession을 공부해 볼 거다.

 

URLSession을 공부함에 있어 필요한 지식은 아니니 "사전지식" 부분은 안 읽으셔도 무방함.

 

사전지식

네트워크 역사

네트워크라는 개념은 서로 자원을 공유할 수 있도록 결합된 각각 독립된 컴퓨터기능의 집합이다.

목적은 지리적으로 분산된 두대 이상의 독립된 컴퓨터가 어떠한 목적을 가지고 결합(연결)된 상태를 의미한다.

 

1971년 미국 국방선을 중심으로 미국의 대학들과 연구기관이 다수 컴퓨터와 단말장치를 디지털 회선으로 접속하여 임의의 컴퓨터에 원격 접속할 수 있는 ARPANET 탄생시킴. 

 

 ARPANET  인터넷의 시초라고 볼 수 있고 인터넷의 기반기술인 패킷 교환(TCP/IP) 네트워크를 최초로 구현되고,

그 이후 1990년대 초에 인터넷상에서 웹 기술을 위해 HTTP 프로토콜이 개발됨.

 

HTTP

HTTP는 하이퍼 텍스트 문서를 교환하기 위해 만들어진 프로토콜이지만,

지금은 클라이언트와 서버 간의 통신을 위한 프로토콜이며, 웹 브라우저와 웹 서버 간의 통신을 위해 사용한다.

즉, HTTP 프로토콜은 인터넷상에서 웹 기술을 위해 개발된 프로토콜로 TCP/IP, UDP 프로토콜 위에서 동작한다.

 

URLSession 하기 전에 REST API를 먼저 알아야 할 거 같더라.

REST API 

 초기에는 정적인 웹 페이지를 HTML로 작성하며, 웹은 대부분 문서 공유를 위해 사용되었다고 한다,

하지만 동적인 웹페이지와 웹 애플리케이션의 발전으로  웹 *리소스(데이터, 이미지, 미디어)에 대한 표준화된 접근 및 조작 방법의 필요성이 비롯되고, 이를 통해 웹 서비스가 개발되어 응용 프로그램이 표준화된 프로토콜과 형식을 사용하여 웹을 통해 서로 통신할 수 있게 됨.

 

REST [Representational(구상적인) State(상태) Transfer(옮기다, 전달(전송)하다)]는 웹 서비스를 구현하기 위한 *아키텍처 스타일

 

RESTful은 REST 원칙을 따르는 웹 서비스를 말하며, 이러한 서비스를 제공하는 API를 REST API라고 한다.

하지만 일반적으로 REST API라고 하면 RESTful 한 API를 의미해 RESTful과 REST API를 혼용해 사용하기도 함.

 

 REST는 클라이언트와 서버 간의 통신에서 *자원(Resource)을 정의하고, 그 자원에 대한 행위를 HTTP 메서드(GET, POST, PUT, DELETE 등)로 표현하여 상태를 주고받는다. 

REST API의 통신방식

 

 

REST API는 HTTP 요청 메서드(GET, POST, PUT, DELETE 등)와 URI를 사용하여 자원(resource)을 나타내고, HTTP 응답 코드(200, 404등)와 함께 반환한다.

 

일반적으로 서버에서 JSON, XML, HTML 등 어떤 방식으로 응답을 줄지 정의해 놈. (주로 JSON을 많이 씀)

 

URI 구조

* HTTP를 사용할 경우 기본적인 port 번호는 80이며, HTTPS 일 경우 443번 포트가 기본 포트 번호임.


 

[*아키텍처 스타일 : 소프트웨어 시스템 구조와 기능을 설계하는 방법론 중 하나로, 시스템의 구성 요소 간의 관계, 그리고 이들이 수행하는 기능에 대한 개념적인 설계를 기술. * 아키텍처 스타일과 아키텍처 패턴은 다른 개념입니다! 아키텍처 패턴은 특정 문제에 대한 해결책을 추상화하고 공통된 구성요소와 패턴을 정형화한 것을 말한다(예: MVC, MVVM)]

[* 자원(Resource)은 객체(entitiy)를 의미하고 URI를 가진다.]


마무리를 지으며,

URLSessrion만 공부하려 했는데..

URLSessrion를 이해하려 하니,

위 내용들을 알아야 할 거 같다는

생각에 정리를 하였습니다.

 

'iOS > Swift' 카테고리의 다른 글

[swift]커스텀 프리뷰사용방법  (0) 2023.04.16
[Swift Network] URLSession  (0) 2023.04.12
[Swift] Closure - 축약  (0) 2023.03.23
[Swift] Closure - escaping  (0) 2023.03.23
[Swift] Closure - Capturing  (0) 2023.03.23
profile

minuco

@minuco

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!