IP datagram format
VER : IP 프로토콜의 버전을 의미(IP v4 : 0100, IP v6:0110) 4자리 비트로 이루어져있음
Head.len : 헤더의 길이를 알린다(어디서부터 어디까지가 paylad Data인지).
옵션이 없으면 20바이트 옵션이 최대로 추가되면 60바이트
type of serveice : 해당 Datagram의 지연, 우선순위, 신뢰성, 처리량 등의 정보를 담고 있다(8bit).
Total Length : 헤더와 데이터 부분을 합한 데이터그램의 전체 길이(16bit),65,535비트(64KB)를 넘지
못합니다
16-bit identifier, flags, fragment offset : 데이터의 길이가 전체 패킷 길이보다 길어 쪼개야
할 필요가 있을 때 각 패킷들 간의 순서 보장을 위한 부분이다.
이 때 쪼개는 작업을 fragmentation 이라고 한다.(목적지에서 마지막에 재조합한다는 것)
16-bit identifier(16비트) : 동일한 Identifier를 가진 조각들은 같은 원본 데이터그램에 속합니다.
수신 측에서 여러 데이터그램의 조각들이 섞여 있을 때,
어떤 조각들이 함께 재조립되어야 하는지 구분하는 데 사용됩니다.
flags(3비트) : 첫 번째 비트 (비트 0)
예약된 비트로, 항상 0으로 설정됩니다.
현재는 사용되지 않지만, 향후 사용을 위해 예약되어 있습니다.
두 번째 비트 (비트 1) - DF (Do not Fragment)
0: 조각화 허용
1: 조각화 금지
이 비트가 1로 설정되면, 데이터그램이 MTU보다 큰 경우에도 조각화되지 않습니다.
이 경우 라우터는 해당 데이터그램을 폐기하고 ICMP 오류 메시지를 송신자에게 보냅니다.
세 번째 비트 (비트 2) - MF (More Fragments)
0: 마지막 조각
1: 더 많은 조각이 있음
이 비트가 1로 설정되면, 현재 조각 뒤에 더 많은 조각이 있다는 것을 나타냅니다.
마지막 조각에서만 이 비트가 0으로 설정됩니다.
fragment offset(13비트) : 조각의 순서를 결정하는 데 사용됩니다.
각 조각이 원본 데이터그램에서 어느 위치에 해당하는지를 나타냅니다.
수신 측에서 이 값을 사용하여 조각들을 올바른 순서로 재배열합니다.
time to Live : 수명을 알려주는 필드(Datagram이 네이트워크 상에서 존재할수 있는
시간-떠도는 시간을 없애기 위해서)
upper Layer : 프로토콜에 대한 정보를 담고 있습니다(8bit), 대표적으로 UDP(17), TCP(6),
ICMP(1)을 사용합니다.
Header checksum : 헤더에 오류가 있는지 확인하기 위한 16비트로 이루어진 필드
Source/Destination Ip Address : 각각 32비트로 이루어지며 송신과 수신자의 IP주소가
기록되어 있습니다.
IP fragmentation / reassembly
원본 데이터그램
길이 (Length): 4000 바이트
식별자 (ID): 모든 조각에 동일한 값이 사용됩니다.
플래그 (Fragflag): 0 (조각화되지 않음)
오프셋 (Offset): 0 (조각화되지 않음)
조각화 후
첫 번째 조각
길이: 1500 바이트 (IP 헤더 20바이트 + 데이터 1480바이트)
플래그: 1 (추가 조각 있음)
오프셋: 0
두 번째 조각
길이: 1500 바이트 (IP 헤더 20바이트 + 데이터 1480바이트)
플래그: 1 (추가 조각 있음)
오프셋: 185 (1480바이트 / 8)
세 번째 조각
길이: 1040 바이트 (IP 헤더 20바이트 + 나머지 데이터 1020바이트)
플래그: 0 (마지막 조각)
오프셋: 370 (2960바이트 / 8)
설명
데이터그램은 MTU(1500 바이트)보다 크므로 조각화가 필요합니다.
각 조각은 IP 헤더를 포함하여 MTU를 초과하지 않도록 합니다.
각 조각은 원본 데이터그램의 특정 부분을 나타내며, 오프셋을 통해 순서를 결정합니다.
플래그는 추가 조각의 존재 여부를 나타내며, 마지막 조각에서는 플래그가 0으로 설정됩니다.
IP 주소
정의: 각 호스트(또는 라우터) 인터페이스에 할당된 32비트 식별자입니다.
표기법: 점으로 구분된 10진수 표기법을 사용합니다.
예를 들어, IP 주소 223.1.1.1은 이진수로 11011111 00000001 00000001 00000001로 표현됩니다.
인터페이스
정의: 호스트 또는 라우터와 물리적 링크 간의 연결을 의미합니다.
특징:
라우터는 일반적으로 여러 개의 인터페이스를 가집니다.
호스트는 일반적으로 하나 또는 두 개의 인터페이스를 가집니다(예: 유선 이더넷, 무선 802.11)
서브넷이란?
라우터를 거치지 않고 물리적으로 서로 연결될 수 있는 장치 인터페이스의 집합입니다.
같은 서브넷에 있는 장치는 공통의 상위 비트를 공유합니다.
IP 주소 구조
서브넷 부분: 같은 서브넷에 있는 장치들이 공유하는 고위 비트입니다.
호스트 부분: 나머지 저위 비트로, 개별 장치를 식별합니다.
서브넷 정의 방법
각 인터페이스를 호스트나 라우터에서 분리하여 고립된 네트워크 "섬"을 만듭니다.
이러한 고립된 네트워크를 서브넷이라고 합니다.
서브넷 마스크
예시에서는 서브넷 마스크가 /24로, 상위 24비트가 IP 주소의 서브넷 부분을 나타냅니다.
IP 주소 지정: CIDR
CIDR (Classless InterDomain Routing): IP 주소의 서브넷 부분에 임의의 길이를 허용합니다.
주소 형식: a.b.c.d/x 형태로, x는 서브넷 부분의 비트 수를 나타냅니다.
예시: 200.23.16.0/23는 서브넷 부분과 호스트 부분으로 나뉩니다
(200은 c클래이스이고 1비트가 하나도 없이 때문에 23이다)
*플러그 앤 플레이 : 컴퓨터 시스템이 사용자의 개입 없이 하드웨어를 자동으로 인식하고 설정할
수 있도록 하는 기술입니다
IP 주소 획득 방법
정적 할당 (Hard-coded):
시스템 관리자가 구성 파일(예: UNIX의 /etc/rc.config)에 IP 주소를 직접 설정합니다.
동적 할당 (DHCP):
**DHCP (Dynamic Host Configuration Protocol)**를 사용하여 서버로부터 IP 주소를
자동으로 할당받습니다.
"플러그 앤 플레이" 방식으로 쉽게 네트워크에 연결할 수 있습니다.
*DHCP
목적:
네트워크에 연결될 때 호스트가 네트워크 서버로부터 동적으로 IP 주소를 받습니다.
사용 중인 IP 주소의 임대를 갱신할 수 있습니다.
노트북과 같은 장치가 네트워크에 연결될 때 DHCP를 통해 IP 주소, 첫 번째 라우터의 주소,
DNS 서버의 주소를 자동으로 받습니다.
네트워크에 자주 연결하거나 떠나는 모바일 사용자에게 유용합니다.
DHCP 프로세스 개요(네트워크에 연결된 장치들이 자동으로 IP 주소를 할당받아 쉽게 통신할 수 있도록
합니다):
DHCP Discover: 호스트가 DHCP 서버를 찾기 위해 브로드캐스트 메시지를 전송합니다.
DHCP Offer: DHCP 서버가 사용 가능한 IP 주소를 제안하는 메시지를 보냅니다.
DHCP Request: 호스트가 제안받은 IP 주소를 요청하는 메시지를 보냅니다.
DHCP Acknowledgement (ACK): DHCP 서버가 요청을 승인하고 최종 확인 메시지를 보냅니다.
데이터 캡슐화:
DHCP 요청 메시지는 UDP, IP, 이더넷 프레임으로 캡슐화되어 전송됩니다.
이더넷 프레임은 네트워크 상에서 브로드캐스트됩니다.
DHCP 서버와 클라이언트
DHCP 서버: 네트워크에 연결된 모든 서브넷에 IP 주소를 할당합니다. 일반적으로 라우터와 함께
위치합니다.
DHCP 클라이언트: 네트워크에 새로 연결된 장치로, IP 주소가 필요합니다.
DHCP의 기능:
IP 주소 할당: 서브넷 내에서 클라이언트에게 IP 주소를 할당합니다.
라우터 주소: 클라이언트가 사용할 첫 번째 라우터(게이트웨이)의 주소를 제공합니다.
DNS 서버 정보: DNS 서버의 이름과 IP 주소를 제공합니다.
네트워크 마스크: 네트워크와 호스트 부분을 구분하는 서브넷 마스크를 제공합니다.
*NAT
NAT의 역할: 로컬 네트워크에 있는 모든 장치가 외부 세계와 통신할 때 하나의 공용 IPv4 주소를 공유하도록 합니다.
로컬 네트워크: 예시로 10.0.0.0/24 네트워크가 사용되고 있으며, 이는 사설 IP 주소 범위입니다.
데이터그램 처리: 로컬 네트워크 내에서 출발하거나 도착하는 데이터그램은 일반적으로 10.0.0.x 형식의 주소를 사용합니다.
NAT 장치: 이 장치는 로컬 네트워크에서 나가는 데이터그램의 소스 주소를 공용 IP 주소로 변환하여 외부로 보냅니다.
공용 IP 주소: 로컬 네트워크에서 나가는 모든 데이터그램은 138.76.29.7이라는 동일한 공용 IP 주소를 사용하지만, 서로 다른 소스 포트 번호를 사용합니다.
*장점:
IP 주소 절약: ISP로부터 하나의 공용 IP 주소만 필요합니다.
유연한 네트워크 관리: 외부 세계에 알리지 않고 로컬 네트워크 내 장치들의 IP 주소를 변경할 수 있습니다.
보안 강화: 외부에서 로컬 네트워크의 장치들을 직접 접근할 수 없습니다.
*NAT 작동 과정
데이터그램 전송:
호스트 10.0.0.1이 외부 서버 128.119.40.186의 포트 80으로 데이터그램을 보냅니다.
NAT 라우터 변환:
NAT 라우터는 데이터그램의 소스 주소를 10.0.0.1, 3345에서 138.76.29.7, 5001로 변경하고, 변환 테이블에 이 정보를 업데이트합니다.
응답 수신:
외부 서버로부터 응답이 도착하면, 목적지 주소는 138.76.29.7, 5001입니다.
데이터그램 전달:
NAT 라우터는 변환 테이블을 참조하여, 응답 데이터그램의 목적지 주소를 원래의 로컬 주소인 10.0.0.1, 3345로 변경하여 전달합니다.
*IPv4 && IPv6(32비트 IPv4 주소 공간이 완전히 할당될 것이라는 우려가 있어서 IPv6개발)
IPv4:
주소 크기: 32비트
주소 형식: 점으로 구분된 십진 표기법 (예: 192.168.1.1)
접두사 표기법: /24
주소 수: 약 43억 개
IPv6:
주소 크기: 128비트
주소 구조:
전체 128비트 중 첫 3비트는 주소 유형을 결정하는 데 사용됩니다.
나머지 125비트는 실제 주소 공간으로 사용됩니다.
주소 형식: 16진수 표기법 (예: fe80::94db:94e0:84de:129e)
접두사 표기법: /64
주소 수: 약 3.4×10^38개
IPv6 Datagram format
헤더 필드:
버전 (ver): IPv6의 버전을 나타냅니다.
우선순위 (priority): 데이터그램의 우선순위를 식별하여 흐름 내에서의 우선순위를 결정합니다.
흐름 레이블 (flow label): 동일한 흐름에 속하는 데이터그램을 식별합니다. 흐름의 개념은 아직 명확히 정의되지 않았습니다.
주소:
소스 주소: 128비트 IPv6 주소.
목적지 주소: 128비트 IPv6 주소.
기타 필드:
페이로드 길이 (payload len): 데이터그램의 페이로드 길이를 나타냅니다.
다음 헤더 (next hdr): 다음에 오는 헤더의 유형을 지정합니다.
홉 제한 (hop limit): 패킷이 네트워크를 통해 이동할 수 있는 최대 홉 수를 설정합니다.
IPv4와의 차이점
누락된 요소:
체크섬 없음: 라우터에서 처리 속도를 높이기 위해 제거되었습니다.
단편화 및 재조립 없음: IPv6에서는 이러한 기능을 지원하지 않습니다.
옵션 없음: 상위 계층에서 사용 가능하며, 다음 헤더에 포함됩니다.
IPv6 주소:
길이: 128비트
표기법: 16진수 숫자로 구성된 여덟 그룹으로 작성됩니다.
점으로 구분된 십진 표기법 없음: IPv4와 달리 점으로 구분된 형식이 없습니다.
축약 규칙:
모두 0인 그룹 생략: 연속된 0 그룹은 ::로 한 번만 생략할 수 있습니다.
선행 0 생략: 각 그룹의 선행 0을 생략할 수 있습니다.
주소 구조:
글로벌 프리픽스, 서브넷, 인터페이스 ID로 구성됩니다.
IPv6 줄이는 방법
Match-all address (모든 주소 일치):
IPv4의 0.0.0.0에 해당하는 IPv6 주소는 0000:0000:0000:0000:0000:0000:0000:0000이며, 이를 ::로 줄일 수 있습니다.
Loop-back address (루프백 주소):
IPv4의 127.0.0.1에 해당하는 IPv6 주소는 0000:0000:0000:0000:0000:0000:0000:0001이며, 이를 ::1로 줄일 수 있습니다.
정의: 물리적 표현이 없는 논리적 인터페이스를 식별하며 항상 활성 상태입니다.
기능: 루프백 주소로 전송된 패킷은 동일한 인터페이스로 반환됩니다. 주로 TCP/IP 네트워킹 스택을 테스트하는 데 사용됩니다.
IPv4에서의 루프백 주소:
127.0.0.0/8 범위가 루프백 주소로 예약되어 있으며, 일반적으로 127.0.0.1이 "localhost"로 사용됩니다.
IPv6에서의 루프백 주소:
0:0:0:0:0:0:0:1/128 또는 ::1/128이 루프백 식별자로 예약되어 있습니다.
All-nodes address (모든 노드 주소):
IPv4의 멀티캐스트 주소 224.0.0.1에 해당하는 IPv6 주소는 ff02:0000:0000:0000:0000:0001이며, 이를 ff02::1로 줄일 수 있습니다.
Random link-local address (랜덤 링크 로컬 주소):
예시로 주어진 IPv6 주소 fe80:0000:0000:0000:0f19:1faf:008:5010은 fe80::f19:1faf:8:5010으로 줄일 수 있습니다
IPv4 주소 유형
유니캐스트 (Unicast):
IPv6를 지원하는 노드의 단일 인터페이스를 식별합니다.
일대일 통신을 수행합니다.
링크 로컬 주소
특징:
링크 로컬 주소는 유니캐스트 주소의 일종으로, 인터페이스에서 자동 구성됩니다.
공통 링크에 연결된 노드들이 전역적으로 고유한 주소 없이 통신할 수 있도록 합니다.
멀티캐스트 (Multicast):
서로 다른 IPv6 노드에 속한 여러 인터페이스를 식별합니다.
일대다 통신을 수행합니다.
인터페이스 집합: 멀티캐스트 그룹으로 알려진 단일 멀티캐스트 주소로 식별될 수 있습니다.
IPv4에서의 멀티캐스트 주소:
주소 공간 224.0.0.0/24가 멀티캐스트 주소로 사용됩니다.
IPv6에서의 멀티캐스트 주소:
앞부분에 11111111(16진수 FF) 값이 멀티캐스트 주소를 나타냅니다.
모든 멀티캐스트 주소는 접두사 ff00::/8의 일부입니다.
잘 알려진 멀티캐스트 주소는 접두사 ff00::/12로 시작합니다.
중요 규칙:
멀티캐스트 그룹으로 전송된 패킷은 항상 유니캐스트 소스 주소를 가집니다.
멀티캐스트 주소는 패킷의 소스 주소로 사용할 수 없습니다.
애니캐스트 (Anycast):
서로 다른 IPv6 노드에 속한 여러 인터페이스를 식별합니다.
가장 가까운 노드와의 통신을 수행합니다. 여기서 "가장 가까운"은 일반적으로 IPv6 라우팅 프로토콜에 따라 가장 좋은 라우팅 메트릭을 가진 노드를 의미합니다.
브로드캐스트 주소 없음: IPv6에서는 브로드캐스트 주소가 사용되지 않습니다.
* IPv4와 IPv6의 터널링
터널링:
IPv6 데이터그램이 IPv4 데이터그램의 페이로드로 전송됩니다. 이는 "패킷 내의 패킷"으로 설명됩니다.
IPv4 라우터 사이에서 IPv6 패킷을 전송할 때 사용됩니다.
다른 용도:
터널링은 4G/5G와 같은 다른 문맥에서도 광범위하게 사용됩니다.
이미지 설명:
그림에는 IPv4 데이터그램 안에 포함된 IPv6 데이터그램의 구조가 시각적으로 표현되어 있습니다.
IPv4 헤더 필드, IPv6 헤더 필드, 그리고 UDP/TCP 페이로드가 표시되어 있습니다.
*터널링과 캡슐화
이더넷 연결: 두 IPv6 라우터를 연결하는 이더넷을 보여줍니다. 일반적으로 링크 계층 프레임의 페이로드로 데이터그램이 전송됩니다.
IPv4 네트워크 연결: 두 IPv6 라우터 사이의 IPv4 네트워크를 통해 터널링이 이루어집니다. IPv6 데이터그램이 IPv4 데이터그램에 캡슐화되어 전송됩니다.
구조 설명:
그림에서는 A에서 E로 이어지는 IPv6 라우터들이 표시되어 있으며, 중간에 IPv4 네트워크가 존재합니다.
이 과정에서 IPv6/v4 라우터가 사용되어 IPv6 데이터가 IPv4 네트워크를 통해 전달됩니다.
이더넷 연결: 두 IPv6 라우터(A와 E)를 직접 연결하는 경우, IPv6 데이터그램이 링크 계층 프레임의 페이로드로 전송됩니다.
IPv4 터널링: 두 IPv6 라우터 사이에 IPv4 네트워크가 있을 때, IPv6 데이터그램이 IPv4 데이터그램의 페이로드로 캡슐화되어 전송됩니다. 이는 "패킷 내의 패킷" 형태로 설명됩니다.
'학교 공부 > 컴퓨터 네트워크' 카테고리의 다른 글
Computer Networks Lecture #1 - supplementar (0) | 2024.10.24 |
---|---|
Computer Networks Lecture #4 -Generalized forwarding, SDN (0) | 2024.10.07 |
Computer Networks Lecture #2 -Introduction to control plane in network layer (1) | 2024.09.27 |
Session ID (0) | 2024.07.18 |
Day_03~04 (0) | 2024.05.18 |