뚝딱햄 탈출기

[인터넷공학] Chap7. IP 프로토콜 본문

데이터 통신 & 컴퓨터 네트워크

[인터넷공학] Chap7. IP 프로토콜

hyrmzz1 2023. 6. 21. 15:36

인터넷 공학(2) 수업에 사용되는

쉽게 배우는 데이터 통신과 컴퓨터 네트워크 [3판] / 박기현 / 한빛 아카데미

교재에 대한 연습문제를 정리한 내용이다.


네트워크 계층 주요 기능 → 라우팅, 혼잡 제어, 패킷의 분할과 병합.

  • 네트워크 계층의 기본 기능은 송수신 호스트 사이의 패킷 전달 경로를 선택하는 라우팅이다.
  • 라우팅 테이블의 정보를 이용해 패킷이 목적지까지 도달하기 위한 경로를 선택한다.
  • 네트워크 특정 지역에 트래픽이 몰리는 현상을 다루는 혼잡 제어와 라우터 사이의 패킷 중개 과정에서 다루는 패킷의 분할과 병합이다.
  • 전송 계층에서 보낸 데이터가 너무 크면 여러 개의 패킷으로 작게 쪼개 전송해야 한다. (=분할)
  • (송신측에서) 큰 데이터를 여러 패킷으로 나누는 과정을 패킷 분할이라 하고, (목적지에서/수신측에서/수신자가) 분할된 패킷을 다시 모으는 과정을 병합이라 한다.

연결형 서비스와 비연결형 서비스

  • 네트워크 계층이 전송 계층에 제공하는 서비스로는 패킷 전송 전에 송수신 호스트 사이에 연결을 설정하는 연결형 서비스와 연결 설정 없이 데이터를 패킷 단위로 전송하는 비연결형 서비스가 있다.
  • 연결형은 패킷들이 설정된 연결을 따라 동일한 경로로 전송된다.
    비연결형은 패킷들이 독자적인 경로로 수신 호스트까지 전송된다.
  • 비연결 서비스는 패킷의 전달 순서, 패킷 분실 여부 등에서 연결형 서비스보다 신뢰성이 떨어지는 전송 방식이다.
  • 비연결형 서비스를 이용하는 경우, 상위 계층인 전송 계층은 수신한 패킷의 순서를 재조정하는 기능이 필요함. (독자적 경로로 패킷 전송 → 패킷 도착 순서 일정 X)
    (연결형 서비스는 패킷 보내는 순서 = 도착 순서 → 재조정 기능 필요 X)
  • 인터넷 환경에서 네트워크 계층의 기능을 지원하는 IP 프로토콜은 비연결형 서비스이다. (+ TCP: 연결형, UDP: 비연결형)

라우팅

  • 라우팅패킷의 전송 경로를 지정하는 것.
  • 라우터의 주요 기능은 입력된 패킷을 어느 출력 경로를 통해 다음 라우터로 전달해야 가장 효과적인지 결정하는 것.
  • 가상회선 방식에서는 전송되는 모든 패킷이 동일 경로를 거치고 패킷의 전달 순서도 일정하게 유지됨. (가상회선: 연결형)
  • 데이터그램을 사용하면 전송 패킷마다 독자적인 전달 경로를 선택해야 함. (데이터그램: 비연결형. 연결 설정 과정 X → 송수신 호스트 사이 고정 경로 X)
  • 정적 라우팅은 송수신 호스트 사이에서 패킷 전송이 이루어지기 전에 경로 정보를 라우터에 미리 저장하여 중개하는 방식.
  • 동적 라우팅은 라우터에서 사용하는 경로 정보를 네트워크 상황에 따라 적절하게 변경하는 방식.
  • 동적 라우팅은 현재의 네트워크 상황을 고려해 최적의 경로 정보를 선택할 수 있지만, 경로 정보를 수집하고 관리하는 등의 복잡한 작업이 추가로 필요함.

HELLO/ECHO 패킷

  • 라우터는 이웃에 연결된 라우터에 초기화를 위한 HELLO 패킷을 전송해 경로 정보를 얻음.
  • HELLO 패킷을 이용해 해당 라우터 간 경로가 이용 가능한지 파악 가능.
  • 라우터 사이의 전송 지연 시간을 측정하기 위해 ECHO 패킷을 전송.
  • ECHO 패킷 수신한 호스트는 송신 호스트에 즉각 회신. 이 과정 반복해 측정값의 평균 구해 해당 라우터까지의 전송 지연 시간 유추 가능.
  • 임의의 라우터가 획득한 정보를 다른 라우터에 통보해 경로 정보를 공유. 경로 정보들이 개별 라우터에서 갱신되는 시간은 서로 일치하지 않아 어려움. 따라서 여러 라우터에서 정보가 생성되는 경우 네트워크 내부의 경로 정보를 일관성 있게 유지하는 것이 중요함.

라우팅 테이블

  • 패킷 전송과정에서 적절한 경로를 쉽게 찾을 수 있도록 하기 위해 사용.
  • 라우팅 테이블에 포함해야 하는 필수 정보는 (목적지 호스트, 다음 홉)의 조합.
  • 다음 홉에는 목적지 호스트까지 패킷을 전달하기 위한 이웃 라우터를 지정.
  • 라우팅 테이블 정보는 네트워크에 연결된 모든 라우터에 존재하며, 라우터마다 관리하는 라우팅 정보의 내용은 다름.
  • 라우팅을 효과적으로 수행하려면 라우팅 정보가 네트워크의 현재 상황을 정확히 반영할 수 있도록 관리해야 함.

라우팅 정보의 처리

  • 소스 라우팅은 패킷을 전송하는 호스트가 목적지 호스트까지 전달 경로를 스스로 결정하는 방식.
  • 분산 라우팅은 라우팅 정보가 분산되는 방식. 패킷의 전송 경로에 위치한 각 라우터가 효율적인 경로 선택에 참여함.
  • 중앙 라우팅은 RCC라는 특별한 호스트를 사용해 전송 경로에 관한 모든 정보를 관리하는 방식.
  • 계층 라우팅은 분산 라우팅 기능과 중앙 라우팅 기능을 적절히 조합하는 방식. 전체 네트워크의 구성을 트리 구조 형태로 관리함.

혼잡 제어

  • 네트워크에 패킷 수가 과도하게 증가할수록 네트워크 성능이 감소. 이러한 성능 감소 현상이 급격하게 악화되는 현상을 혼잡이라 한다.
  • 혼잡 현상을 예방하거나 제거하는 기능을 혼잡 제어라 한다. 혼잡 문제를 해결하기 위한 방안을 혼잡 제어라 한다.
  • 흐름제어는 송수신 호스트 사이의 논리적인 점대점 전송 속도를 다루고, 혼잡제어는 더 넓은 관점에서 호스트와 라우터를 포함한 서브넷에서 네트워크의 전송 능력 문제를 다룸.
  • 혼잡 발생의 가장 큰 원인은 네트워크의 처리 능력에 비해 지나치게 많은 패킷이 입력되는 것. (네트워크 용량에 비해 전송 패킷이 많기 때문) → 라우터의 내부 버퍼 용량 부족이 심화되어 더 이상 패킷을 보관할 수 없어 버리게 된다. → 버려지면 송신호스트가 타임아웃 기능 통해 패킷 재전송 → 송신되는 패킷 양 점점 늘어남 // 혼잡 발생 원인
  • 라우터에서 패킷을 잃어버리지 않으려면 버퍼 용량을 늘려야 함. → 버퍼 용량이 늘면 패킷의 전송 지연 시간도 함께 늘어남. 전송 지연 시간이 타임아웃 시간보다 커지면 재전송 과정 증가 (전송 시간 초과에 의한 타임아웃 기능을 통해 패킷들이 재전송) → 중복 패킷 수신 → 혼잡도 증가 // 혼잡 심화 주요인
  • 혼잡 초기, 패킷의 전송 지연이 점점 증가할 때 타임아웃 값이 너무 작으면 혼잡도 급격히 증가할 수도 → 네트워크에 혼잡 징후 보이면 이를 감지해 타임아웃 시간 늘리는 것이 중요.

트래픽 성형

  • 혼잡은 트래픽이 특정 시간에 집중되는 버스트 현상에서 기인하는 경우가 많음.
  • 송신 호스트가 전송하는 패킷의 발생 빈도가 네트워크에서 예측할 수 있는 전송률로 이루어지게 하는 트래픽 성형 기능이 필요함.
  • 송신 호스트는 사전에 네트워크와 협상해 네트워크로 유입되는 패킷의 특성을 조율할 수 있음. → 패킷 분포 특성 미리 정해두면 네트워크에서 전체 트래픽의 혼잡도 예측해 혼잡 제어 효율적으로 수행 가능.
  • 송신 호스트가 사전에 약속한 트래픽보다 과도한 양의 패킷 전송시 네트워크에서 적절히 통제해야 함.
  • 리키 버킷 알고리즘에서 깔때기에 저장할 수 있는 패킷의 양은 일정하며(⇒ 일정한 전송률로 변경됨), 한계치를 초과하면 패킷이 넘쳐(⇒  버림) 패킷 분실 오류가 발생함.

ECN 기능

  • 라우터는 자신의 출력 선로 방향으로 전송되는 트래픽의 양 모니터 가능. → 출력 선로의 사용 정도가 한계치 초과하면 주의 표시 해둠. → 주의 표시한 방향의 경로는 특별 관리. // ECN 패킷 원리
  • 혼잡 지역에 위치한 라우터는 입력 선로로 들어온 패킷이 주의 표시된 출력 선로로 라우팅되는 경우에 패킷의 송신 호스트에 ECN 패킷을 전송함. → ECN 패킷을 수신한 송신 호스트는 데이터 패킷이 전송되는 경로에서 혼잡 발생 가능성이 있음을 인지 → 전송 패킷의 양을 줄임. // 원리
  • 실제 TCP/IP에서 ECN 기능의 구현은 수신 호스트를 거쳐 송신 호스트로 전송됨.
  • 특정 라우터에서 주의 표시를 시작하면 이후 경로에 위치한 라우터에서도 주의 표시할 가능성이 높아짐. → ECN 패킷 여러 라우터에서 발생하므로 최초 ECN 패킷 생성한 라우터에서 전송되는 패킷의 헤더 내부에 ECN-Echo와 같은 임의의 표시를 해 목적지까지 도착하는 동안 거치는 라우터가 ECN 패킷 더이상 생성하지 않도록 함.

라우팅 알고리즘

  • 라우팅 관련 가장 보편적으로 사용하는 기준은 전송 경로의 중간에 위치하는 라우터의 개수인 홉 수로 판단하는 것.
  • 최단 경로 라우팅 방식은 패킷이 목적지에 도달할 때까지 거치는 라우터의 수(= 홉 수)가 최소화되도록 경로 선택.
  • 홉 수 외에 거리 기준이 될 수 있는 요소에는 패킷의 전송 지연 시간, 전송 대역폭, 통신 비용 등이 있음.
  • 플러딩은 모든 라우터가 자신에게 입력된 패킷을 출력 가능한 모든 경로로 중개하는 방식.

거리 벡터 라우팅 프로토콜

  • 라우터가 자신과 직접 연결된 이웃 라우터와 라우팅 정보를 교환하는 방식.
  • 교환 정보는 각각의 라우터에서 전체 네트워크에 소속되는 개별 네트워크까지 패킷을 전송하는데 걸리는 거리 정보.
  • 거리 벡터 알고리즘 구현 위해 라우터가 관리해야 하는 필수 정보 ⇒ 링크 벡터, 거리 벡터, 다음 홉 벡터
  • 링크 벡터는 라우터와 직접 연결된 이웃 네트워크에 대한 연결 정보를 보관함.
  • 거리 벡터는 전체 네트워크에 소속된 개별 네트워크들까지의 거리 정보를 관리함.
  • 다음 홉 벡터는 개별 네트워크까지 패킷을 전송하는 경로에 있는 다음 홉 정보를 관리함.
  • RIP는 거리 벡터 방식을 사용하는 가장 간단히 구현된 내부 라우팅 프로토콜.

링크 상태 라우팅 프로토콜

  • 라우터 간의 정보 교환 원리가 거리 벡터 방식과 반대. 개별 라우터가 이웃 라우터까지의 거리 정보를 구한 후, 이를 네트워크에 연결된 모든 라우터에 통보함.
  • 거리 벡터 라우팅 프로토콜에서 각 라우터가 상당한 양의 정보 전송을 요구받고, 특히 링크 상태가 많이 변하면 동작 과정에서 시간이 많이 소요된다는 단점을 극복하려고 고안된 방식.
  • 이웃 라우터와 연결된 상황에 변화가 있을 때만 정보 전달이 이루어짐.
  • 정보 전달을 위해 플러딩 기법 사용. (플러딩은 모든 호스트에 데이터 동시 전달하는 환경에서만 사용. "네트워크에 연결된 모든 라우터에 통보")
  • OSPF는 링크 상태 방식을 사용하는 TCP/IP 기반 인터넷에서 사용하는 라우팅 프로토콜.

외부 라우팅 프로토콜

  • 외부 라우팅 프로토콜에서 사용하는 경로 벡터 프로토콜은 경로에 관한 거리 정보 값이 필요 없는 방식으로, 단순히 해당 라우터에서 어느 네트워크가 연결 가능한지에 대한 정보만 제공.
  • BGP는 외부 라우팅 프로토콜로, 서로 다른 종류의 자율 시스템에서 동작하는 라우터가 라우팅 정보 교환할 수 있도록 해줌.

IP 프로토콜

  • IP는 호스트 주소 표기, 패킷 분할에 관한 기능을 지원하지만 단대단 형식의 오류 제어나 흐름 제어 기능은 제공하지 않음.
  • 라우터 간의 패킷을 중개할 때는 Best Effort라는 원칙에 따라 전송함. (전송 패킷이 수신 호스트에 100% 도착하는 것 보장 X → 상위 계층에서 전송 오류 해결)
  • 체크섬 기능은 TCP/UDP 프로토콜과 중복되는 부분은 피하고(= 데이터 체크섬은 제공하지 않고) 헤더만 적용한다.
  • 비연결형 서비스 제공.

IP 프로토콜의 패킷 분할 기능

  • 상위 계층에서 내려온 전송 데이터가 패킷 하나로 전송하기에 너무 크면 분할해 전송함. // 분할 이유
  • 다양한 유형의 네트워크를 통해 패킷을 중개하기 위해 IP 프로토콜은 패킷을 각 네트워크에서 처리하기 편한 크기로 분할한다. // 분할 이유
  • IP 프로토콜이 분할한 패킷들에 서로 다른 고유 번호 부여 → 수신 호스트는 Identification 번호가 같은 패킷을 병합. 송신 호스트가 지정하는 패킷 구분자 기능 수행. // 필드 역할
  • 분할한 패킷 전송시 여려 개의 분할 패킷이 연속해서 전송됨 → MF 필드 값을 1로 지정해 분할 패킷이 뒤에 계속됨을 표시. (분할 패킷 중 마지막 패킷에 MF 필드 값 0으로 지정해 분할 패킷 더 없음을 표시.) // 필드 역할
  • Fragment Offset 값은 분할된 패킷의 내용이 원래의 분할 전 데이터에서 위치하는 상대 주소 값. (⇒ 어느 위치에서 어떻게 잘렸는지 알려줌.) // 필드 역할
  • 글 하단 그림 참고 (패킷 분할 예시)

IP 프로토콜의 헤더 정보

  1. DF 필드는 패킷이 분할되지 않도록 한다.
  2. Version number 필드는 IP 프로토콜의 버전 번호이다.
  3. Header Length 필드는 IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시함.
  4. Packet Length 필드는 IP 헤더를 포함해 패킷의 전체 길이를 나타냄.
  5. 패킷 전송 과정에서 패킷이 올바른 목적지를 찾지 못하면 수신 호스트에 제대로 도착하지 않고 네트워크 내부에서 떠돔. → 방지 위해 Time To Live 필드 사용 → 패킷이 지나갈 때 마다 필드값 감소. → Time To Live 값 0이 되면 패킷 버려지고(더이상 네트워크 내부에서 떠돌지 않음) 송신 호스트에 ICMP 오류 메세지 전달됨.
  6. Transport 필드는 IP 프로토콜에 데이터 전송을 요구한 전송 계층의 프로토콜을 가리킴.
  7. Header Checksum 필드는 전송 과정에서 발생 가능한 헤더 오류를 검출하는 기능. 데이터의 오류는 검출 X
  8. Options 필드는 네트워크 관리나 보안처럼 특수 용도로 이용할 수 있다.
  9. 필드의 전체 크기가 IP 헤더의 크기 조건에 맞지 않으면 Padding 필드를 사용해 조정할 수 있다.
  10. 글 하단 그림 참고 (IP 헤더 구조)

IP 주소 클래스

  • 클래스 A, B, C는 유니캐스팅에서 이용하고, 클래스 D는 멀티캐스팅에서 이용함. 클래스 E는 향후 새로운 응용 환경을 위해 잠정적으로 예약된 클래스.
  • 클래스 A, B, C는 주소를 network와 host 필드로 구분해 관리함으로써,클래스별로 네트워크 크기에 따라 주소 관리를 다르게 함.
  • IP 주소 값의 정보만으로 주소가 속한 클래스 파악 가능.

DHCP 프로토콜

  • IP 주소 부족 등의 사유로 DHCP 사용해 IP 주소 자동으로 할당. (수동으로 개별 호스트들에 고정 IP 주소 할당시 IP 주소 부족해짐.)
  • DHCP 메시지는 UDP 데이터그램에 캡슐화되어 전송되며, 클라이언트의 포트 번호는 68, 서버의 포트 번호는 67이다.
  • 자동으로 할당 가능한 IP 주소는 DHCP 서버가 관리하는 풀에 저장되어 관리되며, 클라이언트로부터 IP 주소 요청이 오면 풀에서 하나의 IP 주소를 할당. 이후 사용이 끝나면 IP 주소는 다시 풀로 반환되어 다른 호스트가 사용 가능. // 동작 원리
  • DHCP_DISCOVER는 클라이언트가 IP 주소를 찾기 위해 전송하는 브로드캐스트 메세지.
  • DHCP_OFFER는 DHCP_DISCOVER 메세지에 대한 응답. DHCP 서버가 응답하는 메세지.
  • 클라이언트는 여러 서버로부터 다수의 DHCP_OFFER 받을 수 있음 → 이 중 적당한 IP 주소 선택해야 함. → 이 주소 권고한 DHCP 서버에 DHCP_REQUEST 메세지 전송해 권고한 주소 사용한다고 알려줌.

15. 패킷 분할 예시

 

16. IP 프로토콜 헤더

Comments