네트워크 6장 ip, icmp 프로토콜

No.8·2023년 2월 19일
0

Network

목록 보기
9/14

ipv4 프로토콜

ipv4가 하는 일

  • 네트워크 상에서 데이터를 교환하기 위한 프로토콜
  • 데이터가 정확하게 전달될 것을 보장하지 않는다
  • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다
  • 데이터의 정확하고 순차적인 전달은 상위 프로토콜인 TCP에서 보장한다

ipv4 구조

-VER(4bits) : IP의 버전정보, 일반적으로 IPv4 사용

-IHL(=HLEN)(4bits) : 헤더 길이, 4 BYTES 단위로 표현

-TOS(=Service type)(8bits) : 서비스 품질(QoS)를 위한용도. 지금은 사용하지 않음

-Total Length(16bits) : 헤더부와 데이터부를 포함한 전체 IP Packet의 길이

-Identification(=ID)(16bits) : 단편화/재조합 관련 필드

IP 데이터그램을 여러 조각으로 분할을 단편화(Fragmentation), 단편을 조합하는 것을 재조합(Reassembly)
단편화 전 원본 IP 데이터그램을 식별하기 위한 ID
-Flages(=0/DF/MF)(3bits) : 단편화/재조합 관련 필드

첫 번째 비트 : 사용안함
두 번째 비트 : Don't fragment bit(1 설정 시 패킷을 단편화 하지 말라는 의미)
세 번째 비트 : More fragments bit(1 설정 시 재조합 단편이 남아 있음. 0 설정 시 단편이 더 이상 없다는 의미)
-Fragmentation offset(13bits) : 단편화/재조합 관련 필드

원본 IP 데이터그램의 단편들이 순서대로 전송되지 않기 때문에 현재 단편의 상대위치(offset)를 저장한 필드
8bytes 단위로 표현
-TTL(=Time to Live)(8bits) : IP패킷의 생존시간을 지정하는 필드

라우터/L3스위치 통과 횟수(hop count)
패킷이 라우터/L3스위치에 도착하면 TTL값을 1 감소시키고 0이 되면 폐기
무한루핑(looping)을 방지하여 네트워크 대역만 차지하는 상태를 막음
-Protocol(8bits) : 상위 프로토콜을 식별하기 위한 프로토콜 번호를 저장하는 필드

ICMP(1), TCP(6), UDP(17) 등
-Header checksum(16bits) : 데이터부를 제외한 헤더 부분의 오류 검사값

-Source IP address(=SA)(32bits) : 출발지 IP 주소

-Destination IP address(=DA)(32bits) : 목적지 IP 주소

-IP option 헤더는 보안상 사용하지 않음

icmp 프로토콜

icmp 하는일: 인터넷 제어 메시지 프로토콜

  • 네트워크 컴퓨ㅜ터 안에서 돌아가는 운영체제에서 오류 메시지 를 전송 받는 데 주로 쓰인다
  • 프로토콜 구조의 type솨 code를 통해 오류 메시지를 전송 받는다

type 종류

  • 8번: 요청
  • 0번: 응답
  • 3번: destination unreachable (목적지 도달 실패) - 가는 경로 상 문제
  • 11번: time exceed (요청시간 만료) - 목적지까지 요처은 갔으나 응답이 제대로 오지 않는 문제 - 대부분 방화벽을 켜놨을때
  • 5번 : icmp redirect - 옛날에 쓰던거 - 라우팅 테이블을 원격으로 수정하는것 - 보안상 문제

icmp 구조

라우팅 테이블

라우팅 테이블

  • 라우팅 테이블(영어: routing table)은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용된다. 각 라우터의 라우팅 테이블은 모든 목적지 정보에 대해 해당 목적지에 도달하기 위해서 거쳐야 할 다음 라우터의 정보를 가지고 있다.

다른 네트워크와 통신과정

  • A 디바이스에서 B 디바이스로 icmp 통신을 요청한다고 했을때 라우팅 테이블을 확인 후 자신이 알고 있는 라우터로 요청을 보낸다
  • 이 때 이더넷 프로토콜의 mac주소는 목적지 mac주소가 아니라 라우터의 mac주소를 적어 보낸다
  • 받은 라우터는 까보고 다시 자신의 라우터 테이블을 확인하여 목적지 디바이스로 가기위해 어느 라우터로 보낼지 확인한다
  • 이더넷 프로토콜을 해당 라우터의 mac주소로 하여 새로 작성하여 보낸다

ipv4의 조각화

조각화란

  • 큰 ip 패킷들이 적은 MTU(maximum transmission unit)를 갖는 링크를 통하여 전송되려면 여러개의 작은 패킷으로 쪼개어/조각화 되어 전송돼야 한다

  • MTU로 필터링을 하는 순간은 IPv4 프로토콜이 붙을 때이다 mtu가 1500byte라면 ipv4프로토콜까지 붙었을떄 1500byte를 맞추고 그 뒤 2계층 프로토콜인 이더넷 프로토콜 14byte가 붙어 총 1514byte가 된다

  • 조각화 후 목적지에서 패킷의 순서를 보장하기 위한 3가지 요소

  1. identification: 하나의 데이터임을 표시하기 위한 고유 id값을 부여

  2. ip flag: 일반적으로 3개 중 마지막 MF만 사용되며 뒤에 남은 조각이 있다면 1 없다면(마지막) 0을 채운다

  3. Fragment offset: 맨 앞에서부터 얼마나 떨어진 조각인지를 표시(데이터크기 기준) 8로 나눈 값을 써준다

  • icmp는 마지막 조각에만 붙는다

5000byte 데이터를 mtu 1500일 떄 보낸다면
4조각 각각 ipv4프로토콜 크기 20byte를 제외한 1480byte 3개와 560byte로 나뉘고 앞 3개는 ipv4 20byte, 이더넷 14byte이 붙어 총 1514byte가 되고 마지막 조각은 ipv4 20byte, icmp 8byte, 이더넷 14byte가 붙어 602byte가 된다

profile
88888888

0개의 댓글