URLSessionDataTask의 `resume()` 호출 시 발생하는 일련의 과정을 네트워크 계층별로 상세히 설명함
Application Layer에서 URLSession, HTTP, DNS, 쿠키(Cookies) 등의 역할과 동작 방식을 분석함
Transport Layer의 TCP, UDP, QUIC 프로토콜의 특징과 iOS에서의 활용 방안을 제시함
Network Layer의 IP 프로토콜과 라우터(Router)의 역할, IPv4/IPv6 주소 체계를 설명함
URLSession은 네트워크 요청의 시작점이며, HTTP, DNS, 쿠키(Cookies) 등 애플리케이션 레이어(Application Layer)의 핵심 요소들을 다룬다. 특히, URLSessionDataTask의 `resume()` 호출은 내부적으로 Grand Central Dispatch와 NSOperation을 사용하여 데이터 경합(Data Race)을 방지한다. FoundationNetworking 라이브러리는 curl을 기반으로 하며, 멀티플렉싱(Multiplexing)을 통해 TCP 연결(TCP Connection)을 효율적으로 관리한다.
Transport Layer에서는 TCP, UDP, QUIC과 같은 프로토콜이 사용되며, IP 프로토콜의 비신뢰성을 보완한다. TCP는 신뢰성 있는 연결을 제공하며, 세그먼트(Segment)를 사용하여 데이터 전송의 신뢰성을 확보한다. TCP 세그먼트(TCP Segment)는 시퀀스 번호, 응답(Ack), 체크섬(Checksum) 등을 포함하여 데이터의 무결성을 보장한다. QUIC 프로토콜(QUIC Protocol)은 UDP 기반으로 빠른 연결을 제공한다.
Network Layer는 IP 프로토콜을 사용하여 데이터그램(Datagram)을 목적지로 전송한다. 라우터(Router)는 데이터그램을 전달하고 버퍼링하는 역할을 수행하며, IPv4와 IPv6 주소를 사용하여 네트워크를 구성한다. IPv6 주소(IPv6 Address)는 IPv4의 주소 부족 문제를 해결하기 위해 도입되었으며, 라우터는 포워딩 테이블(Forwarding Table)을 기반으로 데이터그램을 전송한다.
Link Layer는 인접한 네트워크 요소 간에 프레임(Frame)을 전송하며, Wi-Fi, 셀룰러(Cellular) 등 다양한 연결 방식을 지원한다. Wi-Fi(IEEE 802.11)는 공유 매체(Shared Medium)를 사용하므로, 다른 장치와의 경쟁을 통해 전송 속도가 결정된다. Physical Layer는 비트(Bit)를 전송하는 역할을 하며, 전압 변화, 빛의 펄스, 전자기파 등을 사용하여 데이터를 전송한다. iPhone 4의 안테나 설계 문제는 물리 계층의 중요성을 보여주는 사례이다.