네트워크 통신 간단하게 HTTP(S) in iOS

장수빈·2025년 6월 18일

CS

목록 보기
10/14

네트워크 프로토콜 스택

네트워크 프로토콜 스택 (TCP/IP 4계층 모델 기준)

계층설명관련 프로토콜
애플리케이션 계층사용자 인터페이스, 데이터 표현HTTP, HTTPS, DNS
전송 계층신뢰성 있는 전송TCP, UDP
인터넷 계층라우팅 및 주소 지정IP
네트워크 인터페이스 계층물리적 네트워크 연결Ethernet, Wi-Fi
  • iOS에서의 네트워크 통신 방식
    iOS앱에서는 주로 URLSession, Alamofire 등으로 HTTP(S) 통신을 수행
    앱은 Application 계층에서 URL 요청을 구성하며, 내부적으로 TCP/IP스택이 통신을 처리

HTTP&HTTPS

항목HTTPHTTPS
암호화❌ 없음✅ TLS로 암호화
포트 번호80443
보안성낮음높음
인증없음서버 인증서 사용 (신뢰된 CA로부터 발급)
무결성없음✅ 메시지 위조 방지 기능
  • HTTPS는 SSL/TLS를 통해 데이터를 암호화 + 인증 + 무결성 보장

HTTPS로 보호되는것(기밀성, 무결성, 인증)

보호 대상설명
기밀성 (Confidentiality)데이터를 대칭키로 암호화 → 중간 공격자(MITM)가 내용을 볼 수 없음
무결성 (Integrity)데이터 위조 방지 → 해시값(HMAC) 비교로 확인
인증 (Authentication)서버가 신뢰할 수 있는 대상인지 확인 → CA로 서명된 인증서 사용

iOS에서 HTTP 통신 시 기본 제한 (ATS - App Transport Security)

  • iOS 9 이후 기본적으로 HTTPS만 허용
  • 이는 ATS(App Transport Security) 때문으로, 보안되지 않은 HTTP 요청은 거부

우회방법

<!-- Info.plist -->
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

App Store 심사 거절 사유가 될 수 있으므로, 특정 도메인만 예외로 설정하는 것이 권장

SSL/TLS의 동작원리 (handshake 과정 요약)

Client Hello
클라이언트가 사용 가능한 암호화 알고리즘 목록과 랜덤값 전송

Server Hello
서버가 선택한 알고리즘 + 서버 인증서 전달

서버 인증서 점검
클라이언트는 인증서 체인 + 유효기간 + 도메인 일치 여부 확인

Pre-Master Secret 생성 -> 키 공유
RSA or DH 방식으로 세션키 생성 (이후 대칭키로 통신)

Finished
핸드셰이크 완료 후 암호화된 세션 시작

인증서 유효성 확인(CA, 인증서 체인)

인증서는 CA(Certificate Authority) 라는 신뢰된 기관이 발급

클라이언트는 다음을 확인

  1. 인증서의 발급자(CA)가 신뢰 가능한 기관인지 (루트 인증서 확인)
  2. 도메인 이름이 인증서의 대상과 일치하는지
  3. 인증서의 유효기간이 맞는지
  4. 인증서 체인이 완전한지(Intermediate -> Root까지 연결되는지)

*iOS는 자체적으로 신뢰하는 Root CA목록을 보유하고 있으며, 이를 기준으로 인증서 유효성 검사*


OSI 7계층? TCP/IP 4계층?

항목OSI 7계층TCP/IP 4계층
개발 주체ISO (국제표준화기구)미국 국방부 (DARPA)
계층 수7계층4계층
이론 vs 실제이론적인 참조 모델실제 구현 기반 모델
사용 목적통신의 표준화와 설계 가이드실제 인터넷 프로토콜 스택 기반
현재 쓰임교육, 분석용인터넷의 실제 표준

대응 관계

OSI 계층TCP/IP 계층
7. 응용 (Application)→ Application
6. 표현 (Presentation)→ Application (암호화, 인코딩 등 포함됨)
5. 세션 (Session)→ Application (세션 유지 등 포함됨)
4. 전송 (Transport)→ Transport (TCP, UDP)
3. 네트워크 (Network)→ Internet (IP)
2. 데이터링크 (Data Link)→ Network Access
1. 물리 (Physical)→ Network Access
profile
iOS 공부 이모저모 낙서장

0개의 댓글