데이터 통신과 네트워킹 TCP-IP프로토콜 기반

[데이터 통신과 네트워킹-TCP/IP프로토콜 기반] 7장 네트워크층: 데이터 전송

studyingalone 2025. 1. 13. 20:41
728x90

데이터 통신과 네트워킹-TCP/IP프로토콜 기반: 7장 네트워크층: 데이터 전송

7.1 서비스

네트워크층에서 제공되는 서비스


7.1.1 패킷화(Packetizing)

 

  • 네트워크 계층은 상위 계층에서 데이터를 받아 네트워크 계층 패킷으로 캡슐화하여 송신하고, 수신 측에서는 이를 역캡슐화하여 상위 계층에 전달.
  • 경로에서 패킷이 단화(fragmentation)되면 이를 재조립하여 상위 계층으로 전달.

7.1.2 경로지정(Routing)

  • 소스에서 목적지까지 패킷을 최적 경로로 전달.
  • 다양한 경로 중 최적의 경로를 선택하는 전략이 필요.

7.1.3 오류제어(Error Control)

  • 데이터그램 헤더의 손상을 방지하기 위해 체크섬 필드 사용.
  • 데이터 전체의 오류 검사는 비효율적이라 생략.

7.1.4 흐름 제어(Flow Control)

  • 송신 데이터가 수신 측 처리 속도를 초과하지 않도록 제어.
  • 수신 측이 송신 측에 피드백을 보내 데이터 흐름 조정.

7.1.5 혼잡 제어(Congestion Control)

  • 네트워크에 과도한 데이터그램이 몰려 발생하는 혼잡을 방지.
  • 혼잡 시 데이터그램 손실이 발생하고, 이로 인해 상황이 더 악화될 수 있음.

7.1.6 서비스 품질(Quality of Service, QoS)

  • 멀티미디어와 같은 실시간 애플리케이션 지원을 위해 QoS가 중요.
  • 주로 상위 계층에서 QoS 관련 기능 구현.

7.1.7 보안(Security)

  • 초기 인터넷 설계 시 보안 고려 부족.
  • 현재는 IPSec 같은 가상 계층을 통해 보안 기능 제공.

7.2 패킷 교환

패킷의 경로를 찾기 위해 데이터그램 방식, 가상-회선 방식을 사용한다.


7.2.1 데이터그램 방식(Datagram approach)

 

  • 네트워크 계층이 각 패킷을 독립적으로 처리하며, 패킷 간에 관계가 없다.
  • 패킷은 동일한 메시지라도 서로 다른 경로를 통해 전달될 수 있다.
  • 라우터(Router)는 패킷의 헤더에 있는 목적지 주소를 기반으로 패킷을 라우팅하며, 필요 시 소스 주소를 사용해 오류 메시지를 전송할 수 있다.

 

7.2.2 가상-회선 방식(Virtual-Circuit Approach)

 

  • 메시지에 속한 모든 패킷 간에 관계가 있으며, 전송 전에 경로를 설정해야 한다.
  • 설정된 가상 경로를 따라 모든 패킷이 동일한 경로로 전달된다.
  • 패킷에는 출발지와 목적지 주소 외에 가상 경로를 나타내는  가상 회선 식별자와 같은 흐름(flow) 레이블 포함된다.
  • 일부 구간에서 여전히 연결 없는 서비스가 사용되기 때문에 주소 정보는 유지된다.

 

7.3 성능

네트워크의 성능은 지연(delay), 처리량(throughput), 패킷 손실률(packet loss)로 측정 가능하다.


7.3.1 지연(Delay)

패킷이 발신지에서 목적지까지 전송될 때 필연적으로 지연이 발생한다. 

 

전송지연(Transmission Delay)

  • 패킷의 모든 비트를 전송하는 데 걸리는 시간.

 

전파지연(Propagation Delay)

  • 전송 매체를 통해 A지점에서 B지점까지 1비트가 전달되는 데 걸리는 시간

 

처리 지연 (Processing Delay)

  • 라우터나 목적지 호스트에서 패킷을 처리하는데 걸리는 시간

 

대기 지연 (Queuing Delay)

  • 패킷이 라우터에 있는 입력과 출력 큐에서 기다리는 시간

 

전체 지연(Total Delay)

  • 전체 경로상의 라우터의 개수 n을 알고 송신자, 라우터, 수신자가 각각 같은 지연을 가지고 있다고 가정할 때 패킷에 발생한 전체 지연
  • n개의 라우터가 있다면 (n+1)개의 링크가 존재한다. 

 


7.3.2 처리량(Throughput)

  • 처리량(Throughput)은 한 지점을 지나는 초당 비트 수이다.

3개의 연속된 링크로 구성된 경로의 처리량

  1. 링크 1에서는 200kbps 속도로 데이터가 전송된다. 
  2. 라우터 R1에 도착하면 이 속도로 라우터를 통과할 수 없다.
  3. 데이터는 라우터의 큐에 저장되고 100 kbps 속도로 전송된다.
  4. 데이터가 라우터 R2에 도착하면 150 kbps 속도로 전송될 수 있지만, 해당 속도로 전송할 만큼의 데이터가 R1로부터 전송되지 않는다.
  5. 즉 링크 3의 평큔 처리량도 100 kbps가 된다.
  6. 경로의 평균 처리량이 3개의 서로 다른 처리량 중 제일 작은 100 kbps가 된다.

 


7.3.3 패킷 손실(Packet Loss)

  • 데이터 전송 중 손실된 패킷 비율.

7.4 인터넷 프로토콜 버전 4(IPv4)

7.4.1 IPv4 주소 지정

  • 인터넷에 개한 각 장치의 연결을 식별하기 위해 TCP/IP 프로토콜 그룹의 IP 계층에서 사용되는 식별자는 인터넷 주소 혹은 IP 주소라고 한다. 
  • 라우터나 호스트가 아닌 연결의 주소이다.

주소 공간 (Address Space)

  • 32비트 주소로 구성되어 2^32=4,294,967,296개의 고유 주소를 제공.
  • 제한이 없다면 40억 개 이상의 장치를 인터넷에 연결 가능.

표기법 (Notation):

  • 이진 표기법 (Binary Notation): 32비트를 그대로 표시.
  • 도트 10진 표기법 (Dotted-Decimal Notation): 8비트(1바이트)씩 4개로 나눠 점(.)으로 구분 (예: 192.168.0.1).
  • 16진 표기법 (Hexadecimal Notation): 32비트를 16진수 8자리로 표시 (네트워크 프로그래밍에서 사용).

IPv4 주소의 세 가지 서로 다른 표기법

 

주소 계층 구조 (Hierarchy  in Addressing):

  • IPv4 주소는 계층적 구조를 가지며, 프리픽스 (Prefix)와 서픽스 (Suffix)로 나뉜다.
    • 프리픽스 (Prefix): 네트워크 식별자 (n 비트).
    • 서픽스 (Suffix): 노드 식별자 ((32 - n) 비트).

주소 지정에서 계층구조

 

클래스 기반의 주소 지정(Classful Addressing)

  • 초기 인터넷에서 IPv4 주소는 고정 길이 프리픽스를 사용하여 5개 클래스로 나뉘었다.

클래스 기반의 주소 지정에서 각 주소 공간의 점유율

  • 주소 고갈 문제로 더 이상 사용되지 않음

 

클래스 없는 주소 지정(Classless Addressing)

 

1. 가변 길이 블록:

  • 클래스 구분 없이 가변 길이 블록으로 주소 공간을 분할.
  • 블록 크기는 2^0,2^1,2^2,…,2^32처럼 2의 제곱수로 제한됨.
  • 각 블록은 프리픽스(prefix)가 네트워크를 정의하고, 서픽스(suffix)가 노드를 정의함.

클래스 없는 주소 지정에서 가변 길이 블록

 

2. CIDR 표기법 (Slash Notation):

  • 프리픽스 길이를 슬래시 /로 표시하여 블록의 크기를 나타냄.
    예: 192.168.1.0/24 → 프리픽스는 24비트, 네트워크 크기는 2^(32−24)=256 주소.

슬래시 표기범(CIDR)

 

주소 블록 정보 추출:
주어진 주소에서 다음 정보를 쉽게 추출 가능:

  1. 주소 수: 2^(32 - n), 여기서 n은 프리픽스 길이.
  2. 첫 번째 주소: 프리픽스의 n비트는 유지, 나머지 32−n비트는 0으로 설정.
  3. 마지막 주소: 프리픽스의 n비트는 유지, 나머지 32−n비트는 1로 설정.

예제 7.1

더보기

예제 7.1

주소: 167.199.170.82/27

1. 주소 개수 구하기:

주소 블록 크기는 프리픽스 길이에 따라 결정됩니다.

  • 전체 주소 공간: 2^(32)
  • 블록의 주소 개수: 2^(32−27)=2^5=32
    따라서, 32개의 주소가 이 네트워크에 속합니다.

2. 첫 번째 주소 구하기:

첫 번째 주소는 프리픽스(27비트)를 그대로 유지하고, 나머지 비트(32-27=5비트)를 0으로 설정합니다.

  • 주어진 주소: 167.199.170.82 → 이진수로 표현:
    10100111   11000111   10101010   01010010
  • 27비트 유지 + 5비트 0:
    10100111   11000111   10101010   01000000
  • 십진수 변환: 167.199.170.64
    따라서, 첫 번째 주소는 167.199.170.64/27입니다.

3. 마지막 주소 구하기:

마지막 주소는 프리픽스(27비트)를 그대로 유지하고, 나머지 비트(32-27=5비트)를 1로 설정합니다.

  • 주어진 주소: 167.199.170.82 → 이진수로 표현:
    10100111   11000111   10101010   01010010
  • 27비트 유지 + 5비트 1:
    10100111   11000111   10101010   01011111
  • 십진수 변환: 167.199.170.95
    따라서, 마지막 주소는 167.199.170.95/27입니다.

 

예제 7.5

더보기

14.24.74.0/0로 시작하고 14.24.74.255/24 로 끝나는 주소 블록을 할당받은 기관이 있다. 기관은 3개의 서브넷을 사용하여 주소를 각각 10개, 60개, 120개의 서브블록으로 나누려고 한다. 서브 블록을 설계하라.

 

1. 첫 번째 서브넷 (120개 주소 필요):

  • 필요한 주소: 120개 (2의 거듭제곱으로 올림 → 128개 할당)
  • 프리픽스 길이: n1=32−log⁡2(128)=25
  • 주소 범위:
    • 첫 번째 주소: 14.24.74.0/25
    • 마지막 주소: 14.24.74.127/25

2. 두 번째 서브넷 (60개 주소 필요):

  • 필요한 주소: 60개 (2의 거듭제곱으로 올림 → 64개 할당)
  • 프리픽스 길이: n2=32−log⁡2(64)=26
  • 주소 범위:
    • 첫 번째 주소: 14.24.74.128/26
    • 마지막 주소: 14.24.74.191/26

3. 세 번째 서브넷 (10개 주소 필요):

  • 필요한 주소: 10개 (2의 거듭제곱으로 올림 → 16개 할당)
  • 프리픽스 길이: n3=32−log⁡2(16)=28
  • 주소 범위:
    • 첫 번째 주소: 14.24.74.192/28
    • 마지막 주소: 14.24.74.207/28

7.4.2 주 프로토콜과 보조 프로토콜

IPv4 네트워크 계층은 하나의 주요 프로토콜세 가지 보조 프로토콜로 구성된다.

  1. 주요 프로토콜: IPv4
    • 기능: 패킷화, 전달, 수신
    • 특징:
      • 신뢰성 없음 (Unreliable): 패킷 손실, 순서 뒤바뀜, 지연 발생 가능. 신뢰성은 TCP와 같은 전송 계층 프로토콜이 담당.
      • 연결 없음 (Connectionless): 각 데이터그램은 독립적으로 처리되며 서로 다른 경로를 통해 전달될 수 있음.
  2. 보조 프로토콜:
    • ICMPv4: 오류 처리 및 네트워크 문제 관리
    • IGMP: IPv4의 멀티캐스팅 지원 (8장에서 설명)
    • ARP: 네트워크 계층 주소(IP)와 데이터 링크 계층 주소(MAC) 매핑

데이터그램 형식(Datagram Format)

IP 데이터그램

헤더 주요 필드 (필수 20바이트):

  1. 버전 (VER, 4비트): IPv4 사용을 나타냄.
  2. 헤더 길이 (HLEN, 4비트): 헤더의 총 길이를 4바이트 단위로 표시.
  3. 서비스 유형 (Service type, 8비트):
    • 초기: TOS(Type of Service), 데이터 처리 우선순위.
    • 현재: DiffServ, 애플리케이션을 우선순위에 따라 분류.
  4. 전체 길이 (Total length, 16비트): 데이터그램 전체 크기(헤더 + 데이터).
    • 데이터 크기 계산: 전체 길이(Total length) - (헤더 길이(HLEN) × 4).
  5. 식별, 플래그, 분할 오프셋(Identification, flags, and fragmentation offset):
    • 큰 데이터그램을 작은 조각으로 분할(프래그멘테이션) 관련 필드.
  6. TTL (Time-to-Live, 8비트):
    • 데이터그램이 인터넷에서 순환하지 않도록 최대 홉 수를 제한.
    • TTL 값이 0이 되면 데이터그램 폐기.
  7. 프로토콜 (Protocol, 8비트):
    • 페이로드가 포함된 프로토콜(TCP, UDP 등)을 식별.
  8. 헤더 체크섬 (Header checksum, 16비트):
    • 헤더 오류를 감지. TTL 등 일부 필드가 변하므로 라우터마다 체크섬 재계산.
  9. 출발지/목적지 주소 (Source and destination addresses, 32비트):
    • 출발지와 목적지 IP 주소를 포함.
  10. 옵션 (Options, 최대 40바이트):
    • 네트워크 테스트와 디버깅용 선택적 필드.

페이로드

  • 페이로드: 상위 계층(예: TCP, UDP)의 데이터를 포함.
  • 데이터그램의 주요 목적은 이 페이로드를 전달하는 것.

7.4.4 ICMPv4

  • IPv4는 오류 보고 및 수정 메커니즘이 없으므로, 오류 발생 시 이를 보완하기 위해 ICMPv4가 설계되었다.
  • ICMPv4는 네트워크 계층 프로토콜이며 IP 프로토콜의 동반자로서 오류 보고 및 관리 쿼리 기능을 제공한다.
  • ICMP 메시지는 IP 데이터그램에 캡슐화되어 전송됩니다.

ICMP 메시지 유형

오류 메시지를 위한 데이터 필드의 내용

 

  1. 오류 보고 메시지
    ICMP는 오류를 수정하지 않고 보고만 하며, 상위 계층 프로토콜에서 수정이 이루어집니다.
    • 목적지 도달 불가 (Type 3): 데이터그램이 목적지에 도달할 수 없는 경우 발생. 예: 서버 다운 시 "목적지 호스트에 도달 불가" 메시지 전송.
    • 소스 쿼치 (Type 4): 네트워크 혼잡으로 데이터그램이 삭제되었음을 알리고 송신 속도를 줄이도록 요청.
    • 리다이렉션 (Type 5): 잘못된 라우터로 전송된 데이터그램을 적절한 라우터로 리다이렉션하며, 송신자에게 올바른 기본 라우터를 알려줌.
    • 시간 초과 (Type 11): TTL(Time-to-Live) 값이 0이 되어 데이터그램이 삭제되었음을 알림. 조각이 시간 내에 모두 도착하지 않은 경우에도 사용.
    • 매개변수 문제 (Type 12): 헤더 문제나 해석 불가능한 옵션으로 인해 발생.
  2. 쿼리 메시지
    쿼리 메시지는 네트워크 상태를 확인하거나 정보를 요청하기 위해 사용됩니다.
    • 에코 요청/응답 (Type 8/0): 호스트나 라우터의 상태를 확인. 예: ping 명령.
    • 타임스탬프 요청/응답 (Type 13/14): 두 장치 간의 왕복 시간(RTT) 계산 또는 클록 동기화 확인.

 

ICMP 데이터 구조

  • 헤더: 8바이트 고정 크기. 메시지 유형(Type), 코드(Code), 체크섬(Checksum) 포함.
  • 데이터: 오류 메시지의 경우 원본 데이터그램 헤더와 첫 8바이트 데이터를 포함해 오류를 식별. 쿼리 메시지의 경우 요청 및 응답에 필요한 추가 정보 포함.

 

ICMP 기반 디버깅 도구

  1. 핑(Ping)
    • 호스트나 라우터가 활성 상태인지 확인.
    • 에코 요청 메시지를 보내고 응답을 받으면 RTT(왕복 시간) 계산.
  2. Traceroute
    • 패킷의 경로를 추적.
    • 각 라우터에서 TTL 값을 감소시키며 경로 정보를 수집.

7.4.5 이동(Mobile) IP

 

  • Mobile IP는 이동 중인 컴퓨터(예: 노트북)가 어느 네트워크에서도 인터넷에 연결할 수 있도록 지원하는 IP 확장 기술.
  • 문제점: 기존 IP 주소 체계는 고정된 네트워크에 연결된 정적 호스트를 전제로 설계됨.

 

정적 호스트:

  • IP 주소는 네트워크를 기반으로 구성(프리픽스는 네트워크, 서픽스는 호스트 식별).

이동 호스트(mobile host):

  • 다른 네트워크로 이동 시 기존 IP 주소 지정의 구조도 변경되야 한다.
  1. 주소 변경하기
    • 이동 호스트가 새로운 네트워크로 갈 때 자신의 주소도 변경되도록 하는 것
  2. 2개의 주소
    • 호스트가 홈 주소(home address)라는 원래 주소와 의탁 주소(care-of address)라는 임시 주소를 갖는 것
    • 홈 주소는 영구적이지만 의탁 주소는 이동 호스트가 다른 네트워크로 이동하면 변경된다.
  3. 에이전트
    • 홈 에이전트(Home Agent): 홈 네트워크에 위치, 외부 네트워크로 데이터 전달.
    • 외 에이전트(Foreign Agent): 외부 네트워크에 위치, 홈 에이전트로부터 데이터 수신 후 전달.

세 단계

원격 호스트와 통신하기 위해서 이동 호스트는 그림과 같이 에이전트 발견, 등록, 데이터 전송이라는 세 단계를 거친다.

 

 

원격지 호스트와 이동 호스트의 통신

 

 


7.4.6 IP 패킷의 포워딩(Forwarding)

  • 포워딩(Forwarding): 패킷을 다음 홉(최종 목적지 또는 중간 장치)으로 전달하는 과정.

목적지 주소 기반 전달 (전통적 방식, 현재 주로 사용):

  • 목적지 주소에 따라 패킷을 전달.
  • 라우터 또는 호스트는 포워딩 테이블을 사용하여 다음 홉 정보를 검색.

포워딩 테이블 구성:

  1. 네트워크 주소
  2. 서브넷 마스크(/n)
  3. 인터페이스 번호
  4. 다음 라우터 IP 주소.

 

포워딩 과정

  1. 테이블 검색:
    • 목적지 주소의 n개의 왼쪽 비트(프리픽스)를 추출하고 나머지 비트를 0으로 설정.
    • 추출한 네트워크 주소가 테이블의 첫 번째 열과 일치하면 다음 열의 정보를 사용.
    • 일치하지 않으면 다음 행으로 이동.
  2. 기본 행(Default Row):
    • 이전 행과 일치하지 않는 모든 목적지 주소를 처리.

예제 7.19

더보기

그림을 보고 라우터 R1의 포워딩 테이블을 작성하라

 

 

7.1.9의 답
위 표 대신 네트워크 주소/마스크 형태를 비트로 표현한 표

주소 집합화 (Address Aggregation)

  • 클래스 없는 주소 체계(Classless Addressing)에서는 여러 조직의 주소를 하나의 큰 블록으로 집합화할 수 있다. 이를 통해 라우터가 더 작은 포워딩 테이블을 유지하게 된다.

주소 집단화

 

포워딩 테이블 검색 알고리즘

  • 가장 긴 프리픽스 매칭 방법이 있지만, 이는 효율적이지 않음. 대신 트리의 특별한 종류인 트라이(Trie) 같은 데이터 구조를 사용하여 효율성을 높일 수 있음.

레이블 기반 포워딩 (Label-Based Forwarding)

  • MPLS(Multi-Protocol Label Switching)에서는 IP 패킷에 라벨을 붙여 연결 지향적인 방식으로 패킷을 포워딩.
  • 이를 통해 IP 패킷을 라벨로 인덱싱하여, 스위칭 방식으로 패킷을 전달.

레이블 기반 포워딩

 

➡️MPLS 헤더

  • 라벨(20비트)과 TTL(8비트) 등의 필드를 포함한 MPLS 헤더가 IP 패킷에 추가되어, 라벨 기반 포워딩을 가능하게 함.
  • MPLS는 계층적 스위칭을 지원하여, 라벨 스택을 사용해 여러 단계를 거쳐 패킷을 전달.
728x90
반응형