iOS/iOS Swift 개발 일기

iOS swift 네트워크 통신의 종류

Developer-Michelle 2022. 5. 28. 22:23

네트워크 통신이 이루어지는 2가지 방식

1) TCP / UDP 를 사용하는 소켓 방식의 연결성 통신

2) HTTP, HTTPS, SMTP등의 프로토콜을 이용한 비연결성 통신

 

[1. 소켓 방식의 연결 지향 통신]

소켓을 이용한 네트워크 통신 방식은 보통 저수준 (low level) 통신을 통하여 구현됨.

일단 앱과 서버가 연결되면 한쪽에서 명시적으로 끊을 때까지 지속해서 연결을 유지하는 방식

1) TCP 연결: 데이터 유실을 방지하고 완전한 전송을 보장하지만 상대적으로 덜 빠르다

2) UDT 연결: 데이터의 완전한 전송을 보장하지 않지만, 상대적으로 더 빠름.

 

[2. 비연결 지향 통신]

대표적으로 HTTP/HTTPS 프로토콜. 웹 서비스에 주로 사용된다.

비연결성 프로토콜은 요청이 들어오면 이에 맞는 응답을 보낸 후 바로 연결 종료함.

다시 요청하기 위해서는 새롭게 연결 맺어야 함.

웹 서비스 = 데이터만을 주고 받을 수 있도록 설계된 모듈(웹 페이지랑 다름)

웹 서비스는 아키텍쳐 구조애 따라 SOAP, RESTful 방식으로 나눈다. 

데이터 타입에 따라서는 XML, JSON방식에 따라 나눈다.

 

*SOAP 방식

Simple Object Access Protocol

HTTP,HTTPS,SMTP등의 프로토콜을 통해 양쪽에서 XML형태의 메시지를 주고 받도록 구현된 프로토콜.

클라이언트-서버 구조의 메시지 패턴을 많이 사용

Envelope/Header/Body의 세가지 영역으로 구분.

Header- 선택사항. 반드시 포함하지 않아도 되지만, 일단 사용될 때에는 반복이나 보안 및 트랜잭션 정보로 하는 메타 정보 처리

body- 전달하고자 하는 핵심 내용

 

*RESTful 방식

WWW(world wide web)과 같은 분산 하이퍼 미디어 시스템을 위한 소프트웨어 아키텍쳐의 한 형식

REST 는 실질적인 네트워크 프로토콜은 아님.

단순히 네트워크 자원을 정의하고 자원에 대한 주소를 관리하는 방법.

REST란 웹 형식을 빌어 데이터를 전송하되, SOAP나 쿠키 등 별도 전송 프로토콜 없이 전송하기 위해 만들어진 간단한 형식의 인터페이스.

HTTP프로토콜을 바탕으로 필요한 데이터를 별도의 규약 없이 주고받기만 하면 된다.

더 단순화 하자면, 특정 웹페이지를 보기 위해 웹브라우저에 URL을 입력하는 것처럼, 데이터를 요청하는 URI를 네트워크를 통해 서버에 전달하면 서버에서는 그에 맞는 응답 데이터가 전송된다.

 

RESTful 시스템: 일반적으로 서버에게 요청하려는 정보를 URI를 통해서 나타낸다.

요청정보는 URI단위마다 슬래시/로 구분. 

RESTful API구성을 위한 URI에는 정보의 분류 체계만 포함. 

HTTP  :action. GET(데이터 요청), POST(데이터 전송)

 

[데이터 구조와 특성]

XML 방식

:요청에 대한 응답 데이터를 XML포맷으로 제공하는 것.

SOAP, RESTful API 모두 XML방식으로 만들어진 결과를 제공할 수 있다.

 

JSON방식

XML방식:데이터 용량이 지나치게 커진다는 단점 -> 보완 -> 경량의 데이터 교환형식 :JSON

1) 집합 구조: 여러 속성을 정의하는 순서 없는 집합 - {키: 값, 키:값 ..} - JSON객체

2) 리스트 구조: 비슷한 객체가 반복 나열되는 순서화된 리스트 - [객체1, 객체2, 객체3, ... ] - JSON배열

 

1)JSON객체: 사전식 데이터 집합. {키:데이터} (키워드 - 내용) 한 쌍을 이룬다.

문자열을 표현할 때만 큰따옴표를 붙여준다. (큰따옴표- 더블쿼우팅, 작은따옴표 - 싱글쿼우팅quoting)

2)JSON배열: 여러가지 아이템 나열

 

 

[오픈 API와 공공 컨텐츠]

오픈 API: 일부 웹 사이트에서는 공개된 SOAP프로토콜이나 RESTful형식을 사용하여 공공콘텐츠 제공

공공 데이터 포털 

서울 열린 데이터 광장

네이버 오픈 API

 

 

출처: 꼼꼼한 재은씨의 swift 기본편 p590~