대학공부/인터넷 프로토콜

인터넷 프로토콜(IP)

진진리 2024. 4. 19. 13:35
728x90

인터넷 프로토콜(IP)

  • TCP/IP 프로토콜이 사용하는 전송 메커니즘
    • TCP: 신뢰성 있음
  • 네트워크 계층(3계층) 프로토콜
  • 비신뢰성(Unreliable), 최선의 노력 전달 서비스
    • 데이터그램이 목적지에 성공적으로 도달한다는 것을 보장하지 않음
  • 비연결성(Connectionless): 전달되는 데이터그램에 대해 상태 정보 유지하지 않음
  • 데이터그램 방법을 사용하는 패킷 교환망(인터넷망)을 위해 설계된 비연결형 프로토콜 -> for 라우팅(최적 경로 설정)
    • 네트워크에서 전송될 수 있는 최대 크기가 1500bytes(MTU, 최대 전송 단위 - 이더넷의 경우)로 정해져 있으므로 패킷을 쪼개서 보냄(단편화)

데이터그램

  • IP 계층의 패킷
  • 가변 길이 패킷으로 헤더와 데이터(페이로드) 부분으로 구성
  • 헤더는 20~60 바이트
  • 라우팅에 필요한 정보(출발지 IP주소, 목적지 IP주소)를 포함
  • 헤더를 4바이트 단위로 표시

크기(bits) 참고

  • 헤더
    • 버전(VER): IP version
    • 헤더 길이(HLEN): 헤더 전체 길이 표시, 헤더 길이는 옵션을 추가한 경우 최대 60바이트, 4바이트 단위로 표시
    • 서비스 유형(TOS, Type-Of-Service): 데이터 그램 처리 방법 정의
    • 전체 길이(Total Length): 헤더와 데이터를 포함하는 전체 길이
    • 식별(Identification): 단편화를 위해 사용. 분할된 패킷은 동일한 식별자를 가짐
    • 플래그(Flags): 단편화를 위해 사용.
    • 단편화 옵셋(Fragmentation offset): 단편화된 조각들을 합칠 때 상대적인 위치 표시
    • 수명(Time to live, TTL): 데이터그램이 지날 수 있는 라우터의 수(Hop count)에 대한 제한 설정. 생존 시간을 제한
      • 타임스탬프 기능을 수행하기 위해 설계. 0이 되면 데이터그램 폐기
    • 프로토콜(Protocol): IP 계층의 서비스를 사용하는 상위 계층 프로토콜을 정의
      • ICMP(1), IGMP(2), TCP(6), UDP(17), OSPF(89)
    • 검사합(Checksum): 오류확인
    • 발신지 주소(Source address): 발신지의 IP 주소 -> 전달되는 동안 변하지 않음
      • IP Spoofing: 헤더의 발신지 IP 주소를 변조하는 방법
    • 목적지 주소(Destination address): 목적지의 IP 주소 -> 전달되는 동안 변하지 않음
      • 라우터 통과마다 MAC 주소는 변함

IPv6 데이터그램

  • IPv6 배경
    1. IP 주소 고갈
    2. 보안 ex. IP Sec (보안 프로토콜)
  • IPv6 데이터그램
    • 기본 헤더: 40바이트

  • IPv6 데이터그램 기본 헤더
    • Traffic Class: IPv4의 서비스 클래스 필드를 대신함. 페이로드를 구분
    • Flow label: 흐름 제어. 연결 지향 프로토콜로 사용할 수 있게 해줌
    • Next header: 기본 헤더 다음의 헤더를 정의. 상위 계층 프로토콜을 위한 헤더
      • Source routing: 라우터가 라우팅할 때 헤더에서 목적지 IP 주소를 확인하는데, 스푸핑을 피하기 위해 발신지 IP 주소도 확인하는 것(라우터가 알고 있는 네트워크 대역이 아닌 경우 차단)
    • Hop limit: TTL
    • Source/Destination address: 128 비트

Next header 코드

 

  • IPv4와 IPv6 헤더 비교
    • 헤더의 길이 고정으로 헤더 길이 필드가 없음
    • 식별, 플래그, 옵셋 필드는 IPv6 기본 헤더에 없고 확장 헤더에 포함
    • 서비스 유형 필드 -> 흐름 레이블 필드
    • TTL -> hop limit
    • 프로토콜 필드 -> 다음 헤더 필드
    • IPv4에서 옵션 필드는 IPv6에서 확장 헤더로 구현됨


단편화

  • 이더넷 네트워크 환경에서 프레임의 MTU가 1500 바이트이므로 단편화가 발생
    • 이더넷 환경: 데이터 링크 레벨에서 통신을 하는 네트워크 환경, 라우터의 인터페이스까지가 범위
  • 단편화: 네트워크가 사용하는 프로토콜에 따라 프레임 형식과 크기가 서로 다른데 MTU 길이에 따라 나누어 보내는 것
    • 데이터그램이 프레임 속에 캡슐화될 때 데이터그램의 크기는 이 최대 크기보다 작아야 함
    • 관련 필드: 식별자, 플래그, 단편화 옵셋
    • 플래그: 3비트. _DM (D: do not fragment, M: more fragment)

옵션

  • tracert: 패킷의 경로 추적 가능
  • 검사합: TCP/IP 프로토콜에 의해 사용되는 오류 검출 방법

IP 패키지

  • 헤더 추가 모듈: 상위 계층으로부터 받은 데이터를 캡슐화, 검사합 삽입, 큐로 전송
  • 처리 모듈
    1. 입력 큐 중 하나의 데이터그램을 제거
    2. 로컬 주소 중 하나와 일치하면 재조립 모듈로 전송 return
    3. 노드가 라우터라면 TTL 필드를 1 감소
    4. TTL이 0보다 작거나 같다면 데이터 그램을 폐기하고 ICMP 오류 메시지를 전송 return
    5. 데이터그램을 포워딩 모듈로 전송
    6. return
  • : 입력 큐, 출력 큐
  • 라우팅 테이블: 포워딩 모듈에서 사용
    • Next-hop address: 다음 라우터의 인터페이스 주소
    • Interface: 현재 라우터의 나가는 인터페이스 이름
    • Mask: 서브네트워크화 되지 않으면 255.255.255.255
    • Flag
      • U(Up): 라우터 동작 유무
      • G(Gateway): 목적지가 다른 네트워크에 있음
      • H(Host-Specific): 목적지 필드 내 엔트리가 호스트 지정 주소
      • D(Added by redirection): ICMP 방향 재지정 메시지에 의해 라우팅 정보를 테이블에 추가
      • M(Modified by redirection): 목적지에 대한 라우팅 정보가 ICMP 방향 재지정 메시지에 의해 수정
    • Reference count: 현재 시간에 이 경로를 사용하는 사용자의 수
    • User: 라우터로부터 해당 목적지로 전달된 패킷의 수

  • 포워딩 모듈
    1. 라우팅 테이블 항목에 대해서 패킷 목적지 주소에 마스트를 적용
    2. 목적지 필드 값과 일치하고
      • G 플래그가 없으면 목적지를 다음 홉 주소로 사용
      • 다음 홉 주소와 함께 단편화 모듈로 패킷 전송
      • return
    3. ICMP 에러 메시지를 전송
    4. return
  • 단편화 모듈
    1. 데이터그램의 크기를 추출
    2. 해당 네트워크의 크기가 MTU보다 크다면
      1. D비트가 설정되어 있다면 데이터그램을 폐기하고 ICMP 오류 메시지를 전송 return
      2. 최대 크기를 계산 하여 단편화한 후 각 헤더와 옵션을 추가 후 전송 return
    3. 데이터 그램을 전송
    4. return
  • 재조립 테이블
    • 상태(State, St.): FREE 또는 IN-USE
    • 타임아웃(Time-out, T.O.): 단편이 도착해야 하는 시간
    • 단편(Fragments): 연결 리스트의 포인터
  • 재조립 모듈
    1. 옵셋이 0이고 M비트가 0이면 데이터그램을 대기열로 전달 후 return
    2. 재조립 테이블에서 항목 검색
    3. 검색되지 않는다면 새로운 항목을 작성
    4. 단편을 연결 리스트에 삽입
      1. 모든 단편이 도착했다면 재조립 후 상위 계층으로 전달 return
      2. 타임 아웃을 확인하여 초과한다면 폐기 후 ICMP 오류 메시지를 전송
    5. return