1 분 소요

TCP/IP 프로토콜 스택

OSI 모델과의 비교

image

각 계층 간단 설명 + 프로토콜

  • 애플리케이션
    • 네트워크 애플리케이션을 위한 프로토콜 지원
    • 대표 프로토콜 : http, ssh, ftp, dns
    • 메시지를 생성, 트랜스포트 계층에 메시지 전송 부탁
  • 트랜스포트
    • process to process 데이터 전송
    • 대표 프로토콜 : tcp, udp
    • 인터넷 계층에 host 전송 부탁
  • 인터넷
    • host to host 데이터 전송
    • 출발 → 목적지까지 Routing
    • 네트워크 엑세스 계층에 한 hop 전송을 부탁
    • 대표 프로토콜 :
      • IP
      • Routing protocol
      • ARP : ip 주소를 mac 주소로 대응(bind)시키기 위해 사용되는 프로토콜
      • ICMP : 해당 호스트가 없거나, 해당 포트에 떠있는 서버 프로그램이 없는 등의 에러 상황이 발생할 경우 → IP헤더에 기록되어 있는 출발지 호스트로 이러한 에러에 대한 상황을 보내주는 역할을 수행
  • 네트워크 엑세스
    • 인접한 네트워크 element 간의 데이터 전송

웹 통신의 큰 흐름

  • 한 학생이 학교 캠퍼스 네트워크를 통해 www.google.com에 request를 보내고 response를 받는 과정

1. 인터넷에 접속하기

  • ip를 할당 받아야 함
  • first hop router의 ip 주소를 알아야 함
  • 구글의 도메인 이름은 알지만 ip 주소는 모름 → dns 서버에 물어봐야 함 → 그 전에 dns 서버의 주소를 알아야 함

DHCP 프로토콜을 통해 알아냄

image

2. ARP

  • 주소창에 url 치는 순간, HTTP client 프로세스는 DNS client 프로세스를 구동시킴
  • DNS client는 www.google.com의 IP 주소를 물어보는 쿼리 메시지 작성
  • DNS 서버에 가기 위해서는 우선 first hop router를 거쳐야 함.
  • 하지만 현재 gateway router의 IP만 알고, 물리적 네트워크 주소(MAC 주소)는 모름
  • ARP 쿼리를 broadcast하여 first hop router의 mac 주소를 알아냄
  • 이후 dns 쿼리를 담고있는 메시지는 first hop router로 보내진다.

image

3. DNS 사용

  • IP datagram은 캠퍼스 네트워크에서 인터넷으로 broadcast 됨
  • 이때 라우팅 프로토콜들에 의해 생성된 라우팅 테이블을 통해 라우팅된다.
  • 그렇게 DNS 서버에 도달하면 DNS 서버는 도메인 명에 대한 IP 주소를 담아서 노트북에 reply
  • 이제 노트북은 구글의 IP 주소를 알게 되고, 웹 서버로 HTTP request를 보낼 준비가 됨.

4. TCP connection

  • application layer : http
  • transport layer : TCP : syn, synack, ack(+http msg) ⇒ 3 way handshake
  • Internet layer : (목적지) 웹 서버의 IP 주소
  • network access layer : (목적지) gateway router의 mac 주소

5. 응답

  • 구글 웹 서버에서 이 frame을 받으면 IP 계층까지 올려보냄 → 자신에게 온 것이 맞으면 HTTP reply 작성해서 client로 전송