CSE/Network

[혼공네트] Ch05. 응용 계층

Opal1031 2026. 4. 14. 15:05
※ 본 포스트는 [강민철, 『혼자 공부하는 네트워크』, 한빛미디어] 복습을 위해 작성된 글입니다.

※ 비영리적인 순수한 학습 기록용이며, 원저작물의 권리는 저자 및 출판사에 있습니다.

※ 저작권 문제가 있을 경우, 즉시 수정 또는 삭제하겠습니다.

1️⃣ DNS와 자원

01. 도메인 네임과 네임 서버

  • 도메인 네임
    호스트의 IP 주소와 대응되는 문자열 형태의 호스트 특정 정보

  • 네임 서버
    도메인 네임과 IP 주소를 관리하는 서버

    • 도메인 네임을 관리하는 네임 서버는 DNS 서버라고도 함
  • 도메인 네임의 계층적 분류

    루트 도메인 > 최상위 도메인 > 2단계 도메인 > ...
    • 전체 주소 도메인 네임(FQDN)
      도메인 네임을 모두 포함하는 도메인 네임

      • FQDN의 첫 번째 부분을 호스트 네임이라고 함
  • 도메인 네임 시스템 (Domain Name System, DNS)
    계층적이고 분산된 도메인 네임에 대한 관리 체계

02. 계층적 네임 서버

  • 리졸빙(resolving)
Client > 로컬 DNS 서버 > 루트 DNS 서버 > TLD 서버 > 책임 서버 > Host
  • 로컬 네임 서버
    클라이언트가 도메인 네임을 통해 IP 주소를 알아내고자 할 때 가장 먼저 찾게 되는 네임 서버

  • 루트 네임 서버
    루트 도메인을 관장하는 네임 서버

    • 질의에 대해 TLD 네임 서버의 IP 주소 반환 가능
  • TLD 네임 서버
    TLD를 관리하는 네임 서버

    • TLD의 하위 도메인 네임을 관리하는 네임 서버 주소를 반환 가능
  • 책임 네임 서버
    특정 도메인 영역을 관리하는 네임 서버

    • 자신이 관리하는 도메인 영역의 질의에 대해서는 다른 네임 서버에게 떠넘기지 않고 곧바로 담할 수 있는 네임 서버
  • 재귀적 질의 vs 반복적 질의

질의 방식
재귀적 질의 재귀적으로 서버들이 다음 단계에 질의하는 과정을 반복하며 최종 응답 결과를 역순으로 전달받는 방식
반복적 질의 각 서버가 다음으로 질의할 네임 서버의 주소를 알려주며 최종 응답 결과를 클라이언트에게 알려주는 방식
  • DNS 캐시 (DNS Cache)
    TTL 동안의 시간만큼 도메인 네임의 질의 결과를 임시 저장하는 것

03. 자원을 식별하는 URI

  • 자원
    네트워크상의 메시지를 통해 주고받는 대상

  • URL vs URN

URI 방식
URL 위치를 이용해 자원을 식별하는 방식
URN 이름을 이용해 자원을 식별하는 방식
  • URL
    scheme(자원에 접근하는 방법) + authority(호스트를 특정할 수 있는 정보) + path(자원이 위치한 경로) + query(자원의 세부 내용을 알려주는 정보) + fragment(자원의 한 조각을 가리키기 위한 정보)

※ <좀 더 알아보기> - DNS 레코드 타입

레코드 유형 설명
A 특정 호스트에 대한 도메인 네임과 IPv4 주소와의 대응 관계
NS 특정 호스트의 IP 주소를 찾을 수 있는 네임 서버
MX 해당 도메인과 연동되어 있는 메일 서버

2️⃣ HTTP

01. HTTP의 특성

  • 요청-응답 기반 프로토콜
    클라이언트-서버 구조 기반의 요청-응답 프로토콜

  • 미디어 독립적 프로토콜
    주고받을 미디어 타입에 특별히 제한을 두지 않고 독립적으로 동작이 가능한 미디어 독립적인 프로토콜

  • Stateless 프로토콜
    서버가 HTTP 요청을 보낸 클라이언트와 관련된 상태를 기억하지 않음

  • 지속 연결 프로토콜
    하나의 TCP 연결상에서 여러 개의 요청-응답을 주고 받을 수 있는 기술로, HTTP/1.1 이상에서 제공하는 기술

02. HTTP 메시지 구조

  • HTTP 요청 메시지
method URL Version - 요청 라인 (request line)
header field value - 헤더 라인 (header line)
...
header field value

Entity body        - 개체 몸체 (entity body)
  • HTTP 응답 메시지
version status_code phrase - 상태 라인 (status line)
header_field_name value    - 헤더 라인 (header line)
...
header_field_name value

Entity body                - 개체 몸체 (entity body)

03. HTTP 메서드

HTTP 메서드 설명
GET 자원을 습득하기 위한 메서드
HEAD GET과 동일하나, 헤더만을 응답받는 메서드
POST 서버로 하여금 특정 작업을 처리하게끔 하는 메서드
PUT 자원을 대체하기 위한 메서드
PATCH 자원에 대한 부분적 수정을 위한 메서드
DELETE 자원을 삭제하기 위한 메서드

04. HTTP 상태 코드

상태 코드 이유 구문 설명
200 OK 요청이 성공했음
404 Not Found

※ <좀 더 알아보기> - HTTP의 발전(HTTP/0.9 ~ HTTP/3.0)

버전 주요 특징 전송 방식 지속 연결 요청/응답 형식 주요 개선점
HTTP/0.9 가장 초기 버전, 단순한 요청/응답 텍스트 기반 (GET만 지원) 비지속 연결 HTML 문서만 응답 헤더 없음, 매우 단순
HTTP/1.0 헤더 추가로 유연한 통신 가능 텍스트 기반 비지속 연결 (요청마다 연결) 헤더 + 본문 다양한 콘텐츠 타입 전송 가능
HTTP/1.1 가장 널리 사용된 버전 텍스트 기반 지속 연결 (Keep-Alive) 헤더 + 본문 파이프라이닝, 캐싱, 호스트 헤더
HTTP/2.0 성능 향상 중심 바이너리 기반 지속 연결 헤더 + 본문 (프레임 단위) 멀티플렉싱, 헤더 압축, 서버 푸시
HTTP/3.0 최신 버전, 지연 시간 최소화 QUIC (UDP 기반) 지속 연결 프레임 단위 (스트림) 연결 복원, 패킷 손실 최소화, 빠른 전송

3️⃣ HTTP 헤더와 HTTP 기반 기술

01. HTTP 헤더

  • 요청 시 활용되는 HTTP 헤더
구분 헤더 이름 설명
요청 Host 요청이 전송되는 서버의 도메인 이름과 포트 번호를 지정
요청 User-Agent 클라이언트(브라우저, 앱 등)의 정보 전달
요청 Referer 현재 요청을 보낸 이전 웹페이지의 주소
요청 Authorization 사용자 인증 정보를 서버에 전달 (예: 토큰, 자격 증명)
  • 응답 시 활용되는 HTTP 헤더
구분 헤더 이름 설명
응답 Server 응답을 생성한 서버의 소프트웨어 정보
응답 Allow 클라이언트가 사용할 수 있는 HTTP 메서드 목록 명시
응답 Retry-After 요청을 다시 시도하기까지 대기해야 하는 시간 명시
응답 Location 클라이언트를 다른 URL로 리다이렉션할 때 사용
응답 WWW-Authenticate 인증이 필요한 자원 접근 시 인증 방법을 제시
  • 요청과 응답 모두에서 활용되는 HTTP 헤더
구분 헤더 이름 설명
공통 Date 메시지가 생성된 날짜와 시간 정보
공통 Connection 연결을 유지할지 여부 설정 (예: Keep-Alive, close)
공통 Content-Length 메시지 본문의 길이(바이트 단위)
공통 Content-Type 전송되는 데이터의 MIME 타입 지정 (예: text/html)
공통 Content-Language 콘텐츠의 언어 정보 명시
공통 Content-Encoding 콘텐츠 압축 방식 명시 (예: gzip, deflate)

02. 캐시

  • 캐시
    불필요한 대역폭 낭비와 응답 지연을 방지하기 위해 정보의 사본을 임시로 저장하는 기술

03. 쿠키

  • 쿠키
    서버에서 생성되어 클라이언트 측에 저장되는 데이터로, 상태를 유지하지 않는 HTTP의 특성을 보완하기 위한 수단

04. 콘텐츠 협상과 표현

  • 콘텐츠 협상
    같은 URI에 대해 가장 적합한 자원의 형태를 제공하는 매커니즘

📚 회고

드디어 마지막 5장, 응용 계층(L5) 공부를 마쳤다.
사실 책을 통해 학습은 이미 끝냈지만, ‘컴퓨터 네트워크’ 수업에서 각 계층을 하향식으로 배우고 있어 포스팅은 조금 미뤄두었다.
중간고사 범위와 겹치다 보니 이번 기회에 내용을 한 번 더 다지고, 복습하는 마음으로 정리했다.
일부 표현 방식은 달랐지만 큰 틀은 같았고, 덕분에 이전에 정리한 내용까지 포괄적으로 정리할 수 있었다.
이로써 이론 파트는 모두 마무리하였다. 이제 남은 6~7장은 와이어샤크 실습이니, 겨울방학 때 실제로 손에 익혀볼 계획이다.