본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.


IP Datagram; IP Packet; IP 패킷

IP프로토콜에서 데이터가 전달되는 기본 단위

  • IP 패킷이라고 많이 부르지만, '패킷'이라는 표현은 더 일반적인 표현으로, IP에서 사용되는 패킷을 데이터그램이라 칭하므로, IP 데이터그램이라고 부르는 것이 더 정확함

데이터그램 헤더

편집 원본 편집
Version (4bit)

All) 0100

HLEN (4bit, quartets 단위)

헤더의 길이

DS/ECN (8bit, 예전 이름 서비스 유형 ToS)

지금은 거의 쓰이지 않는 옵션 대부분 00000000으로 들어감

Total Length (16bit, octets 단위)

데이터를 포함한 IP Datagram의 전체 길이

Identification (16bit)

재조립을 위한 모체를 식별하는 코드

Flags(3bit)

-More bit: 파편 중 마지막인지 아닌지 -Don't fragment bit: 절대 분할금지. 분할이 필요하면 폐기

Fragment Offset(13bit, 8바이트 단위)

헤더를 포함하지 않은 데이터만의 시작 위치

Time to Live (8bit)

데이터그램의 수명 네트워크를 거칠 때마다 --1; (라우터 통과) 0이 되면 폐기

Protocol(8bit)

상위 계층의 프로토콜이 누구인가? ex) TCP, UDP, ICMP

Header Checksum(16bit)

데이터 전체가 아닌 헤드의 오류만 검출 오류가 검출되면 복구하지 않고 폐기

Source Address(32bit)
Destination Address (32bit)
Options + Padding (가변 bit)

Padding: 전체 길이가 무조건 4의 배수가 되어야 하기 때문에 4의 배수가 아닐 경우 이를 채우기 위해 사용.

  • 버전숫자: IP 프로토콜의 버전을 정의
  • 헤더길이: 데이터그램은 가변의 헤더를 가지게되기 떄문에 수신자가 데이터그램을 수신하면 헤더가 어디서 끝나고 패킷에 캡슐화된 데이터가 어디서 시작하는지 알아야 한다. 따라서 수신자는 전체 길이를 확인하기 위해 필드값에 4를 곱하게 된다.
  • 서비스유형: 데이터그램을 어떻게 처리할지를 정의
  • 전체길이: IP 데이터그램의 전체 바이트 수를 정의함
  • 식별자 (단편화 관련): 데이터그램이 전송된 근원지 호스트를 구분
  • 플래그 (단편화 관련): 세개의 비트로 단편화 관련 정보를 표시함
    • 첫번째 비트 : 사용되지 않음
    • 두번째 비트 : 단편화 금지 필드
    • 세번째 비트 : 1이면 다른 단편이 더 있음을 의미, 0이면 마지막 단편이거나 오직 하나의 단편임을 의미
  • 단편화 오프셋: 전체 데이터그램에서 해당 단편의 상대적인 위치를 나타냄
  • 생존시간(TTL): TTL 필드는 데이터그램이 방문할 수 있는 최대 라우터 수를 정의함
  • 프로토콜: 근원지 IP에서 페이로드가 캡슐화될 때, 이 필드에 상응하는 프로토콜의 번호가 추가됨
  • 헤더 검사합(Checksum): IP는 헤더를 검사하기 위한 검사합 필드를 추가함
  • 근원지와 목적지(Destination Address): 각각 소스IP와 목적지IP주소를 나타냄
  • 옵션: 데이터그램 헤더는 40바이트까지 옵션을 가질 수 있음

헤더 길이와 단편화 필드

편집 원본 편집
  • HLEN 은 4바이트 단위다. 옵션이 없으면 HLEN = 5 로 헤더는 20바이트이고, 최댓값 15 이면 60바이트(옵션 최대 40바이트)이다(RFC 791)
  • 단편화에 쓰는 필드는 Identification, Flags(DF·MF), Fragment Offset 셋이다
    • Identification - 송신 측이 원본 데이터그램마다 붙이는 16비트 값이다. 단편화되면 모든 단편이 같은 값을 물려받으므로, 수신 측은 이 값으로 어느 단편들이 같은 원본에 속하는지 가려 모은다
    • MF(More Fragments) - 뒤에 단편이 더 있는지(1)만 알린다. 같은 원본인지를 가리는 필드가 아니다
    • DF(Don't Fragment) - 1이면 단편화하지 말고, 단편화가 필요하면 버리라는 표시다
    • Fragment Offset - 단편이 원본 데이터의 어디서 시작하는지 8바이트 단위로 적는다
  • IPv6 기본 헤더에는 이 단편화 필드들이 없다 → IPv6 헤더

헤더에 없는 것

편집 원본 편집
  • 포트 번호(Port Number)는 IP 헤더의 필드가 아니다. 포트는 한 호스트 안의 응용 프로그램을 가리키는 전송 계층의 주소라 TCP 헤더·UDP 헤더의 출발지·목적지 포트 필드에 들어 있다 → 포트 번호
  • IP 헤더가 가리키는 것은 호스트(출발지·목적지 IP 주소)와, 페이로드를 넘겨줄 상위 프로토콜 번호(Protocol 필드: TCP 6, UDP 17, ICMP 1)까지다
  • MAC 주소도 IP 헤더가 아니라 데이터 링크 계층(이더넷) 프레임의 헤더에 있다