IP(Internet Protocol)

  • OSI 7Layer에서 3계층에 해당하는 프로토콜
  • Packet을 지정된 목적지 네트워크까지 전달하는 역할을 담당
  • 비 연결 지향적
  • 비 신뢰성
  • 종단간 연결 보장
  • IP주소에 따라 네트워크간 전송경로를 제어
  • 필요에 따라 Fragment(단편화) 작업을 수행하기도 함
    • Router가 연결하고 있는 MTU차이 때문에 지원 되는 기능
    • PC에서는 4계층을 통과하지 못하고 MTU 크기를 초과 할 때만 수행 됨 -> ICMP

IP Header

  • Header 크기 -> Option필드의 크기에 따라 가변적 -> 최소 20bytes ~ 최대 60bytes

ip1

  • 0~4bytes Field

ip2

  • Version (4bits)
    • IP 버전 정보
    • IPv4 header의 version 필드는 항상 4로 고정
    • IPv6는 개발되면서 별도의 프로토콜을 발표
  • IFL (4bits)
    • IP Header Length의 약어로 가변적인 IP header의 크기를 명시
    • 4개의 Bit로 표현되고 4bytes 단위로 표시됨(최대 길이 값 60bytes)
  • Different Service(1byte)
    • 데이터의 우선순위를 표시 -> Router에서 우선순위를 확인하고 Routing을 수행 한다.
    • D -> 지연, T -> 처리율, R -> 신뢰성
  • Total Length (2bytes)
    • IP Packet의 전체 크기(IP Header + Payload) MTU(Maximum Transmission Unit) : 최대 전송 단위
  • 5~8bytes Field(3계층 Fragmentation과 관련된 Field)

ip3

  • identification (2bytes)
    • IP계층에서 단편화(Fragmentation) 가 수행 되기 전 원본 데이터의 식별 값
    • 통신의 시작 데이터는 Random Number로 할당되며 연속된 통신의 다음 데이터는 +1 증가한 값을 할당 받는다.
  • IP Flags(3bits)
    • 단편화 유무를 체크하기 위한 필드
      • X:사용하지 않는 bit
      • D(Don’t Fragment): 단편화 된 마지막 조각이면 0, 추가로 조각이 있으면 1 값을 가진다.
  • Fragment Offset(13bits)
    • 단편화 된 데이터의 순서를 나타내기 위한 필드
    • IP Header를 제외한 Payload의 시작 크기 값을 순서 번호로 사용 한다.
    • 예) Payload의 크기가 2000인 경우 최대 MTU 크기 1500을 넘게 된다.
      • IP 필수 Header 20bytes를 제외하고 1480bytes, 520bytes로 나누어서 데이터 전송

9~12bytes Field

ip4

  • Time to Live (1byte)
    • Network 환경에서 Packet이 생존할 수 있는 시간(통과할 수 있는 최대 Router 수)
    • Router가 데이터를 내보낼 때 TTL값이 1씩 감소된다.
    • TTL 값 0이 되는 장비에서 Packet 폐기
    • 초기 Default TTL값은 운영체제 종류에 따라 달라진다.(윈도우:128, Linux/Unix:64 , 기타:255 등..)
    • Network Looping 현상을 방지하기 위해 사용
  • Protocol(1byte)
    • Payload에 포함된 프로토콜
    • 상위계층 프로토콜의 종류 -> ICMP, UDP, TCP…
    • Header를 word 단위(2bytes)로 checksum

13~20bytes Field

ip5

  • Source IP Address(4bytes)
    • 출발지 IP 주소
  • Destination IP Address(4bytes)
    • 목적지 IP 주소

Variable Field

ip6

  • Option (0~40bytes)
    • IP packet을 제어 및 관리하기 위한 추가 정보
      • Source Routing -> 출발지 경로 지정
      • Traceroute -> 패킷 전송 경로 확인
      • Security -> IP packet의 보안 등급 지정
    • Network Testing 이나 Debugging에 사용
    • Option 필드가 사용된 경우 IP Header의 전체 크기가 32bits 단위가 되지 않으면 폐기 된다.
      • Padding -> 쓰레기 값으로 32bits 단위를 맞춰 준다.

IP 단편화 실습

  • ping 데이터 크기 조정해서 전송
  • C:>ping -l <데이터 크기=""> </b>

ip7

ip8

IP TTL 실습

  • ping TTL 값 조정해서 전송
  • TTL 값 1 씩 증가하며 Data 전송
  • C:>ping -i </b>

ip9

ip10