본문 바로가기
iOS/iOS

API 방식과 Socket 방식

by 패쓰킴 2025. 5. 27.
728x90

네트워크 연결 상태 확인을 구현해보기 위해 찾아보니 애플에서 Network라는 프레임워크를 지원해주고 있었다.

기존에는 다른 프레임워크들을 사용해야 했는데 WWDC 18 쯤 발표된 듯 하다.

Network 프레임워크를 처음 알게되어 URLSession과 무슨 차이가 있는지 궁금해 찾아보았다.

 

URLSession  -  HTTP 요청시 사용

  • 서버에 REST API 요청을 보내고 데이터를 받는 네트워크 연결, 요청, 응답 등의 단순한 네트워크 통신에 사용된다.

        (예, 로그인 요청, 게시글 목록 가져오기, 이미지 다운로드 등)

  • 고수준의 API이며 HTTP 프로토콜 중심으로 사용되며 동작한다.

 

Network.framework  -  네트워크 연결을 직접 다룸

  • TCP, UDP 등 네트워크 연결의 상태를 감지하거나 서버와의 연결을 유지 하는 등의 네트워크 작업이 필요할 때 사용된다.

        (예, 게임 서버 통신, 채팅 서비스 등)

  •  저수준의 API이며 세세한 네트워크 작업에 사용되며 동작한다.

 


 

간단히 비교해보니 Network 프레임워크소켓 통신에 사용된다는 것을 알 수 있었다. 

 

소켓 통신

서버와 클라이언트가 지속적으로 연결된 상태에서 양방향으로 통신하는 방식

실시간으로 데이터의 요청과 응답을 주고 받아야 하는 서비스인 채팅이나 게임 또는 라이브 스트리밍 같은 것들에 사용될 수 있다.

소켓과 실시간의 차이

소켓 통신 네트워크에서 양방향 데이터 통신을 위한 연결을 말하며 OS 수준에서 제공된다.
실시간 통신 데이터가 지연 없이 즉시 처리되는 통신 개념이다.

+ 실시간 통신은 목표, 소켓 통신은 수단이라고 구분하면 된다.

출처: https://velog.io/@emplam27/CS-그림으로-알아보는-네트워크-소켓-프로그래밍과-Handshaking


그래서 API 방식과 소켓(Network 프레임워크) 방식의 차이를 보면

  API 소켓
연결 상태 요청할 때만 연결 연결을 계속 유지
서버 > 클라이언트 직접은 불가능 즉시 가능
실시간성(Polling) 낮음 높음
트래픽 요청마다 오버헤드 큼 연결 후에는 효율적
구현 쉬움 어려움
API 방식은 트래픽 오버헤드가 크다는 부분이 이해가 안돼서 찾아보니 HTTP 특성 때문에 생기는 차이였다.

1. HTTP는 네트워크 요청시 항상 Header가 붙어야 한다. 
2. 요청이 발생했을 때의 과정이, 서버를 연결하고 네트워크 사용 요청을 하고 응답 후에는 연결이 끊어지는 구조이다.
3. 요청시 응답할 데이터가 없음에도 요청이 발생하면 무조건 응답을 해주어야 한다.

즉, 이러한 특성에 인해 요청과 응답의 절차가 반복되어 추가적인 비용이 생기는 것

 

728x90

댓글