IP

suhan cho·2022년 5월 26일
0

IP

  • IP주소체계를 이용하여 인터넷에 연결된 모든 호스트들과 데이터 통신 가능
  • 네트워크 계층에 해당

IP 데이터그램의 형식, 기능

  • IP에서 사용하는 패킷을 데이터그램이라 함
  • IP데이터그램은 헤더 부분과 사용자 데이터 부분으로 구분
  • IP데이터그램의 길이는 가변적, 기본 헤더 크기20byte
    옵션 영역을 사용시 최대 60byte 확장가능

버전(VER)

  • IP 프로토콜의 버전을 나타내기 위한 영역
  • IPv6의 사용이 점점 증가하는 추세

헤더 길이 영역(HLEN)

  • 4바이트를 기본 단위로 하여 헤더 부분의 길이 규정

차별화된 서비스(Differntiated Services=Tos)

  • 데이터의 전송 목적에 따라 서로 다른 우선권을 설정하기 위한 영역
  • 네트워크를 통한 데이터 전송 시 사용자의 데이터마다 우선권을 부여
  • 우선권이 높은 데이터가 먼저 서비스를 받도록 허용하며 차별화된 서비스를 위한 영역으로 사용할 수 있도록 규정
  • 서비스 유형(8bit)
    • 3bit 우선순위, 4bit 서비스 유형
    • 혼잡과 같은 문제가 발생하였을 경우 데이터그램의 우선 순위 정의

Total Length

  • 바이트 단위로 헤더를 포함한 전체 패킷의 길이를 규정
    (IP 데어터그램의 총 길이)
  • 16비트로 헤더와 데이터를 포함한 전체 길이
  • 데이터 길이 = 전체 길이 - 헤더 길이
  • 2^16byte이고 헤더는 20~40byte

  • 패딩이 있을 수도 있으므로 길이를 알아야한다

데이터그램 식별자(idenification)

  • 단편화시 식별자 id를 줘 나중에 조립할 때 같은 id끼리 한다
  • 패킷 분할(fragmentation)시 이 영역 값을 참조하면, 어느 원본 데이터 그램으로 부터 분할되었는지를 구분 가능

플래그(flag)

  • 전송되는 패킷이 분할된 패킷인지 아닌지 여부
  • 분할시: 1 아닐 시: 0

단편화 옵셋(fragmentation offset)

  • 8바이트 단위로, 분할된 패킷의 일부분을 나타냄
  • 8로나누어 계산

time to live

  • 방문하는 최대 홉 수를 제한하기 위해 사용

프로토콜

  • IP계층의 서비스를 사용하는 상위 곛으 프로토콜을 정의
  • ICMP, IGMP, TCP, UDP 등이 있다

검사합(checksum)

  • 오류확인

발신지,목적지 주소

  • 둘다 32bit를 차지

문제

  • EX) 처음 8bit다음과 같은 IP패킷 도착
    01000010 폐기한 이유는?
    Sol) 0100 ver(ipv4) 0010(길이) 최소 20바이트 되야함

  • EX) HLEN의 값이 2진수로 1000이다 옵션은 몇 바이트?
    Sol) 8x4 =32byte 헤더는 20byte이므로 추가 옵션은 12byte가 된다

  • EX) HLEN의 값이 16진수로 5이고 전체 길이 필드 값이 16진수로 0028이다 몇 바이트의 데이터 전송하는가
    Sol) 5x4=20byte이고 전체 길이 필드가 40byte이므로 20byte 데이터 전송한다

  • EX) 처음 16진수 값들이 다음과 같은 패킷이 도착
    45000028000100000102...

  1. 이 패킷이 폐기되기 전에 몇 홉을 지날 수 있나?
  2. 이 패킷은 어떤 상위 계층 프로토콜 데이터를 전송하고 있는가?
    Sol)
  3. 수명필드 전까지는 64bit이므로 8byte 16개 자리지나면 수명필드 8bit 01 한개의 홉 지남
  4. 다음 8bit가 프로토콜 이므로 02 = IGMP

IPv6 데이터그램 기본 헤더

  • 기본헤더와 페이로드로 구성
  • 기본헤더는 40byte로 고정
    페이로드에서 헤더 확장이 필요시 확장헤더에서 추가

버전

  • 4bit 필드는 IP의 버전 정의 IPv4:4, IPv6:6

트래픽 클래스(Traffic Class)

  • 8bit필드는 서로 다른 전달 요구 사항을 갖는 페이로드를 구분하는데 쓰임
  • IPv4의 서비스 클래스 필드를 대신

흐름 레이블(Flow label)

  • 20bit
  • 특정 데이터의 흐름을 특별하게 제어하기 위해

페이로드 길이(payload length)

  • 2byte
  • 기본 헤더를 제외한 IP 데이터그램 전체길이

다음 헤더(next header)

  • 8bit
  • 상위 계층 프로토콜위한 헤더
  • IPv4의 프로토콜과 같다

홉 제한(hop limit)

  • ttl과 같은 용도

발신지, 목적지 주소

  • 16byte이다

IPv4 vs IPv6 header

단편화

  • MTU만큼 잘라서 단편화 한다
  • 자세한건 아래 실습에

와이어샤크 실습

IP ver(4bit)

HLEN(4bit)

  • Header은 보통 0101로 패킷 데이터 영역에서는 5로 표기
    마지막 필드인 options 값에 따라 길이가 가변적일 수 있다

TOS(8bit)

  • type of service로 서비스 종류 및 혼잡 알림
    • Differentiated service code point
      요구되는 서비스 우선 순위에 대한 유형을 나타내어 해당 패킷이 라우터에서 어떻게 처리해야 하는지 정의
    • Explict congestion notification
      혼잡을 알리는 필드 라우터가 패킷을 즉각 폐기 않고 최종노드에 혼잡 알리는 용도

Total Length(16bit)

  • IP의 헤더(보통 20bytes)+캡슐화된 데이터 길이 최대 65,535bytes

Identification(16bit)

  • 대부분 네트워크 환경은 이더넷 환경이기에 MTU가 1500bytes로 통용
    MTU이상인 경우 단편화 하는데 단편화된 임의의 패킷이 어떠한 데이터인지 구분하기 위해서 고유번호 할당 이것이 Identification이다

Flags(3bit) + Fragment offset(13bit)

  • 단편화에 대한 필드이며 패킷데이터 영역에서는 이 두개의 필드가 결합된 값으로 나온다
    Flags는 단편화된 추가 패킷 여부 알려준다
  • DF가 1이면 분할된 패킷이 아니다. 0이면 분할(0x40은 분할된 패킷이 아니다)
  • MF가 1이면 분할된 패킷이 더 있다. 0이면 더이상 없다

Fragment offset(13bit)

  • 분할된 패킷을 수신측에 재배열 시 패킷 순서 파악하는데 사용
  • 재배열 기준은 헤더 크기를 뺀 캡슐화된 데이터 크기

EX) 만약 5000bytes ICMP패킷 전송 시
첫번쨰는 0이고 MTU(이더넷) 1500bytes이므로 IP헤더 20bytes제외 나머지 1480bytes가 데이터 사이즈가 된다
그렇게 두번째는 0+1480 세번쨰는 0+1480+1480 네번째에 4480된다.
네번째 패킷의 offset 4480보고 마지막을 예측한다.

TTL(8bit)

  • 라우터 통과할 수 있는 최대 홉 수를 지정하고 만약 0이 된다면 라우터에서 폐기하여 패킷이 네트워크에 있는거 방지

상위계층 프로토콜(8bit)

  • IP헤더에 따라오는 상위 프로토콜 알려주며, TCP, UDP,ICMP 등을 ID로 판별 가능

CheckSum

  • 체크섬 확인할 때 16bit씩 잘라 체크섬을 제외하고 다 더한다 이후 1의 보수를 해주어 체크섬과 같은지 확인
    같다면 손상x

발신지 주소

목적지 주소

profile
안녕하세요

0개의 댓글