컴퓨터망 4) ipv4 protocol

zh025700·2022년 6월 27일
0

컴퓨터네트워크

목록 보기
4/26

컴퓨터망

4. IPv4 protocol

IP 주소 지정 메커니즘과 IP 패킷의 delivery 및 forwarding에 대해 논의한 후, 이제 IP 패킷의 형식에 대해 논의한다.
IP 패킷이 어떻게 기본 헤더 및 패킷 전송을 용이하게 하거나 제어하는 데 사용되는 옵션이 만들어 지는지 배운다


Introduction

IP

  • 네트워크 계층에서 TCP/IP 프로토콜에 의해 사용되는 전송 메커니즘

  • IP는 신뢰할 수 없는 무연결 데이터그램 프로토콜로, best effort delivery이다
    • IP 패킷이 손상,손실,잘못 도착,지연, 네트워크에 정체를 줄 수 있다

IP는 데이터그램 접근법을 사용하는 패킷 교환 네트워크를 위한 connectionless 프로토콜이다
즉, 각 데이터그램은 독립적으로 처리되며 각 데이터그램은 목적지까지 다른 경로를 따를 수 있다
이는 동일한 source에 의해 동일한 destination으로 전송된 데이터그램이 비정상적으로 도착할 수 있음을 의미한다
또한, 일부는 전송 중에 분실되거나 손상될 수 있다
IP는 이러한 모든 문제를 처리하기 위해 더 높은 수준의 프로토콜에 의존한다

Datagrams

네트워크 레이어의 패킷을 datagram이라고 부른다

  • 헤더와 데이터로 구성된 가변적 길이 패킷이다
    • 헤더는 routing과 delivery에 필수적인 정보를 포함한다
    • 보통 헤더를 4바이트로 표시하는 것이 일반적이다
      • 헤더는 보통 20~60 바이트이다

VER(version)

  • IP protocol을 정의한다
    • IPv4인지 v6인지

HLEN(header length)

  • 4bit로 word(4바이트)로 구성된 데이터그램의 헤더의 길이를 나타낸다
  • 헤더는 20~60 바이트로 구성되기 때문에 HLEN의 최소 값은 5이고 최대값은 15이다
    • 5x4 = 20바이트 5x15=60바이트
    • HELN의 값이 5보다 작으면 패킷 오류이다

service Type

  • 현재 잘 안쓰인다
  • 서비스의 타입을 나타낸다

Total length()

  • Header와 data부분을 합친 전체 길이다
  • 16비트임으로 IP datagram의 길이의 한계는 65536이다
  • 데이터 부분이 너무 크면 fragmentation 될 수 있다
  • 헤더 + 데이터 크기

    total length가 헤더를 포함한 datagram의 전체 길이를 나타낸다

total length가 필요한 이유, 추가적 padding을 하는 이유
머신(라우터 또는 호스트)이 프레임을 수신하면 헤더와 트레일러가 데이터그램을 떠난다
IP 데이터그램의 크기가 Minimum보다 작으면 이 요구 사항을 충족하기 위해 일부 padding이 추가된다
이 경우, 기계가 데이터그램의 캡슐화를 해제할 때, 실제 데이터 양과 패딩 양을 결정하기 위해 total length를 확인해야한다

Identification

  • fragmentation 패킷 ID

Flags

  • fragmentation 인지 아닌지 판단 flag

Fragmentation offset

  • 몇번째 fragmentation인지 알려줌

Time to live

  • TTL
    • 네트웤 트래픽 때매 존재

Protocol

  • IP가 사용하는 상위 레벨의 프로토콜을 알려준다

    • IP 데이터그램이 전송되어야 하는 최종 목적지 프로토콜을 지정

    • UDP, TCP, ICMP, IGMP

    • 이 필드의 값에 따라 사용하는 프로토콜이 바뀐다

Checksum

  • checksum 표시

Source address

  • source의 IP 주소

    • 바뀌지 않는다

Destination address

  • destination의 IP주소
    • 바뀌지 않는다

Fragmentation

데이터그램은 다른 네트워크를 통해 이동할 수 있다
각 라우터는 수신한 프레임에서 IP 데이터 그램의 캡슐화를 해제하고 처리한 다음 다른 프레임에 캡슐화한다
수신된 프레임의 형식과 크기는 프레임이 방금 이동한 물리적 네트워크에서 사용되는 프로토콜에 따라 달라진다
전송된 프레임의 형식과 크기는 프레임이 이동할 물리적 네트워크에서 사용되는 프로토콜에 따라 달라진다
  • datagram이 파편화가 되어도 각 조각들은 헤더를 가지고 있다

    • flag, 파편 옾셋, total length가 다시 정의된다
      • 나머지는 복사됨
  • 조각된 데이터그램들은 더 작은 MTU를 만나면 다시 파편화될 수 있다

    • 여러번 조각날 수 있다
  • 데이터그램은 source 호스트 또는 경로에 있는 라우터에 의해 조각화될 수 있다

    • 각 조각은 독립적인 데이터그램이 되기 때문에 데이터그램의 재조립은 destination 호스트에 의해서만 이루어진다
  • 파편화된 데이터그램은 다른 경로를 통해 이동할 수 있다

    • 파편화된 데이터그램이 어떤 경로를 취할 수 있는지 제어할 수 없다
      • 동일한 데이터그램에 속하는 모든 조각들은 보통 destination 호스트에 도착해야 한다.

datagram의 데이터만 단편화가 된다

MTU

  • data의 최대 길이를 정의
    • 데이터그램의 크기는 MTU보다 작아야한다

Identification

  • destination에서 데이터그램을 재 조합할 때 사용된다
  • 같은 ID를 가진 조각들이 같은 데이터그램으로 조합된다

Flags field

  • 처음 비트는 사용되지 않음

  • 두번째 비트는 do not fragment bit

    • 1로 설정 시 파편화가 되지 않는다
      • 네트워크를 통과 못할 시 데이터그램이 폐기되고 에러를 보냄
    • 0으로 설정 시 데이터그램은 필요 시 파편화가 가능하다
  • 세번째 비트는 more fragment bit

    • 1로 설정 시 데이터그램은 마지막 파편이 아닌걸 뜻한다
      • 더 많은 파편이 가능
    • 0으로 설정 시 이 조각이 마지막 or 하나의 조각임을 뜻한다
  • 011 불가!

    • 왜? 모순이자나

Fragmentation offset

  • 데이터그램에서 파편의 상대적 위치를 나타낸다
  • 전체 길이는 16비트로 표시되는데 fragmentation offset은 13비트를 가진다
    • 전체 길이를 못나타낼 수도 있다!!
      • 이를 위해 전체 길이를 8로 나눈 값을 fragmentation offset으로 설정한다

Fragmentation ex

  • 각 조각들의 offset은 8로 나뉘어지고 전체 데이터그램에서의 상대적 위치를 표시
  • 마지막 조각인 fragment3은 flag에서 more bit이 0으로 설정되어 있다
    • 마지막이니깐,, 나머지 애들은 다 1로 설정되어있음

Options

IP 데이터그램의 헤더는 두 부분으로 구성되어 있다

  • fixed 부분
  • variable 부분

fixed 부분은 20바이트 길이
variable 부분은 최대 40바이트의 옵션으로 구성된다

이름에서 알 수 있듯이 데이터그램에는 옵션이 필요없다
데이터 그램은 네트워크 테스트 및 디버깅에 사용할 수 있다
옵션이 IP 헤더의 필수 부분은 아니지만 IP 소프트웨어의 옵션 처리가 필요하다
즉, 헤더에 옵션이 있는 경우 모든 구현이 해당 옵션을 처리할 수 있어야 한다

Option format

TLV

Copy

  • 파편화 여부를 확인
    • 0: 옵션을 첫번째 조각에만 복사해야함
    • 1: 옵션을 모든 조각에 복사해야함

Class

  • 옵션의 목적
    • 00: 데이터그램 제어
    • 01: X
    • 10: 디버깅, 관리 용도
    • 11: X

Number

  • 옵션의 타입 정의

Length

  • type과 자신을 합친 길이

Value

  • 특정 옵션에 필요한 데이터

옵션 카테고리

  • single byte는 1바이트만 사용
  • multiple byte는 length와 data 필드 사용

No operation Option

  • 4의 배수를 맞추기 위해 채우는 옵션

End of option option

  • 옵션의 마지막을 알린다
  • 마지막 옵션으로만 사용된다
    • 하나만 존재
    • 1바이트는 이 옵션을 위해 사용되어야 한다

Record-route option

  • 라우터 경로를 기록한다
  • 9개의 라투어 IP 주소를 기록할 수 있다
    • 헤더의 최대 사이즈가 60바이트이기 때문에
      • 20 바이트는 기본
      • 40 바이트는 option부분 사용함

Record-route condcept

  • 포인터부분은 가능한 첫번째 entry를 가리킨다

Stirct source route option

  • 데이터그램의 경로를 미리 결정하는 데 사용
    • 전송을 안정적이고 신뢰성있게 할 수 있음
  • 데이터그 전송에 사용할 라우터들은 옵션에 저장되어야 한다
  • 데이터그램에 라우터 주소가 없으면 방문하지 않는다
    • 방문시, 데이터그램은 폐기되고 에러를 보낸다
  • 데이터그램이 목적지에 도착했는데 다른 조각들이 오지 않는다면 오류이다
  • 일반 유저는 쓰지 않는다

  • 데이터그램은 미리 정의된 라우터에 들어간다
  • 라우터는 destination IP 주소와 들어오는 데이터그램의 IP 주소를 비교
    • 만약 같다면, 데이터그램을 처리하고, 포인터가 가리키는 IP 주소를 목적지 주소와 교환, 포인터 값을 4씩 증가시키고, 데이터그램을 forwarding
    • 다르면 에러

Loose source route option

  • strict과 비슷하지만 좀 더 느슨함
  • 방문해야하는 라우터가 있지만 안해도된다

Time stamp option

  • 데이터그램이 라우터에서 프로세싱되는 시간을 기록

Use of flags in time stamp

Timestamp concept

Checksum

TCP/IP 프로토콜에서 사용되는 오류 탐지 방법을 checksum이라고 한다
checksum은 패킷 전송 중에 발생할 수 있는 손상으로부터 보호한다
패킷에 추가되는 정보이다
checksum은 sender에서 계산되고 얻은 값은 패킷과 함께 전송된다
receiver는 checksum을 포함한 전체 패킷에 대해 동일한 계산을 반복한다
결과가 만족스러우면 패킷이 수락되고, 그렇지 않으면 거부된다

Checksum Concept

  • receiver가 패킷을 받으면 모든 부분을 더한다
    • 체크섬 결과가 0이면 정상
    • 0이 아니면 오류

Checksum in ones' complement

  • Sum의 보수가 checksum
    • 0이 되어야한다

체크섬은 헤더를 판단한다., 데이터가 아니다

sender

  • 처음에 체크섬에 0 넣어서 sum을 구함
    • 구하고 체크섬을 추가함

receiver

  • 모두 더해 sum을 구함
    • checksum이 0이어야 정상
profile
정리

0개의 댓글