본문 바로가기

Computer Science/네트워크

[쉽게 배우는 데이터 통신과 네트워크] CH7. IP 프로토콜

반응형
SMALL

01. 네트워크 계층의 기능

기본적으로 라우팅 기능을 제공하고, 라우팅 과정에서 일어나는 문제도 네트워크 계층에서 처리한다.

 

라우팅

  • 라우팅 테이블에 보관된 정보를 이용해 패킷이 목적지까지 도달하기 위한 경로를 선택한다.
  • 송수신 호스트 사이의 패킷 전달 경로를 선택하는 과정을 라우팅이라고 한다.

 

혼잡 제어

  • 네트워크에 패킷 수가 과도하게 증가하는 현상을 혼잡이라 하고, 혼잡 현상을 예방하거나 제거하는 기능을 혼잡 제어라 한다.
  • 특히 네트워크 특정 지역에서 혼잡이 발생하면, 특성상 주위로 빠르게 확산될 가능성이 높다.

 

패킷의 분할과 병합

  • 큰 데이터를 여러 패킷으로 나누는 과정을 패킷 분할이라 하고, 반대로 목적지에서 분할된 패킷을 다시 모으는 과정을 병합이라 한다.

 

1. 연결형 서비스와 비연결형 서비스

연결형, 비연결형 서비스

 

1.1 비연결형 서비스

  • 패킷의 전달 순서, 패킷 분실 여부 등에서 연결형 서비스보다 신뢰성이 떨어지는 전송 방식
  • 패킷이 서로 다른 경로를 통해 목적지 호스트로 전달되기 때문에 패킷이 도착하는 순서가 일정하지 않을 수 있다.

 

1.2 연결형 서비스

  • 상대적으로 신뢰성이 높은 서비스로, 패킷을 전송하기 전에 연결을 미리 설정하여 송신하는 방식
  • 전달되는 패킷들이 모두 동일한 경로를 이용하기 때문에 목적지에 도착하는 패킷의 순서가 송신된 순서와 동일하다.

 


2. 라우팅

2.1 정적, 동적 라우팅

정적 라우팅

  • 송수신 호스트 사이에서 패킷 전송이 이루어지기 전에 경로 정보를 라우터에 미리 저장하여 중개하는 방식
  • 👎 라우터에 보관된 경로 정보가 고정되어 변화된 정보를 갱신하기 쉽지 않다.
    • 특히, 네트워크의 내부 혼잡도를 반영할 수 없다.

 

동적 라우팅

  • 라우터에서 사용하는 경로 정보를 네트워크 상황에 따라 적절하게 변경하는 방식
  • 👎 복잡한 작업이 추가로 필요한데, 이는 네트워크에 새로운 부하를 가해 성능에 부정적인 영향을 미친다.
  • 각 라우터가 획득한 경로 정보를 다른 라우터들에게 통보함으로써, 네트워크의 최신 경로 정보를 신속하게 공유하고 갱신해야 한다.

 

2.2 HELLO/ECHO 패킷

  • 각 라우터는 이웃에 연결된 라우터에 초기화를 위한 HELLO 패킷을 전송해 경로 정보를 얻는다.
  • 라우터 사이의 전송 지연 시간을 측정하기 위해서 ECHO 패킷을 전송한다.
  • 경로 정보가 개별 라우터에 도착하는 시간이 서로 일치하지 않기 때문에 특정 시점에서 각각의 라우터가 바라보는 네트워크 상태는 같지 않을 수 있다. 특히, 여러 라우터에서 정보가 생성되는 경우에는 네트워크 내부의 경로 정보를 일관성 있게 유지하기 어렵다.

 

2.3 라우팅 테이블

라우팅 테이블

  • 포함되는 필수 정보는 (목적지 호스트, 다음 홉)의 조합이다.
    • 목적지 호스트: 패킷의 최종 목적지가 되는 호스트의 주소 값
    • 다음 홉: 목적지 호스트까지 패킷을 전달하기 위한 이웃 라이터
  • (a)와 같은 네트워크 연결 구성에서 호스트1이 관리하는 라우팅 테이블의 정보는 (b)와 같다.
    • 라우팅 테이블 정보는 네트워크에 연결된 모든 호스트에 존재한다.
    • 호스트마다 관리하는 정보의 내용은 다르다.

 

2.4 라우팅 정보의 처리

소스 라우팅

  • 패킷을 전송하는 호스트가 목적지 호스트까지 전달 경로를 스스로 결정하는 방식
  • 모든 라우팅 정보를 송신 호스트가 관리하므로 중간에 있는 라우터들은 라우팅 테이블을 따로 관리할 필요가 없다.
  • 데이터그램 방식과 가상 회선 방식에서 모두 이용할 수 있다.

 

분산 라우팅

  • 라우팅 정보가 분산되는 방식으로, 패킷의 전송 경로에 위치한 각 라우터가 효율적인 경로 선택에 참여한다.
  • 네트워크에 존재하는 호스트의 수가 많아질수록 다른 방식보다 효과적이다.

 

중앙 라우팅

  • 특별한 호스트를 사용해 전송 경로에 관한 모든 정보를 관리하는 방식
  • 패킷 전송을 원하는 송신 호스트는 반드시 RCC로부터 목적지 호스트까지 도착하기 위한 경로 정보를 미리 얻어야 한다.
  • 경로 정보를 특정 호스트가 관리하기 때문에 다른 일반 호스트가 경로 정보를 관리하는 부담을 줄일 수 있다.
  • 네트워크의 규모가 커짐에 따라 RCC에 과중한 트래픽을 주어 전체 효율이 떨어질 수 있다.

 

계층 라우팅

  • 분산 라우팅 기능과 중앙 라우팅 기능을 적절히 조합하는 방식으로, 전체 네트워크의 구성을 계층 구조 형태로 관리한다.
  • 일반적으로 네트워크 규모가 계속 커지는 환경에 효과적이다.

 


3. 혼잡 제어

흐름 제어와 혼잡 제어

  • 기본적으로 네트워크의 처리 능력보다 지나치게 많은 패킷이 입력되면 혼잡이 발생한다.
  • 패킷의 전송 지연 시간이 타임아웃 시간보다 크면 재전송 과정이 증가할 수 있다. 네트워크로 보내지는 패킷의 양과 중복 패킷을 수신하는 현상도 증가하여 네트워크 혼잡도가 계속 증가하는 악순환을 초래한다.

 

3.1 혼잡의 원인

  • 주요 원인은 전송 시간 초과에 의한 타임아웃 기능을 통해 패킷들이 재전송되는 데 있다.
    • 네트워크에 혼잡 징후가 보이면 이를 감지해 타임아웃 시간을 늘리는 방안이 필요하다.
  • 패킷이 제대로 수신되었는지를 송신 호스트에 알려주는 응답 알고리즘도 혼잡에 영향을 준다.
    • 패킷 여러 개를 모아 하나의 응답으로 처리하는 방식이나 피기배킹을 사용하는 방식과 비교하면 혼잡도에 미치는 영향이 다르다.
    • 피기배킹은 혼잡이 발생했을 때 송신 호스트의 타임아웃 기능을 통한 재전송을 유발하여 혼잡을 오히려 가중시킬 수도 있다.
  • 라우팅 알고리즘도 혼잡에 영향을 줄 수 있다.
    • 혼잡이 발생되고 있는 경로보다 전송 트래픽이 적은 경로를 찾아 패킷을 전송하면 혼잡도를 줄일 수 있다.

 

3.2 트래픽 성형

  • 송신 호스트가 전송하는 패킷의 발생 빈도가 네트워크에서 예측할 수 있는 전송률로 이루어지게 하는 기능이 필요한데, 이를 트래픽 성형이라 한다.
  • 송신 호스트는 사전에 네트워크와 협상하여 네트워크로 유입되는 패킷의 특성을 조율할 수 있다.
  • 송신 호스트가 사전에 약속한 트래픽보다 과도한 양의 패킷을 전송하면 네트워크에서 적절히 통제해야 한다.

 

리키 버킷 알고리즘

  • 먼저 송신 호스트와 네트워크 사이에 송신 호스트가 협상에서 제시한 전송 특성을 반영하는 적절한 크기의 깔때기가 위치한다.
    • 깔때기의 출구 크기는 협상 결과를 의미하므로 크기가 고정되어 있다.
    • 송신 호스트가 협상 값보다 많은 양의 패킷을 전송해도 깔때기 크기 이상의 패킷이 네트워크에 유입될 수 없다.
  • 과도하게 입력된 패킷은 깔때기의 부피 범위 내에서 내부 버퍼에 임시 저장된다.
    • 깔때기에 저장할 수 있는 패킷의 양은 일정하며, 한계치를 초가화면 패킷이 넘쳐 패킷 분실 오류가 발생한다.
  • 송신 호스트로부터 입력되는 패킷이 시간대별로 가변적이어도 깔때기를 통과하면서 일정한 전송률로 변경된다.

 

3.3 혼잡 제거

  • 혼잡이 사라질 때까지 연결 설정을 허락하지 않는다.
  • 전송 과정에서 사용하는 대역을 미리 할당받음으로써, 네트워크에서 수용 불가능한 정도로 트래픽이 발생하는 일을 사전에 예방한다.
    • 자원 예약 방식
    • 개발 연결이 예약한 전송 대역을 해당 사용자가 이용하지 않더라도 다른 사용자가 이용하지 못한다. (낭비 현상)

 

ECN 패킷

  • 라우터는 자신의 출력 선로 방향으로 전송되는 트래픽의 양을 모니터할 수 있으므로 출력 선로의 사용 정도가 한계치를 초과하면 주의 표시를 해둔다. 주의 표시한 방향의 경로는 혼잡이 발생할 가능성이 높기 때문에 특별 관리한다.
  • (1) 혼잡 지역에 위치한 라우터는 입력 선로로 들어온 패킷이 주의 표시된 출력 선로로 라우팅 되는 경우에 패킷의 송신 호스트에 ECN 패킷을 전송한다.
  • (2) ECN 패킷을 수신한 송신 호스트는 데이터 패킷이 전송되는 경로에서 혼잡이 발생할 가능성이 있음을 인지하였으므로 전송 패킷의 양을 줄인다.
  • 최초로 ECN 패킷을 발생시킨 라우터에서는 전송되는 패킷의 헤더 내부에 ECN-Echo와 같은 임의 표시를 하여 목적지까지 도착하는 동안에 거치는 라우터가 ECN 패킷을 더 이상 발생하지 않도록 해야 한다.
  • 송신 호스트는 임의 시간이 경과한 후에도 ECN 패킷이 계속 들어오면 송신 패킷의 양을 추가로 줄여야 한다.

 


02. 라우팅 프로토콜

1. 간단한 라우팅 프로토콜

가장 보편적으로 이용하는 기준은 전송 경로의 중간에 위치하는 라우터의 개수, 홉(Hop)의 수로 판단하는 것이다.

 

1.1 최단 경로 라우팅

패킷이 목적지에 도달할 때까지 거치는 라우터 수가 최소화될 수 있도록 경로를 선택한다.

 

최단 경로 라우팅

  • a to g : 최단 경로는 c만 거치는 것
  • a to d : 최단 경로는 b나 c를 통과하는 것
  • 거리 기준 요소로 홉 수, 패킷의 전송 지연 시간, 전송 대역폭, 통신 비용 등이 있다.

 

1.2 플러딩

  • 라우터가 자신에게 입력된 패킷을 출력 가능한 모든 경로로 중개하는 방식
  • 원본 패킷과 동일한 패킷이 무수히 생성되고, 모든 경로를 통해 반복하여 전송한다.
  • 패킷의 무한정 증가를 막기 위해 각 패킷의 홉 수를 일정 범위로 제한해 라우터에서 이를 확인하여 제거한다.
  • 중요한 데이터를 모든 호스트에 동시에 전달하는 환경에서 제한적으로 사용된다.

 


2. 거리 벡터 라우팅 프로토콜

  • 라우터가 자신과 직접 연결된 이웃 라우터와 라우팅 정보를 교환하는 방식
  • 교환 정보는 각각의 라우터에서 전체 네트워크에 소속되는 개별 네트워크까지 패킷을 전송하는 데 걸리는 거리 정보이다.
  • 거리 벡터 알고리즘 구현을 위해 라우터가 3가지 필수 정보를 관리한다.
    • 링크 벡터: 이웃 네트워크에 대한 연결 정보
    • 거리 벡터: 개별 네트워크까지의 거리 정보
    • 다음 홉 벡터: 개별 네트워크로 가기 위한 다음 홉 정보

 

2.1 링크 벡터

  • 링크 벡터 L(x)는 라우터 x와 직접 연결된 이웃 네트워크에 대한 연결 정보를 보관한다.
  • L(x) = [포트(1),포트(2),...,포트(m),...,포트(M)]
    • 라우터 x와 직접 연결된 네트워크가 M개

 

네트워크 구성의 예

  • 링크 벡터는 자신과 직접 연결된 이웃 라우터가 누구인지를 판단하기 위한 자료로, 거리 벡터 정보를 제공하기 위해 사용한다.
  • L(R1) = [포트(Net.1)=1, 포트(Net.2)=3]
  • L(R2) = [포트(Net.1)=1, 포트(Net.4)=8]
  • L(R7) = [포트(Net.3)=6, 포트(Net.5)=9]

 

2.2 거리 벡터

  • 거리 벡터 D(x)는 전체 네트워크에 소속된 개별 네트워크들까지의 거리 정보를 관리한다.
  • D(x) = [거리(1),거리(2),...,거리(n),...,거리(N)]
    • 네트워크가 N개라고 가정
  • 라우터 R1을 위한 거리 벡터 값 D(R1) = [거리(Net.1)=1, 거리(Net.2)=1, 거리(Net.3)=2, 거리(Net.4)=2, 거리(Net.5)=2]

 

2.3 다음 홉 벡터

  • 다음 홉 벡터 H(x)는 개별 네트워크까지 패킷을 전송하는 경로에 있는 다음 홉 정보를 관리한다.
  • H(x) = [홉(1),홉(2),...,홉(n),...,홉(N)]
  • 라우터 R1을 위한 다음 홉 벡터 값 H(R1) = [다음 홉(Net.1)=-, 다음 홉(Net.2)=-, 다음 홉(Net.3)=R4, 다음 홉(Net.4)=R3, 다음 홉(Net.5)=R6]

 

2.4 RIP 프로토콜

  • 거리 벡터 방식을 사용하는 내부 라우팅 프로토콜 중 가장 간단하게 구현된 것
  • 소규모 네트워크 환경에 적합하며, 현재 가장 많이 사용하는 라우팅 프로토콜 중 하나이다.
  • UDP 프로토콜을 사용하는데, UDP는 비신뢰성 전송을 제공하므로 RIP 패킷이 전송 과정에서 사라질 수도 있다.
  • 3가지 제한을 두어 개별 거리 정보가 라우팅 테이블에 순차적으로 적용되도록 한다.
    • 입력되는 거리 벡터 정보가 새로운 네트워크의 목적지 주소이면 라우팅 테이블에 적용한다.
    • 입력되는 거리 벡터 정보가 기존 정보와 비교하여 목적지까지 도착하는 지연이 더 적으면 대체한다.
    • 임의의 라우터로부터 거리 벡터 정보가 들어왔을 때, 라우팅 테이블에 해당 라우터를 다음 홉으로 하는 등록 정보가 있으면 새로운 정보로 수정한다.

 

목적지 네트워크 다음 홉 거리
Net.1 - 1
Net.2 - 1
Net.3 R4 2
Net.4 R4 3
Net.5 R6 2

수정 전 라우터 R1의 라우팅 테이블

  • 네트워크 Net.4를 목적지로 하는 패킷은 라우터 R4를 거쳐서 네트워크 Net.3과 라우터 R5의 경로를 선택하도록 되어 있다. (극단적인 최악의 경로로 먼저 가정)
  • 라우터 R1과 직접 연결된 주변 라우터 R2, R3, R4, R6으로부터 라우팅 정보가 주기적으로 입력된다.
    • R2 = [1, 2, 2, 1, 2]
    • R3 = [2, 1, 2, 1, 2]
    • R4 = [2, 1, 1, 2, 2]
    • R5 = [2, 1, 2, 2, 1]

 

목적지 네트워크 다음 홉 거리
Net.1 - 1
Net.2 - 1
Net.3 R4 2
Net.4 R3 2
Net.5 R6 2

수정 후 라우터 R1의 라우팅 테이블

  • 라우터 R2나 R3을 이용하면 거리가 2로 더 짧아진다.
  • 결과적으로 패킷을 빠르게 전송할 수 있는 새로운 경로를 찾았으므로 이를 라우팅 테이블에 반영한다. (R3을 선택했다고 가정)

 

RIP 패킷의 구조

  • Command(명령): 값이 1이면 RIP 요청을, 2이면 RIP 응답을 의미한다.
  • Version(버전): RIP 프로토콜의 버전 번호이다.
  • Address Family Identifier(주소 패밀리 구분자): IP 프로토콜의 주소는 2로 설정된다.
  • IP Address(IP 주소): 특정한 네트워크를 지칭하는 용도로 사용되기 때문에 IP 주소의 네트워크 부분의 값만 사용하고, 호스트 부분은 0으로 채운다.
  • Metric(거리): 해당 라우터에서 목적지 네트워크까지의 거리이다.

 


3. 링크 상태 라우팅 프로토콜

  • 개별 라우터가 이웃 라우터까지의 거리 정보를 구한 후, 이를 네트워크에 연결된 모든 라우터에 통보한다. (거리 벡터 방식과 반대)
  • 이웃 라우터와 연결된 상황에 변화가 있을 때만 정보 전달이 이루어진다.
  • 링크 상태 방식을 사용하는 라우팅 프로토콜에는 TCP/IP 기반의 인터넷에서 사용하는 OSPF가 있다.

 


4. 외부 라우팅 프로토콜

  • 외부 라우팅 프로토콜에서 사용하는 경로 벡터는 해당 라우터에서 어느 네트워크가 연결 가능한지에 대한 정보만을 제공한다.
  • 거리 벡터 방식과 2가지 면에서 다르다.
    • 거리에 대한 처리 과정이 이루어지지 않는다.
    • 관리하는 라우팅 정보에는 목적지 네트워크에 도착하기 위한 자율 시스템에 관한 내용만 포함된다.
  • BGP는 외부 라우팅 프로토콜로, 인터넷에서 많이 사용되고, 서로 다른 종류의 자율 시스템에서 동작하는 라우터가 라우팅 정보를 교환할 수 있도록 한다. 또한, TCP 프로토콜을 이용해 메시지를 교환한다.

 

메시지 설명
Open 다른 라우터와 연관을 설정한다.
Update 라우팅 관련 정보를 전달한다.
KeepAlive Open 메시지에 대한 응답 기능과 주변 라우터와의 연관을 주기적으로 확인한다.
Notification 오류 상태를 통보한다.

TCP 프로토콜에서 제공하는 메시지의 종류

 


03. IP 프로토콜

  • 비연결형 서비스를 제공한다.
  • 패킷을 분할/병합하는 기능을 수행하기도 한다.
  • 데이터 체크섬은 제공하지 않고, 헤더 체크섬만 제공한다.
  • Best Effort 원칙에 따른 전송 기능을 제공한다.

 

1. IP 헤더 구조

IP 헤더의 구조

 

1.1 DS/ECN

  • DS(Differentiated Services)를 사용하기 위해 사전에 서비스 제공자와 서비스 이용자 사이에 서비스 등급에 대한 합의가 이루어지며, 동일한 DS 값을 갖는 트래픽들은 동일한 서비스 등급으로 처리된다.
  • ECN(Explicit Congestion Notification) 필드 값의 의미는 아래 표와 같다. 송신 호스트가 라우터에게 IP 패킷에 캡슐화된 TCP 프로토콜이 ECN 기능을 지원한다고 알려주기 위해 사용된다.

 

필드 값 의미
00 IP 패킷이 ECN 기능을 사용하지 않음
01(ECT 1) TCP 프로토콜도 ECN 기능을 지원함
10(ECT 0) TCP 프로토콜도 ECN 기능을 지원함
11(CE: Congestion Experienced) 라우터가 송신 호스트에 혼잡을 통지할 때 사용

ECN 필드 값의 의미

 

1.2 패킷 분할

  • 상위 계층에서 내려온 전송 데이터가 패킷 하나로 전송하기에 너무 크면 분할해 전송하는 기능을 제공한다.
    • Identification: 송신 호스트가 지정하는 패킷 구분자 기능을 수행한다. (동일한 고유 번호 부여)
    • DF: 패킷이 분할되지 않도록 한다. (수신 호스트가 패킷 병합 기능이 없을 때 사용)
    • MF: 분할된 패킷을 전송할 때는 여러 개의 분할 패킷이 연속해서 전송되므로 MF 필드 값을 1로 지정하여, 분할 패킷이 뒤에 계속됨을 표시해주어야 한다.
    • Fragment Offset: 패킷 분할이 이루어지면 12비트의 Fragment Offset 필드를 사용한다. 저장되는 값은 분할된 패킷의 내용이 원래의 분할 전 데이터에서 위치하는 상대 주소 값이다.

 

1.3 주소 관련 필드

IP 주소 체계

 

  • 클래스 A,B,C는 유니캐스팅에서, 클래스 D는 멀티캐스팅에서, 클래스 E는 향후의 새로운 응용 환경을 위해 잠정적으로 예약된 클래스이다.
  • 클래스 A,B,C는 주소를 network와 host 필드로 구분해 관리함으로써, 클래스별로 네트워크 크기에 따라 주소 관리를 다르게 한다.
    • network: 네트워크 주소로, 전 세계적으로 유일한 번호가 모든 컴퓨터 네트워크에 할당된다.
    • host: 네트워크 주소가 결정되면 하위의 호스트 주소를 의미하는 host 비트 값을 개별 네트워크의 관리자가 할당한다.

 

1.4 기타 필드

  • Version Number(버전 번호): IP 프로토콜의 버전 번호
  • Header Length(헤더 길이): IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시한다.
  • Packet Length(패킷 길이): IP 헤더를 포함하여 패킷의 전체 길이를 나타낸다.
  • Time To Live(생존 시간): 패킷 전송 과정에서 패킷이 올바른 목적지를 찾지 못하면 수신 호스트에 제대로 도착하지 않고, 네트워크 내부에서 떠돈다. 이런 현상을 방지하기 위해 사용하는 필드이다.
  • Transport(전송 프로토콜): IP 프로토콜에 데이터 전송을 요구한 전송 계층읠 프로토콜을 가리킨다.
  • Header Checksum(헤더 체크섬): 전송 과정에서 발생할 수 있는 헤더 오류를 검출하는 기능으로, 데이터의 오류는 검출하지 않는다.
  • Options(옵션): 네트워크 관리나 보안처럼 특수 용도로 이용할 수 있다.
  • Padding(패딩): IP 헤더의 크기는 32비트 워드의 크기가 배수가 되도록 설계되어 있다. 필드의 전체 크기가 이 조건에 맞지 않으면 해당 필드를 사용해 조정할 수 있다.

 


2. 패킷 분할

다양한 유형의 네트워크를 통해 패킷을 중개하려면, IP 프로토콜이 패킷을 각 네트워크에서 처리하기 편한 크기로 분할해야 한다.

 

2.1 분할의 필요성

TCP 프로토콜은 네트워크 유형에 따라 패킷 크기를 조절하기 쉽지 않으므로 IP 프로토콜에서 이 기능을 수행해야 한다.

 

패킷 분할의 필요성

  • 상위 계층에서 내려온 데이터를 계층 2의 프레임 틀에 담을 수 있도록, IP 프로토콜에서 분할 과정을 거친 후 전송하고, 수신 측에서는 병합 작업을 수행해야 한다.
  • IP 프로토콜의 분할 기능은 라우터에 의해 수행된다.
    • 라우터 좌우에 연결된 LAN이 서로 다를 수 있기 때문에, 데이터 링크 계층에 위치한 프레임 크기가 프로토콜마다 달라진다.
    • 데이터 수신 후, 패킷을 중개하는 방향에 위치한 LAN에 맞도록 프레임을 분할해 주어야 한다.

 

2.2 분할의 예

패킷 분할의 예

  • IP 헤더를 제외한 전송 데이터의 크기는 380바이트, 패킷은 최대 크기가 128바이트라고 가정한 예이다.
  • 최대 크기 128바이트에서 헤더인 20바이트를 빼면 108바이트이다. 따라서 분할 패킷에 보관될 수 있는 데이터의 최대 크기는 (108을 8로 나눈 몫) * 8 = 104바이트가 된다.
  • 패킷의 전체 크기: Packet Length = 104바이트 + 20바이트(헤더) = 124바이트
  • 마지막 분할 패킷의 크기: 380바이트(전체 데이터의 크기) - 104바이트 * 3개 + 20바이트(헤더) = 88바이트
  • 분할한 패킷의 Identification 필드에는 동일한 번호를 부여해야 하는데, 임의로 1254번이 가정되었다.
  • MF 필드는 마지막 패킷만 제외하고 1을 지정해 분할 패킷이 이어지고 있음을 표시해주어야 한다.

 


3. DHCP 프로토콜

3.1 DHCP 메시지

IP 주소를 원하는 클라이언트는 DHCP 서버에 요청 메시지를 전송하고, 서버는 응답 메시지를 회신한다.

 

DHCP 메시지

  • OPcode: 요청 메시지는 1을 지정하고, 응답 메시지는 2를 지정한다.
  • HardwareType: 이더넷 등과 같은 하위 계층의 하드웨어 유형을 지정한다.
  • HardwareLength: 하드웨어 주소의 길이를 지정한다.
  • HOPCount: 패킷이 전달되는 최대 홉의 수를 지정한다.
  • Transaction Identifier: 클라이언트의 요청이 있을 때 지정하는 임의의 숫자이며, 서버는 지정된 번호로 응답한다.
  • Time Elapsed: 클라이언트가 부팅된 이후의 경과 시간을 지정한다.
  • Flag: 현재 첫 번째 비트만 사용되며, 유니캐스트인지 멀티캐스트인지를 구분한다.
  • Client IP Address: 클라이언트가 자신의 IP 주소를 지정한다. 모르면 0으로 표시한다.
  • Your IP Address: 서버가 응답 메시지로 권고해주는 클라이언트의 IP 주소이다.
  • Server IP Address: 서버의 IP 주소를 지정하는데, 주소를 모르는 경우는 0으로 표시한다.
  • Gateway IP Address: 클라이언트의 디폴트 라우터 IP 주소를 지정한다.
  • Client Hardware Address: 클라이언트의 하드웨어 주소를 지정하며, 크기는 HardwareLength 필드에 표시된다.
  • Server Name: 서버의 도메인 네임을 지정하며, 크기는 64바이트이다.
  • Boot File Name: 추가 정보를 보관하고 있는 파일 경로명을 지정하며, 크기는 128바이트이다.
  • Options: 필요한 추가 정보를 지정하며, 크기는 64바이트이다.

 

DHCP 프로토콜의 동작 과정

  • 클라이언트가 DHCP_DISCOVER 메시지를 전송하고, 이어서 DHCP 서버로부터 211.223.201.99로 권고된 IP 주소를 받는다.
  • 3번째 DHCP_REQUEST 메시지를 이용하여 권고된 IP 주소를 사용하겠다는 의사 표시에 대하여 DHCP 서버로부터 긍정 응답을 받는다.

 

UDP/IP 프로토콜의 캡슐화

  • DHCP 서버의 포트 번호는 67, 클라이언트는 68을 사용한다.
  • IP 헤더에는 255.255.255.255로 지정하여 브로드캐스팅 전송을 하고 있다.
  • DHCP_DISCOVER 메시지를 전송하는 송신자의 IP 주소는 없으므로 0.0.0.0을 지정한다.

 


References

반응형
LIST