Post

인터넷에 접속하면 벌어지는 일

세줄 요약

  1. 와이파이에 연결된 이후 실제 인터넷 서비스를 사용하는 과정은 세션, 표현, 응용 계층에서 일어남.
  2. 반면, 와이파이에 연결하는 자체는 물리, 데이터링크, 네트워크 계층의 일임.
  3. 1번과 2번의 다리 역할을 해주는 것은 전송계층임. 그래서 TCP/IP 4계층과 OSI 7계층을 아래 그림처럼 대응지을 수 있는 것.

kane

이미지를 누르면 원본 블로그로 이동됩니다.

OSI 7계층 구조

7계층 (응용계층)

  • 사용자와 네트워크 간의 인터페이스를 제공하는 계층이다.
  • HTTP, FTP, SMTP, DNS 등의 프로토콜이 이 계층에서 동작한다.
  • 웹 브라우저, 이메일 클라이언트 등의 애플리케이션이 이 계층에 해당한다.

6계층 (표현계층)

  • 데이터 형식 변환, HTTPS 암호화, 데이터 압축 등을 담당하는 계층이다.
  • TLS/SSL 프로토콜이 이 계층에서 동작하며 암호화와 복호화를 수행한다.

5계층 (세션계층)

  • 연결 세션 수립, 유지, 종료를 관리하는 계층이다.
  • 통신 장치 간의 대화(세션)를 제어하고 동기화한다.

4계층 (전송계층)

  • TCP, UDP 프로토콜이 동작하며 end-to-end 통신을 관리하는 계층이다.
  • 데이터 전송의 신뢰성을 보장하고 포트 번호를 통해 어플리케이션 식별이 이루어진다.

3계층 (네트워크계층)

  • IP주소를 기반으로 패킷 라우팅을 담당하는 계층이다.
  • 서로 다른 네트워크 간의 통신 경로를 결정한다.

2계층 (데이터링크계층)

  • 물리적 네트워크 간의 데이터 전송을 담당하는 계층이다.
  • 이더넷, 와이파이 등의 프로토콜이 이 계층에서 동작한다.
  • MAC 주소를 사용하여 데이터 프레임을 전송한다.

1계층 (물리계층)

  • 비트 단위의 데이터를 전기 신호로 변환하는 계층이다.
  • 케이블, 허브, 리피터 등의 물리적 장치가 이 계층에 해당한다.

웹 브라우저 연결 과정 (OSI 계층과 연결)

1. 브라우저 실행 (응용계층)

  • 사용자가 웹 브라우저 애플리케이션을 실행하는 단계이다.

2. 브라우저 주소창에 방문하려는 웹사이트 URL 입력 (응용계층)

  • URL과 URI의 차이점:
    • URI가 상위 집합이고, 그 안에 URL이 하위집합으로 존재한다.
    • URL 형식: protocol://host[:port]/path[?query][#fragment]
  • 웹사이트 URL은 보통 http://도메인주소의 형태로 이루어져 있다.
    1
    2
    3
    4
    5
    
    www.example.com
     │     │     │
     │     │     └── 최상위 도메인(TLD): .com
     │     └────── 2차 도메인(SLD): example
     └────────── 서브도메인: www
    
  • 도메인 주소는 왜 필요할까
    • 누군가의 전화번호를 기억하듯이 IP주소 자체를 기억하는건 쉽지 않다. 고로 마치 주소록에서 00의 연락처를 찾듯, 도메인 이름을 00이라는 사람의 이름이라 생각하고 이를 응용계층이 찾는 것이다.
  • 서브도메인 사용 여부:
    • 과거에는 웹사이트, 이메일, 도서관 검색 등 모든 네트워크 URI를 별도로 구성해야 했다.
    • 고로 웹사이트로 연결되는 URI의 경우엔 서브 도메인에 www를 지정했다.
    • 하지만 현재는 하나의 웹사이트 안에서 거의 모든 기능을 처리할 수 있기때문에 서브도메인을 생략하는 추세다.

3. DNS 조회 - 도메인을 IP 주소로 변환 (응용계층)

  • 브라우저는 입력한 웹사이트 URL 중 도메인 부분을 IP 주소로 변환한다.
  • DNS 조회 순서:
    1. 로컬 캐시 확인:
      • 브라우저의 DNS 캐시 확인
      • 운영체제의 DNS 캐시 확인
      • 라우터 캐시 확인
    2. Local DNS 서버 조회:
      • 위 캐시에 없는 경우, 사용자의 ISP(통신사)가 제공하는 Local DNS 서버에 요청
    3. 재귀적 쿼리(Recursive Query) 시작:
      • Local DNS 서버 캐시에도 정보가 없는 경우
      • 전 세계에 분산된 Root DNS 서버에 먼저 질의
      • Root DNS는 TLD(Top-Level Domain) DNS 서버 정보 제공
      • 왜 재귀적 쿼리일까? -> Root DNS → TLD DNS → Authoritative DNS
    4. TLD DNS 서버에 쿼리:
      • 예: .com, .org, .net, .kr 등의 도메인을 관리하는 서버
      • TLD DNS는 해당 도메인의 Authoritative DNS 서버 정보 제공
    5. Authoritative DNS 서버에 쿼리:
      • 실제 도메인(예: naver.com)을 관리하는 네임서버
      • 요청한 도메인의 IP 주소 정보 제공
    6. 응답 전달 및 캐싱:
      • Authoritative DNS 서버로부터 받은 IP 주소를 Local DNS 서버가 캐싱
      • Local DNS 서버가 사용자(브라우저)에게 IP 주소 전달
      • 브라우저와 운영체제도 해당 정보를 캐싱 -> 추후 빠르게 접속 가능

4. TCP/UDP 연결 수립 (전송계층)

  • IP주소와 TCP(Transmission Control Protocol)/ UDP(User Datagram Protocol) 연결을 수립한다.
    • IP는 출발지에서 목적지까지 패킷을 전달하는 용도로, 어떤 애플리케이션에 전달할지는 TCP/UDP가 결정한다.
  • 3-way handshake 과정: (전송계층)
    1. 클라이언트 → 서버: SYNchronize(동기화) 패킷
    2. 서버 → 클라이언트: SYN-ACK 패킷
    3. 클라이언트 → 서버: ACKnowledgement(승인) 패킷
  • 연결 종료 시 4-way handshake: (전송계층)
    • 페이지 이동 시(라우터 변경 시) 4-way handshake 과정이 발생한 후 새로운 3-way handshake가 진행된다.
    • 단순히 탭을 닫을 때는 타임아웃으로 연결이 종료된다. 고로 어떤 한 사이트에서 로그아웃을 하지 않고 그냥 브라우저 탭을 닫으면 세션이 만료되지 않는 한 로그인 상태가 유지되는 것이다.
  • TCP와 UDP의 차이:
 TCPUDP
연결 방식연결 지향형: 전송 전에 연결을 설정.비연결 지향형: 연결 없이 데이터를 전송.
신뢰성
오류 처리OX
속도상대적으로 느림상대적으로 빠름
순서 보장OX

5. HTTP 요청 전송 (응용계층)

  • TCP 연결이 수립되면 브라우저는 HTTP 요청을 서버로 보낸다.
    • HTTPS 연결 시 TLS handshake (표현계층):
      • 보안 연결을 위해 SSL/TLS 프로토콜이 작동한다.
      • 암호화 알고리즘과 키 교환이 이루어진다.
  • GET, POST 등의 메서드를 사용한다.
  • 쿠키, 사용자 에이전트 정보 등이 포함된다.

6. 서버 처리 (응용계층)

  • 웹 서버가 요청을 받아 처리한다.
  • 데이터베이스 조회, 서버 측 스크립트 실행 등이 이루어진다.

7. HTTP 응답 수신 (응용계층)

  • 서버가 처리한 결과를 HTTP 응답으로 클라이언트에게 전송한다.
  • HTML, CSS, JavaScript 등의 리소스가 포함된다.

8. 브라우저 렌더링 (응용계층)

  • 받은 HTML, CSS, JavaScript를 해석하여 웹 페이지를 화면에 표시한다.
  • 렌더링 엔진이 DOM 트리와 CSSOM 트리를 구성하고 렌더 트리를 만들어 화면에 출력한다.

질문

  • 왜 브라우저 주소창에 google.com 과 같이 도메인 주소만 입력해도 그 사이트로 이동될까?
    • 브라우저가 제공해주는 편의임. 브라우저가 알아서 https:// 과 같이 프로토콜을 자동으로 입력해서 그 사이트로 이동해주는거다.
  • 왜 HTTP는 응용계층에서 일어나는데 HTTPS는 표현계층에서 일어나는가?
    • 크게 보면 둘 다 응용계층에서 일어나는게 맞다. HTTPS가 HTTP의 일부니까.
    • 그치만 HTTPS는 이름에서부터 HTTP에 Secure(보안) 기능을 추가한 프로토콜이며 이 때 암호화를 하는 과정은 표현계층에서 일어난다.
    • 고로 엄밀히 말하면, HTTPS는 응용계층의 HTTP 프로토콜과 표현계층의 TLS/SSL을 함께 사용한다.
  • 온라인 화상 회의는 UDP를 사용하고 라이브 스트리밍은 TCP를 사용한다?
    • zoom이나 google meet과 같은 온라인 화상 회의 플랫폼은 WebRTC를 사용하고,
    • 치지직이나 트위치 같은 온라인 라이브 스트리밍 플랫폼은 HLC를 사용하는 걸로 알고있다.
    • 근데 WebRTC는 UDP 기반 통신 기술이고, HLC는 TCP 기반 기술이다.

      Is WebRTC a TCP or UDP?

      WebRTC is a unique browser protocol because it transmits its data over UDP instead of TCP, like most others.

    • 나는 개인적으로 방송을 볼 때 지연 없이 보여지는게 좋다 생각해서 그럼 UDP 통신이 나은거 아닌가? 왜 TCP 기반 기술을 쓰지? 라는 생각을 했는데
    • 게임 방송일 경우엔 화질이 깨지면 서터레서.를 엄청 받으니까 TCP 기반 기술을 사용하는듯 하다.

      생각해보니 나도 타르코프 방송은 눈 아파서 잘 못 봤음. 보통 TV로 보는데 잔디밭 나오면 지옥 시작임.

    • 결론적으로 보통 UDP는 즉시성이 중요할 때 사용하고, TCP는 약간의 지연이 있더라도 화질을 좀 더 깨끗하게 전달하는게 좋을 때 사용하는듯.
    • 이 질문에 대해선 좀 더 알아봐야 될 것 같긴하다.
  • 왜 TCP/IP 4계층이라 부르는가? UDP/IP 라고도 부를 수 있는 것 아닌가?
    • UDP는 TCP가 나온 지 6년 뒤에 생겼고,
    • 그때쯤엔 이미 IP가 네트워크 계층의 대세가 됐기 때문에,
    • 굳이 “UDP/IP”라고 새로 부를 이유가 없었다고 한다.
    • TCP도 IP 위에서 동작하는 프로토콜이고, UDP도 IP 위에서 동작하는 프로토콜 이니까.
    • 참고로 “IP가 대세가 됐다”는 말이 잘 이해되지 않아서 더 찾아봤는데, 옛날에는 네트워크 계층에 IPX/SPX 와 같은 다양한 프로토콜이 많았다고 한다.
    • 근데 IPX/SPX는 LAN 기반이라 한 장소 안에서만 쓰일 수 있었다. 인터넷 연결은 다 WAN이지 않는가. 그래서 이런 프로토콜은 점차 사라지고 네트워크 계층엔 IP가 자리잡게 된거다.

참고

This post is licensed under CC BY 4.0 by the author.