logo
Published on

멀리 있는 컴퓨터끼리는 이렇게 데이터를 주고 받는다 - OSI 7계층 - IPv4/ICMP

Authors
  • avatar
    Name
    Bora Choi
    Twitter

IPv4프로토콜

IPv4가 하는 일

네트워크 상에서 데이터를 교환하기 위한 프로토콜. 데이터가 정확하게 전달될 것을 보장하지 않는다.

중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다. (악의적응로 이용되면 DoS 공격이 됨)

데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장한다.

IPv4 프로토콜의 구조

ipv4
  • version : IP 프로토콜 버전
  • IHL(Header Length) : 20byte 옵션이 붙으면 최대 60byte
  • Type of Service(TOS) : 현재는 사용하지 않음
  • Total Length : payload를 포함한 전체 길이
  • Identification + IP Flags + Fragment Offset : 쪼개진 패킷들을 알아볼 수 있게 하는 것
    • Identification : 하나의 데이터에 부여되는 고유값. (고유값이 같은 데이터끼리 묶는다)
    • IP Flags : 조각화가 되어있는지를 알려주는 것
    • Fragment Offset :패킷조각의 순서 (데이터의 시작 위치에서 떨어져있는 길이의 값)
  • Time to Live(TTL) : 패킷이 살 수 있는 시간
  • Protocol : 상위 프로토콜의 타입
  • Header Checksum : 헤더가 오류가 있는지 확인하는 값
  • Source Address : 출발지 IP 주소
  • Destination Address : 목적지 IP 주소

ICMP 프로토콜

ICMP가 하는 일

ICMP (Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)

네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메세지를 전송 받는 데 주로 쓰인다.

프로토콜 구조의 Type과 Code를 통해 오류 메세지를 전송 받는다.

ICMP 프로토콜의 구조

ICMP프로토콜은 특정 대상과 내가 통신이 잘 되는지 확인 한다.

icmp
  • Type: 카테고리(대분류)
  • Code: 소분류
  • Checksum: icmp code

라우팅 테이블

네트워크 통신의 최적경로를 저장해 놓는 곳. 라우팅 테이블에 적혀있는 경로만 찾아갈 수 있다.

다른 네트워크와 통신 과정

다른 네트워크와 통신 과정

IPv4의 조각화

조각화란 ?

큰 IP 패킷들이 적은 **MTU(Maximum Transmission Unit/ 데이터 최대 전송단위)**를 갖는 링크를 통하여 전송되려면 여러 개의 작은 패킷으로 쪼개어/조각화 되어 전송돼야 한다.

즉, 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환이 필요하다.

일단 조각화되면, 최종 목적지에 도달할 때까지 재조립되지 않는 것이 일반적이다.

IPv4에서는 발신지 뿐만 아니라 중간 라우터에서도 IP 조각화가 가능 IPv6에서는 IP 단편화가 발신지에서 만 가능 재조립은 항상 최종 수신지에서 만 가능함

큰 데이터를 전송하는 패킷이 조각화하는 과정

큰 데이터를 전송하는 패킷이 조각화하는 과정