IPv4 데이터그램 포맷 및 주요 필드
- IP 데이터그램은 총 20바이트의 헤더(옵션이 없다고 가정)를 갖는다.
- 데이터그램이 TCP 세그먼트를 전송할 경우
- 단편화되지 않은 각 데이터그램은 애플리케이션 계층 메시지와 함께 총 40바이트의 헤더를 전송
- IP헤더 20 + TCP 헤더 20
- 단편화되지 않은 각 데이터그램은 애플리케이션 계층 메시지와 함께 총 40바이트의 헤더를 전송
버전 정보
- 4비트로 데이터그램의 IP 프로토콜 버전을 명시한다.
- 라우터는 버전 번호를 확인하여 데이터그램의 나머지 부분을 어떻게 해석할지 결정
헤더 길이
- IPv4 데이터그램은 헤더에 가변 길이의 옵션을 포함
→ 해당 4개의 비트로 IP 데이터그램에서 실제 페이로드가 시작하는 곳을 결정페이로드(payload)
: 전송되는 데이터 자체를 뜻함- 예시 - 데이터그램에 캡슐화된 트랜스포트 계층 세그먼트
- 예시 - 데이터그램에 캡슐화된 트랜스포트 계층 세그먼트
- 대부분의 IPv4 데이터그램은 옵션을 포함하지 않음
→ IPv4 데이터그램 헤더는 20바이트
서비스 타입
- IPv4 헤더에 포함된 서비스 타입(type of service, TOS) 비트
→ 각자 다른 유형의 IP 데이터 그램을 구별- 예시 : 실시간 데이터그램(IP 전화 통화 애플리케이션)과 비실시간 트래픽을 구분하는데 유용
- 예시 : 실시간 데이터그램(IP 전화 통화 애플리케이션)과 비실시간 트래픽을 구분하는데 유용
- TOS 비트 중 2개는 명시적 혼잡 알림에 사용됨
- 제공될 서비스 레벨은 해당 라우터의 네트워크 관리자가 결정하고 구성
데이터그램 길이
- 바이트로 계산한 IP 데이터그램(헤더 + 데이터)의 전체 길이
- 필드의 크기 = 16비트 → 이론상 최대 길이는 65,535바이트
← 하지만 실제론 1,500바이트 보다 큰 경우는 거의 없음- 최대 크기의 이더넷 프레임의 페이로드 필드에 IP 데이터그램이 장착될 수 있음
식별자, 플래그, 단편화 오프셋
- 이 3개의 필드는
IP 단편화
와 연관됨 - IP 단편화 동작
- 큰 데이터그램이 여러 개의 작은 IP 데이터그램으로 분할됨
- 이후 분할된 데이터그램이 목적지로 독립적으로 전달
- 여기서 페이로드 데이터가 최종 호스트의 트랜스포트 계층에 전달되기 전에 다시 모임
TTL(Time-To-Live)
- 네트워크에서 데이터그램이 무한히 순환(라우팅 루프) 하지 않도록 하는 필드
- 이 필드값은 라우터가 데이터그램을 처리할 때마다 감소
→ 필드가 0이 되면 라우터가 데이터그램을 폐기
프로토콜
- 일반적으로 IP 데이터그램이 최종 목적지에 도착했을 때 사용되는 필드
- 필드값 → 데이터그램에서 데이터 부분이 전달될 목적지의 트랜스포트 계층의 특정 프로토콜을 명시
- 예시 - 값 6은 데이터 부분을 TCP로, 17은 UDP로 데이터를 전달하라는 뜻
- 예시 - 값 6은 데이터 부분을 TCP로, 17은 UDP로 데이터를 전달하라는 뜻
- IP 데이터그램 프로토콜 번호의 역할은 트랜스포트 계층 세그먼트 포트 번호 필드의 역할과 유사
→ 프로토콜 번호는 네트워크 계층과 트랜스포트 계층을 묶는 역할을 한다.
헤더 체크섬
- 라우터가 수신한 IP 데이터그램의 비트 오류를 탐지하는데 도움을 줌
- 트랜스포트 계층과 네트워크 계층에서 오류 검사를 수행하는 이유
- IP 헤더만 IP 계층에서 체크섬을 수행하지만, TCP/UDP 체크섬은 전체 TCP/UDP 세그먼트를 계산
- TCP/UDP와 IP는 동일한 프로토콜 스택에 속할 필요가 없다.
→ IP는 TCP/UDP로 전달되지 않는 데이터를 전달할 수도 있기 때문
- 트랜스포트 계층과 네트워크 계층에서 오류 검사를 수행하는 이유
- 헤더 체크섬의 값 = 헤더에서 각 2바이트를 수로 처리하고 이 1의 보수를 합산하여 계산
- 인터넷 체크섬으로 알려진 이 합의 1의 보수는 체크섬 필드에 저장됨
- 인터넷 체크섬으로 알려진 이 합의 1의 보수는 체크섬 필드에 저장됨
- 라우터는 수신한 각 IP 데이터그램마다 헤더 체크섬을 계산
→ 이 값과 데이터그램 헤더의 체크섬이 다르면 오류 상태임을 감지- 라우터는 보통 오류가 검출된 데이터그램을 폐기한다.
- 라우터는 보통 오류가 검출된 데이터그램을 폐기한다.
- TTL 필드와 옵션 필드의 값이 가변적이기 때문에, 체크섬은 각 라우터에서 재계산되고 저장됨
출발지와 목적지 IP 주소
- 출발지가 데이터그램을 생성 시
- 자신의 IP 주소를 출발지 IP 주소 필드에 삽입
- 목적지 IP 주소를 목적지 IP 주소 필드에 삽입
- 종종 DNS 검색을 통해 목적지 주소를 결정하기도 함
옵션
- 옵션 필드는 IP 헤더를 확장한다.
- 오버헤드를 해결하기 위한 방법
→ 모든 데이터그램 헤더 옵션 필드에 정보를 포함하지 않는 방법을 사용- 데이터그램 헤더가 가변 길이로, 데이터 필드 시작점을 초기에 결정할 수 없음
→ 옵션은 문제를 복잡하게 만든다.
- 데이터그램 헤더가 가변 길이로, 데이터 필드 시작점을 초기에 결정할 수 없음
- 일부 데이터그램은 옵션 처리 유무에 따라 라우터에 IP 데이터그램 처리의 필요한 시간이 크게 달라짐
- 이런 가변 길이의 옵션은 고성능 라우터 및 호스트에서 IP 처리에 특히 중요
- 이런 가변 길이의 옵션은 고성능 라우터 및 호스트에서 IP 처리에 특히 중요
- 이런 이유로 IP 옵션은 IPv6에 포함 X
데이터(페이로드)
- 데이터그램이 존재하는 이유이자 가장 중요한 필드
- IP 데이터그램 데이터 필드가 목적지에 전달되기 위해 담는 것
- 트랜스포트 계층 세그먼트(TCP/UDP)를 포함
- 또는 ICMP 메시지 가은 유형의 데이터를 담기도 함