데이터 통신과 네트워킹-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)은 한 지점을 지나는 초당 비트 수이다.
- 링크 1에서는 200kbps 속도로 데이터가 전송된다.
- 라우터 R1에 도착하면 이 속도로 라우터를 통과할 수 없다.
- 데이터는 라우터의 큐에 저장되고 100 kbps 속도로 전송된다.
- 데이터가 라우터 R2에 도착하면 150 kbps 속도로 전송될 수 있지만, 해당 속도로 전송할 만큼의 데이터가 R1로부터 전송되지 않는다.
- 즉 링크 3의 평큔 처리량도 100 kbps가 된다.
- 경로의 평균 처리량이 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자리로 표시 (네트워크 프로그래밍에서 사용).
주소 계층 구조 (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 주소.
주소 블록 정보 추출:
주어진 주소에서 다음 정보를 쉽게 추출 가능:
- 주소 수: 2^(32 - n), 여기서 n은 프리픽스 길이.
- 첫 번째 주소: 프리픽스의 n비트는 유지, 나머지 32−n비트는 0으로 설정.
- 마지막 주소: 프리픽스의 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−log2(128)=25
- 주소 범위:
- 첫 번째 주소: 14.24.74.0/25
- 마지막 주소: 14.24.74.127/25
2. 두 번째 서브넷 (60개 주소 필요):
- 필요한 주소: 60개 (2의 거듭제곱으로 올림 → 64개 할당)
- 프리픽스 길이: n2=32−log2(64)=26
- 주소 범위:
- 첫 번째 주소: 14.24.74.128/26
- 마지막 주소: 14.24.74.191/26
3. 세 번째 서브넷 (10개 주소 필요):
- 필요한 주소: 10개 (2의 거듭제곱으로 올림 → 16개 할당)
- 프리픽스 길이: n3=32−log2(16)=28
- 주소 범위:
- 첫 번째 주소: 14.24.74.192/28
- 마지막 주소: 14.24.74.207/28
7.4.2 주 프로토콜과 보조 프로토콜
IPv4 네트워크 계층은 하나의 주요 프로토콜과 세 가지 보조 프로토콜로 구성된다.
- 주요 프로토콜: IPv4
- 기능: 패킷화, 전달, 수신
- 특징:
- 신뢰성 없음 (Unreliable): 패킷 손실, 순서 뒤바뀜, 지연 발생 가능. 신뢰성은 TCP와 같은 전송 계층 프로토콜이 담당.
- 연결 없음 (Connectionless): 각 데이터그램은 독립적으로 처리되며 서로 다른 경로를 통해 전달될 수 있음.
- 보조 프로토콜:
- ICMPv4: 오류 처리 및 네트워크 문제 관리
- IGMP: IPv4의 멀티캐스팅 지원 (8장에서 설명)
- ARP: 네트워크 계층 주소(IP)와 데이터 링크 계층 주소(MAC) 매핑
데이터그램 형식(Datagram Format)
헤더 주요 필드 (필수 20바이트):
- 버전 (VER, 4비트): IPv4 사용을 나타냄.
- 헤더 길이 (HLEN, 4비트): 헤더의 총 길이를 4바이트 단위로 표시.
- 서비스 유형 (Service type, 8비트):
- 초기: TOS(Type of Service), 데이터 처리 우선순위.
- 현재: DiffServ, 애플리케이션을 우선순위에 따라 분류.
- 전체 길이 (Total length, 16비트): 데이터그램 전체 크기(헤더 + 데이터).
- 데이터 크기 계산: 전체 길이(Total length) - (헤더 길이(HLEN) × 4).
- 식별, 플래그, 분할 오프셋(Identification, flags, and fragmentation offset):
- 큰 데이터그램을 작은 조각으로 분할(프래그멘테이션) 관련 필드.
- TTL (Time-to-Live, 8비트):
- 데이터그램이 인터넷에서 순환하지 않도록 최대 홉 수를 제한.
- TTL 값이 0이 되면 데이터그램 폐기.
- 프로토콜 (Protocol, 8비트):
- 페이로드가 포함된 프로토콜(TCP, UDP 등)을 식별.
- 헤더 체크섬 (Header checksum, 16비트):
- 헤더 오류를 감지. TTL 등 일부 필드가 변하므로 라우터마다 체크섬 재계산.
- 출발지/목적지 주소 (Source and destination addresses, 32비트):
- 출발지와 목적지 IP 주소를 포함.
- 옵션 (Options, 최대 40바이트):
- 네트워크 테스트와 디버깅용 선택적 필드.
페이로드
- 페이로드: 상위 계층(예: TCP, UDP)의 데이터를 포함.
- 데이터그램의 주요 목적은 이 페이로드를 전달하는 것.
7.4.4 ICMPv4
- IPv4는 오류 보고 및 수정 메커니즘이 없으므로, 오류 발생 시 이를 보완하기 위해 ICMPv4가 설계되었다.
- ICMPv4는 네트워크 계층 프로토콜이며 IP 프로토콜의 동반자로서 오류 보고 및 관리 쿼리 기능을 제공한다.
- ICMP 메시지는 IP 데이터그램에 캡슐화되어 전송됩니다.
ICMP 메시지 유형
- 오류 보고 메시지
ICMP는 오류를 수정하지 않고 보고만 하며, 상위 계층 프로토콜에서 수정이 이루어집니다.- 목적지 도달 불가 (Type 3): 데이터그램이 목적지에 도달할 수 없는 경우 발생. 예: 서버 다운 시 "목적지 호스트에 도달 불가" 메시지 전송.
- 소스 쿼치 (Type 4): 네트워크 혼잡으로 데이터그램이 삭제되었음을 알리고 송신 속도를 줄이도록 요청.
- 리다이렉션 (Type 5): 잘못된 라우터로 전송된 데이터그램을 적절한 라우터로 리다이렉션하며, 송신자에게 올바른 기본 라우터를 알려줌.
- 시간 초과 (Type 11): TTL(Time-to-Live) 값이 0이 되어 데이터그램이 삭제되었음을 알림. 조각이 시간 내에 모두 도착하지 않은 경우에도 사용.
- 매개변수 문제 (Type 12): 헤더 문제나 해석 불가능한 옵션으로 인해 발생.
- 쿼리 메시지
쿼리 메시지는 네트워크 상태를 확인하거나 정보를 요청하기 위해 사용됩니다.- 에코 요청/응답 (Type 8/0): 호스트나 라우터의 상태를 확인. 예: ping 명령.
- 타임스탬프 요청/응답 (Type 13/14): 두 장치 간의 왕복 시간(RTT) 계산 또는 클록 동기화 확인.
ICMP 데이터 구조
- 헤더: 8바이트 고정 크기. 메시지 유형(Type), 코드(Code), 체크섬(Checksum) 포함.
- 데이터: 오류 메시지의 경우 원본 데이터그램 헤더와 첫 8바이트 데이터를 포함해 오류를 식별. 쿼리 메시지의 경우 요청 및 응답에 필요한 추가 정보 포함.
ICMP 기반 디버깅 도구
- 핑(Ping)
- 호스트나 라우터가 활성 상태인지 확인.
- 에코 요청 메시지를 보내고 응답을 받으면 RTT(왕복 시간) 계산.
- Traceroute
- 패킷의 경로를 추적.
- 각 라우터에서 TTL 값을 감소시키며 경로 정보를 수집.
7.4.5 이동(Mobile) IP
- Mobile IP는 이동 중인 컴퓨터(예: 노트북)가 어느 네트워크에서도 인터넷에 연결할 수 있도록 지원하는 IP 확장 기술.
- 문제점: 기존 IP 주소 체계는 고정된 네트워크에 연결된 정적 호스트를 전제로 설계됨.
정적 호스트:
- IP 주소는 네트워크를 기반으로 구성(프리픽스는 네트워크, 서픽스는 호스트 식별).
이동 호스트(mobile host):
- 다른 네트워크로 이동 시 기존 IP 주소 지정의 구조도 변경되야 한다.
- 주소 변경하기
- 이동 호스트가 새로운 네트워크로 갈 때 자신의 주소도 변경되도록 하는 것
- 2개의 주소
- 호스트가 홈 주소(home address)라는 원래 주소와 의탁 주소(care-of address)라는 임시 주소를 갖는 것
- 홈 주소는 영구적이지만 의탁 주소는 이동 호스트가 다른 네트워크로 이동하면 변경된다.
- 에이전트
- 홈 에이전트(Home Agent): 홈 네트워크에 위치, 외부 네트워크로 데이터 전달.
- 외 에이전트(Foreign Agent): 외부 네트워크에 위치, 홈 에이전트로부터 데이터 수신 후 전달.
세 단계
원격 호스트와 통신하기 위해서 이동 호스트는 그림과 같이 에이전트 발견, 등록, 데이터 전송이라는 세 단계를 거친다.
7.4.6 IP 패킷의 포워딩(Forwarding)
- 포워딩(Forwarding): 패킷을 다음 홉(최종 목적지 또는 중간 장치)으로 전달하는 과정.
목적지 주소 기반 전달 (전통적 방식, 현재 주로 사용):
- 목적지 주소에 따라 패킷을 전달.
- 라우터 또는 호스트는 포워딩 테이블을 사용하여 다음 홉 정보를 검색.
포워딩 테이블 구성:
- 네트워크 주소
- 서브넷 마스크(/n)
- 인터페이스 번호
- 다음 라우터 IP 주소.
포워딩 과정
- 테이블 검색:
- 목적지 주소의 n개의 왼쪽 비트(프리픽스)를 추출하고 나머지 비트를 0으로 설정.
- 추출한 네트워크 주소가 테이블의 첫 번째 열과 일치하면 다음 열의 정보를 사용.
- 일치하지 않으면 다음 행으로 이동.
- 기본 행(Default Row):
- 이전 행과 일치하지 않는 모든 목적지 주소를 처리.
예제 7.19
그림을 보고 라우터 R1의 포워딩 테이블을 작성하라
주소 집합화 (Address Aggregation)
- 클래스 없는 주소 체계(Classless Addressing)에서는 여러 조직의 주소를 하나의 큰 블록으로 집합화할 수 있다. 이를 통해 라우터가 더 작은 포워딩 테이블을 유지하게 된다.
포워딩 테이블 검색 알고리즘
- 가장 긴 프리픽스 매칭 방법이 있지만, 이는 효율적이지 않음. 대신 트리의 특별한 종류인 트라이(Trie) 같은 데이터 구조를 사용하여 효율성을 높일 수 있음.
레이블 기반 포워딩 (Label-Based Forwarding)
- MPLS(Multi-Protocol Label Switching)에서는 IP 패킷에 라벨을 붙여 연결 지향적인 방식으로 패킷을 포워딩.
- 이를 통해 IP 패킷을 라벨로 인덱싱하여, 스위칭 방식으로 패킷을 전달.
➡️MPLS 헤더
- 라벨(20비트)과 TTL(8비트) 등의 필드를 포함한 MPLS 헤더가 IP 패킷에 추가되어, 라벨 기반 포워딩을 가능하게 함.
- MPLS는 계층적 스위칭을 지원하여, 라벨 스택을 사용해 여러 단계를 거쳐 패킷을 전달.
'데이터 통신과 네트워킹 TCP-IP프로토콜 기반' 카테고리의 다른 글
[데이터 통신과 네트워킹-TCP/IP프로토콜 기반] 8장 네트워크층: 패킷의 라우팅 (0) | 2025.01.21 |
---|---|
[데이터 통신과 네트워킹-TCP/IP프로토콜 기반] 6장 연결 장치와 가상 LAN (0) | 2025.01.07 |
[데이터 통신과 네트워킹-TCP/IP프로토콜 기반] 5장 광역 통신망: WAN (0) | 2024.12.19 |
[데이터 통신과 네트워킹-TCP/IP프로토콜 기반] 4장 (0) | 2024.11.28 |
[데이터 통신과 네트워킹-TCP/IP프로토콜 기반] 3장 데이터 링크층 (0) | 2024.11.22 |