School Lecture Study/컴퓨터 통신

19. IP 패킷 실제 전달 과정

vㅔ로 2022. 12. 27. 21:37
728x90

Addressing : packet forwarding to another LAN

  • walkthrough : datagram을 R을 통해 A에서 B로 전송한다.

  • A는 B의 IP 주소를 안다 : by DNS
  • A는 R의 IP 주소를 안다 : by DHCP
  • A는 R의 MAC 주소를 안다 : by ARP

  • A가 출발지를 A, B로 하는 IP datagram 생성
  • A는 R의 MAC주소를 목적지 주소로 하는 link-layer frame을 생성하고, frame은 A-to-B의 IP datagram을 포함한다. (encapsulation)

  • frame은 A에서 R로 전송된다.
  • R은 frame을 받고, datagram을 삭제하고, IP로 전달한다.

  • R은 A-B로 이동하는 datagram forward
  • R은 B의 MAC 주소를 목적지 주소로 하는 link-layer frame을 생성한다. frame은 A-to-B IP datagram을 포함한다. (encapsulation)

  • B에 전달

주소 번역 (Address Translation)

  • 인터네트는 논리적 (가상) 네트워크
    • 계층 하위에 있는 물리적 네트워크 / 링크에게 전달 위임
  • 위임할 때, IP 주소를 해당 물리적 (physical) 주소로 변환해야 한다. (MAC 주소)
    • Ex. IP주소 ⇒ 이더넷 주소
    • 변환이 필요한 주소는 (목적지 호스트 or 다음 홉 라우터)
  • 필요한 주소를 어떻게 알아낼까?
    • IP 주소의 호스트 부분에 물리적 주소를 인코드 시켜 넣어준다.
      • IPv4에서는 불가능 ; IPv6에서 채택 (IP 주소를 물리적으로 encoding)
    • 테이블 기반

→ ARP (Address Resolution Protocol)

  • IP 주소와 물리적 주소가 바인딩되어 있는 테이블 구축 담당
  • IP 주소가 테이블에 없다면 요청을 브로드캐스트한다.
  • 해당 호스트는 자신의 물리적 주소(MAC)를 보내준다.
  • 오랫동안 사용되지 않는 엔트리는 없애준다. (soft state)
  • 프로토콜 계층에서의 위치?
    • IP 계층으로부터 IP 주소를 받고 MAC 주소를 돌려준다.
    • Ethernet을 사용하여 MAC 주소를 얻어온다.

ARP 동작 과정

  1. A가 broad casting으로 B에 대한 요청을 보낸다. (IP를 이용하여 찾기)
  2. B가 아닌 노드들은 응답하지 않는다.
  3. B는 MAC 주소를 응답한다.

ARP 프로토콜

  • 요청 형식 (Request format) - 가장 일반적인 경우를 고려한다.

  • HardwareType (16) : 물리적 네트워크의 유형 Ex. 이더넷
  • ProtocolType (16) : 상위 계층의 프로토콜 유형 Ex. IP
  • HLEN & PLEN (각 8) : 물리적 주소와 프로토콜 주소의 길이
  • Operation (16) : 요청 또는 응답 (요청인지 응답인지)
  • Source / Target Physical / Protocol addresses
    • Source : 출발지
    • Target : 목적지
    • Hardware Addr : MAC 주소
    • Protocal Addr : (주로) IP 주소
    • MAC 주소가 48bit이기 때문에 32 / 16 비트로 나눠 보낸다.
  • 특징
    • 테이블의 엔트리는 약 10분의 타임아웃을 갖는다.
    • 요청에 대한 목적지에서는 발신지 주소로 테이블을 갱신한다.
    • 엔트리가 이미 있다면 테이블을 갱신하고 타임아웃을 연장한다.

호스트 구성 (Configuration) : DHCP

  • IP 주소 배정의 문제
    • IP 주소는 네트워크의 구조를 반영해야 한다.
    • 즉, 같은 네트워크에 있는 다른 호스트들의 주소와 앞부분이 같아야 한다.
  • IP 주소 이외에도 구성 정보가 필요하다.
    • default router, name server (domain name을 알면 IP를 알아낼 수 있음)
  • 편의를 위해 자동 구성 기능이 필요하다.
  • ⇒ DHCP (Dynamic Host Configuration Protocol)

DHCP 동작

  • DHCP 서버
    • a pool of available addresses 를 관리한다.
    • 클라이언트의 요청에 대해 구성 정보를 제공한다.
    • address lease도 가능
  • DHCP relay(전달)
    • 구성 정보 요청을 서버로 전달
  •  Server discovery
    • DHCPDISCOVER 메시지를 브로드캐스팅
    • Ethernet이 메시지를 전송한다.
    • IP를 거치지 않고 MAC 주소를 바로 보내는 것

공유기란?

  • 하나의 인터넷 주소를 여러 호스트가 공유해서 사용한다는 말에서 유래했다.
  • 대개는 wireless router
  • 인터넷 서비스 업체 (ISP)는 인터넷 링크 연결을 제공하면서, 하나의 IP 주소를 DHCP로 할당한다.
  • 공유기는 내부 LAN의 여러 호스트들에게 인터넷 접근을 제공한다.
    • 유선 LAN 지원 : LAN Switch
    • 무선 LAN 지원 : AP (Access Point)
    • IP 패킷을 내외부로 전달 : IP 라우터
    • LAN 내부에서 사설 IP 주소 (10.xx.xx.xx, 192.168.xx.xx) 사용 지원 : DHCP 서버
    • 하나의 IP 주소를 여러 호스트가 사용 → NAT (Network Address Translation)
      • TCP / UDP 포트 번호를 활용해서 주소 변환 : (10.0.0.1, 2001) ↔ (138.76.29.7, 5001)
    • 보안지원 : Firewall(방화벽) - 패킷 필터링

NAT : network address translation

  1. host 10.0.0.1이 128.119.40.186, 80으로 data gram 전송
  2. NAT router가 datagram의 source addr을 10.0.0.1, 3345 에서 138.76.29.7, 5001로 변경한다. table 업데이트 수행.
  3. destination address에 도착한다.
  4. NAT router는 datagram 138.76.29.7, 5001을 10.0.0.1, 3345로 변경한다.
  • 패킷이 나갈 때 주소를 저장한다.

ICMP (Internet Control Message Protocol)

  • IP 동작을 보조하기 위한 제어 프로토콜
    • IP 자체에 포함시키지 않고, 별도의 프로토콜 (out-of-band 기법) → 확장성을 챙길 수 있다.
  • 기능 면에서 보면 IP의 동료 (companion protocol)
    • 실제 계층 면에서는 IP의 user (ICMP가 IP의 상위 계층)힌트 수준 : 반드시 필요하지는 않음 ⇒ IP로 전송 (오면 좋고 아님 말고)

  • PC1의 icmp echo request → PC2의 icmp echo reply
  • ping이라는 응용 프로그램이 ICMP 프로토콜을 사용하여 ICMP에게 전달하라는 ‘논리적 명령’ 내림 → 실제로는 IP를 사용하여 수행
  • 전송 시 R1에서 문제가 발생하면 패킷을 버리고 버린 이유를 알려준다. R1의 ICMP 계층이 H0의 IP를 거쳐 H0의 ICMP로 전달된다.

ICMP (Internet Control Message Protocol)

  • 제어 작업 내용
    • 응답 (Echo) - ping이 사용
    • 라우터의 변경 (라우터에서 발신지로)
    • 라우터가 패킷을 버리는 것
      • 목적지에 도착하는 것이 불가능
        • 프로토콜, 포트, 또는 호스트 등의 이유
      • TTL을 초과한 경우 (데이터 그램이 계속 네트워크를 배회하는 일이 없다)
      • 체크섬이 실패한 경우
      • 재조립을 실패한 경우
      • 단편화를 할 수 없는 경우

가상 네트워크 (Virtual Networks)

  • 실제의 물리적 연결과 독립적으로 연결 / 구축되는 네트워크
    • 즉, 물리적 네트워크 위에 떠 있는 가상의 네트워크
  • 예. VPN (Virtual Private Networks)
    • 전용선 대신 공용 네트워크를 이용하여 사설망을 구축한다. (가상 link 만들기)
    • IP 망을 통한 사설망 구축
      • IP는 모든 노드가 서로 통신 가능; connectivity 제어가 불가능하다.
      • IP 터널링 기법 (안 보이게 터널을 뚫는 것)

IP 터널링 (Tunneling)

  • 임의의 네트워크 사이에 두고 있는 한 쌍의 노드 사이를 연결하는 점대점 링크
  • 즉, 라우터 간의 가상 링크 (virtual link)
    • 실제 네트워크 위에 가상 링크를 빌드하는 것
    • 실제 네트워크와 관련 없다.
    • 참고 ) IP는 이미 실제 네트워크를 가상 링크로 간주하는 가상네트워크
    • 가상 네트워크 위에 다시 가상 네트워크를 빌드할 수도 있다.

  • 구현
    • 링크 양 끝 노드를 발신지 / 목적지로 하여 IP encapsulation (IP 헤더를 한 번 더 감싸는 것)
    • ternel entry point, tunnel exit point 존재.
    • tunnel entry point에서 header encapsulation과 함께 패킷 암호화, tunnel exit point에서 decapsulation & decryption 수행

터널링 / 가상네트워크 사용 이유

  • 보안 (초기 용도)
    • 공용 네트워크 안에서 사설 링크 구현
    • 암호화와 함께 사용 가능
    • Ex. 외부에서 인트라넷 사용

  • 특수 기능 구현
    • 특수 기능을 가지는 가상 네트워크 구현
    • Ex. 인터넷을 쓰지 않고 다른 네트워크 사이의 프로토콜을 만들 수도 있다.
    • Ex. 멀티캐스트 라우팅 기능을 가지는 라우터들의 가상 네트워크 구축 (Internet의 라우터들은 잘 지원해주지 않음)
    • ⇒ Mbone (Multicast Backbone) - 1:1 N번 수행 대신 1:N
  • 비 IP 패킷의 IP망을 통한 전달
    • Ex. IPv6 패킷의 전달; IPV6망으로의 이전 방법

VPN 서비스

  • 차단 우회
    • 목적지 주소, 발신지 주소에 따라 패킷 차단
    • 차단되지 않는 주소에 VPN 서버 설치
      • 실질적으로는, 트래픽 대리 접근; 중계하는 프록시(proxy) 서버
    • 차단 지역의 노드와 해당 서버 사이에 가상 링크 ⇒ VPN

IP 터널링 (IP Encapsulation)의 의미

  • 헤더 내용에 기초한 패킷 포워딩에 indirection 도입
  • indirection ⇒ 융통성, 가상화 가능
  • 유사 예 ) 가상 메모리, 가상 머신
  • 전세계를 연결하고 있는 인터넷 위에, 가상의 연결을 만들 수 있는 기술
  • 누구나 필요에 따라 자신만의 네트워크를 만들 수 있다.
  • 미래의 통신망에 있어서 소프트웨어 핵심 기술
728x90