본문 바로가기

개념정리/네트워크

[네트워크] 03-3. IPv4 프로토콜


 

03-3. IPv4 프로토콜

 

[기능]

 - 네트워크 상에서 데이터를 교환하기 위한 프로토콜 (다른 네트워크 대역과 통신)

 - 데이터 전달의 신뢰성을 보장하지 않음 (중복 전송, 순서 오류)

 - 상위 계층에서 신뢰성 보장 필요 (TCP)

 - 최소, 최대 전송 단위가 정해져 있어 최대 단위를 초과하는 데이터는 잘라서 보냄

 

 

[구조]

  1 2   3 4 Byte
Version IHL TOS (Type of Service) Total Length 4
Indetification IP Flags Fragment Offset 8
TTL (Time To Live)
Protocol
Header checksum 12
Source Address 16
Destination Address 20
IP Option (개당 4byte) ~60

 - 20 바이트+α(옵션에 따라)

 - Version : 4 (0x4)

  * IPv6는 구조 자체를 다른걸 쓰므로 이 구조에서 버전은 항상 IPv4로 고정

 - IHL (Header Length) : 헤더길이(최소 20, 최대 60) ÷ 4의 값 ≫ (0x5 ~ 0xF)

 - TOS : 현재 쓰이지 않아 0으로 비워둠 (0x00)

 - Total Length : 상위계층에서부터 캡슐화되어 내려온 payload까지 합친 이 지점에서 전체 패킷 길이 

<조각화 삼대장>

 - Identification : 잘려진 데이터가 원래 하나의 데이터였음을 알아보기 위한 Id 

 - IP Flags (3비트) : RDM 2진수 표기시 0b000                                           

    * R 사용 안 함                                                                                

      D Don't fragmentation 쪼개지 않고 보냄 (손실 100%, 거의 사용 안 함)      

      M More fragmentation 조각화 된 패킷이 남아있음 표기                         

          최대전송단위를 넘지 않으면 0b000 (0x0), 넘으면 0b001 (0x2)              

 - Fragment Offset : 쪼개진 패킷을 복구하기 위한 순서 (받는 쪽에서 순서를 보장하지 않기 때문) 

 - TTL : 패킷의 유효시간(정확히 시간은 아니고 time count 형식, 3계층 장비를 넘어갈 때 마다 하나씩 줄어든다),

          비정상적인 패킷이 계속해서 요청을 보내는 것 방지

 - Protocol : 상위 프로토콜 정보 (3계층-ICMP 0x01, 4계층-TCP/UDP 0x06/0x11)

 - Header Checksum : 헤더 오류 확인(필드값 계산 후 세팅 후 전송 ≫ 받는 쪽에서 다시 계산 후 확인) 

 - Source/Destination Address : 출발/목적지 IP주소 

 - IP option : 옵션이 증가할 때 마다 4바이트씩 추가됨 (최대 10개 ≫ 40 Byte가 추가로 붙을 수 있다)  

 

 

[라우팅 테이블]

 - 네트워크 경로를 저장해 놓은 테이블

 - 모든 목적지 정보에 대해 해당 목적지에 도달하기 위해 거쳐야 할 최적의 경로 정보가 들어있음

 - netstat -r 명령어로 확인 가능

IP 0.0.0.0(테이블에 매핑된 것 외 모든 IP주소)은 기본 게이트웨이로 설정한 IP로 매핑되어있다. (밖으로 나감)

 - 네트워크 대상 = 네트워크 대역 || IP주소

 

 

[통신과정 - 다른 네트워크 대역과 통신]

 - 목적지 IP 주소를 가지고 라우팅 테이블을 확인

 - 라우팅 테이블에 매핑된 주소로 이동

 - 다른 네트워크 대역으로 이동 시 라우팅 테이블은 게이트웨이를 가르키게 되고, 이더넷 프로토콜의 목적지 맥주소도 라우터 게이트웨이의 맥주소를 가르킴

 - 패킷이 라우터까지 도달하면 라우터는 라우팅 테이블을 확인해 목적지 IP주소에 도달하기까지 여러 네트워크 장비를 거쳐가며 대역간 이동이 이루어짐 ( 대강 '장비 → 라우터 목적지 라우터 목적지 장비'로 이동 )

 - 이 때 이더넷 프로토콜(MAC주소 정보 )은 네트워크 대역이 바뀔 때마다 재설정됨

 

 

[조각화]

 - 큰 IP 패킷들을 MTU에 따라 여러 개의 작은 패킷으로 나눠서 전송하는 것

 - MTU, Maximum Transmission Unit 데이터 최대 전송 단위 (보통 1500bytes)

   * 여기에 2계층(이더넷)까지 붙은 프레임의 크기는 보통 1514

 - IPv4 헤더의 크기 20바이트를 고려해서 조각화 필요 ex) MTU가 1000이면 데이터 크기는 최대 980으로 잘림

 - offset은 앞선 패킷의 데이터 크기 / 8 의 값을 가짐 

 - IPv4기준 발신지 뿐만 아니라 중간 라우터에서도 각 라우터마다 전송에 적합한 프레임으로 조각화가 가능

 - 재조립은 최종 목적지에 도달한 후 이루어짐