[네트워크] 6강/ IPv4, ICMP

Izodam·2024년 4월 4일

네트워크

목록 보기
3/5
post-thumbnail

IPv4 프로토콜

IPv4가 하는 일

네트워크 상에서 데이터를 교환하기 위한 프로토콜

데이터가 정확하게 전달될 것을 보장하지 않음!

  • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있음
  • 데이터를 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장

IPv4의 구조

  • IP Option은 붙을수도 있고 안붙을 수도 있으므로 IPv4는 최소 20Bytes, 최대 60Bytes
  • Source Address : 출발지 IP 주소 (4 Byte)
  • Destination Address : 도착지 IP 주소 (4 Byte)
  • Version : 프로토콜의 버전 → 4(0101)
    • 6이 오는 경우는 없음. IPv6은 구조 자체가 다름
  • IHL : 헤더의 길이 → 5
    • 최소 20Byte에서 옵션 붙으면 최대 60Byte인데 IHL이 차지하는 건 1칸. 즉, 4Byte로 최대로 나타낼 수 있는 숫자는 15이다.
    • 그래서 그 길이에서 4를 나눠서 작성함!
  • TOS → 00
    • 현재는 쓰이지 않음
  • Total Length : 페이로드까지 합쳐진 길이를 나타냄
  • Identification, IP Flags, Fragment Offset : 데이터가 클 때 잘라서 보내는데 그때 사용되는 값들.
    • Identification : 쪼개진 패킷들이 사실 하나의 데이터였음을 나타내기 위해 똑같은 id 사용
    • IP Flags : 3bit으로 이루어짐
      • 첫번째 bit : 사용하지 않음
      • 두번째 bit - D = 패킷 보내는 사람이 데이터를 쪼개지 않고 보내겠다를 의미 → 사용하지 않음
      • 세번째 bit - M = 패킷 쪼개서 보낼때 1로 표시됨
    • Fragment Offset : 쪼개진 패킷을 복구할 때 패킷들의 순서를 나타냄
      • 데이터의 시작점으로부터 얼만큼 떨어져있는지를 나타냄
  • TTL : 패킷이 살아있을 수 있는 시간
  • Protocol : 상위 프로토콜이 무엇인지 알려주는 것
    • ICMP, TCP, UDP만 가능
  • Header Checksum : 헤더가 오류가 있는지 없는지 확인

ICMP 프로토콜

ICMP가 하는 일

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

네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 쓰임

  • 특정 대상과 내가 통신이 잘 되는지 확인하기 위해서 많이 사용함
  • 프로토콜 구조의 Type과 Code를 통해 오류메세지를 전송받음

구조

  • Type : 카테고리
    • 0, 8 = 응답, 요청
    • 3 = 목적지까지 가지 못함
    • 11 = 목적지까지 갔는데 응답을 받지 못함
  • Code : 소분류

라우팅 테이블

어디로 보내야 하는지 설정되어있음

라우팅 테이블에 적혀있지 않은 네트워크 대역은 찾아갈 수 없음.

라우터가 패킷을 어디로 전송할지 경로를 결정하는 방법은 라우팅 테이블을 참조하여 결정

  • 기본값을 넣어준다 → 0.0.0.0
    • 디폴트 라우팅 경로라고 함. 라우팅 테이블에 없는 요청 경로가 들어왔을 때 디폴드 값을 내보낸다.

다른 네트워크와 통신 과정

A가 B와 통신하는 과정

  • A의 라우팅 테이블 확인 → B가 있어야만 통신 가능함

  • 프로토콜 작성

    • 이더넷의 목적지 MAC주소는 cc:cc:cc:cc:cc:cc로 보내야한다
    • 이더넷은 가까운 곳만 가는 애 → 갈 수 있는 가장 가까운 아이를 목적지로 보낸다.
  • 스위치가 2계층만 까보고 c로 보냄

  • c가 2계층 까보고 자기한테 보낸게 맞으니까 3계층 까봄

    • 목적지 IP주소가 자신이 아니므로 자신의 라우팅 테이블 확인
    • 이더넷 프로토콜만 다시 작성 → 22:22:22:22:22:22로
  • 라우터가 3계층 까보고 라우팅 테이블 확인해서 이더넷 프로토콜 다시 작성

  • b가 받아서 ICMP 응답을 해줌

IPv4의 조각화

조각화

큰 IP 패킷들이 적은 MTU(Maximum Transmission Unit)를 갖는 링크를 통하여 전송되려면 여러 개의 작은 패킷으로 쪼개어/조각화 되어 전송돼야 함

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

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

  • IPv4에서는 발신지 뿐만 아니라 중간 라우터에서도 IP 조각화 가능

  • IPv6에서는 IP 단편화가 발신지에서만 가능

  • 재조립은 항상 최종 수신지에서만 가능

  • IPv4가 붙고 조각화 후에 이더넷이 붙음

  • IP 프로토콜

    • MF(More Fragment)는 뒤에 더 올것이 있으면 1 마지막 애는 0
    • Offset은 8을 나눠서 적어
    • 20Byte 차지 → MTU가 3300이면 각 데이터는 3280bytes씩 쪼개짐
profile
dog foot (Developer)

0개의 댓글