강의 영상

https://www.youtube.com/watch?v=_i8O_o2ozlE&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=9&t=1s 

 

목차

  1. IPv4 프로토콜
  2. ICMP 프로토콜
  3. 라우팅 테이블
  4. 다른 네트워크와 통신과정
  5. IPv4의 조각화
  6. 실습

 

IPv4 프로토콜

IPv4가 하는 일

  • 네트워크 상에서 데이터를 교환하기 위한 프로토콜
  • 데이터가 정확하게 전달될 것을 보장하지 않음
  • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 수도 있다. (악의적으로 이용하면 DoS 공격이 됨)
  • 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장

 

IPv4 구조

  • Identification: Packet을 쪼개서 보낼 때, 원래 하나의 Packet이었다는 것을 파악 가능
  • Framentation Offset: 쪼개진 Packet의 순서를 알려줌 (시작점부터 얼만큼 떨어져있는지 알려줌)
  • Time To Live (TTL): Packet이 무한 루프로 도는 것을 방지 (장비를 하나씩 지날 때마다 1씩 감소) -> TTL이 0인 장비는 해당 Packet을 버림
  • Protocol: 상위 프로토콜을 알려줌
    • ICMP: 0 1로 세팅
    • TCP: 0 6으로 세팅
    • UDP: 1 1로 세팅 (17)
    • Header Checksum: 헤더의 오류여부 점검

ICMP 프로토콜

강의영상

https://www.youtube.com/watch?v=JaBCIUsFE74&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=10 

ICMP 프로토콜이 하는 일

  • ICMP (Internet Control Message Protocol)
  • 네트워크 컴퓨터의 운영체제에서 오류메시지를 전송받는데 주로 쓰인다.
  • 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송받는다. 

 

ICMP 의 구조

  • Type: 대분류
  • Code: 소분류
  • Type 0,3,8,5,11은 알아야 함
    • 0, 8: 기본: 8 = 요청, 0 = 응답
    • 3 = Destination Unreachable, 11: Time Exceeded => 왜 통신이 안되는지 파악 가능
    • 3: 목적지까지 가지 못함 ex. 중간에 경로 설정 잘못됐을 때
    • 11: 목적지까지 갔는데 오지 못함 ex. 상대가 방화벽 켜 놨을 때
    • 5: Redirect 보안상 중요

 

IPv4, ICMP 프로토콜 실습

강의 영상

https://www.youtube.com/watch?v=8ZwTvTuZlVw&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=11 

* 내가 보내는 이더넷 프로토콜과 구글이 받는 이더넷 프로토콜은 다르다 (네트워크 대역이 달라서)

 

라우팅 테이블

강의영상

https://www.youtube.com/watch?v=CjnKNIyREHA&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=12 

어디로 보내야 하는지 설정되 있는 라우팅 테이블

(패킷을 보낼 때 참고하는 지도가 된다)

- 게이트웨이

    - 모르면 일단 저기로 보내라

 

다른 네트워크와 통신 과정

- A -> B가 (통신) 가능하려면, B의 네트워크 대역이 A의 라우팅 테이블에 있어야 한다

192.168.20.0/24 한테 가려면, 일단 192.168.10.1로 가라

 

A -> B로 갈 때, Ethernet은 cc:cc:cc:cc:cc:cc로 설정 (게이트웨이)
공유기는 192.168.20.0/24는 일단 192.168.30.2로 보낸다
Ethernet 프로토콜을 바꾼다

*Ethernet 프로토콜은 네트워크 대역이 바뀔 때마다 다시 작성됨

 

IPv4의 조각화

조각화란?

  • 큰 IP 패킷들이 작은 MTU를 갖는 링크를 통하여 전송되려면 여러 개의 작은 패킷으로 쪼개어(조각화)되어 전송돼야 한다.
  • 즉 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환이 필요하다.
  • 일단 조각화되면, 최종 목적지에 도달할 때까지 재조립되지 않는 것이 일반적이다.
  • IPv4에서는 발신지뿐만 아니라 중간 라우터에서도 IP 조각화가 가능
  • IPv6에서는 IP 단편화가 발신지에서만 가능
  • 재조립은 항상 최종 수신지에서만 가능함

 

조각화 예시

IPv4 20바이트를 뺀 만큼씩 쪼개야 한다

- MF (More Fragmentation): 내 뒤에 조각이 더 있다 - 맨 마지막 조각은 0

- Offset: 0으로부터 얼마나 떨어져있는지 (Byte단위)

큰 데이터를 조각화해서 보내는 예시

2000짜리 데이터를 1480과 520으로 쪼갬 (MTU 1500)
IPv4 구성

- 05 dc, 02 24: Data 길이

- 12 ab: 패킷의 ID값

- 2 0 : MF (More Fragmentation)

- 0 00, 0 b9: Offset

 

조각화 실습1

보내려는 데이터 크기: 2379

MTU: 980

- 몇 개의 패킷으로 쪼개지는가?

    3

- 첫번째 패킷의 데이터 크기는 몇인가?

    960

- 마지막 패킷의 데이터 크기는 몇인가?

    459

 

조각화 실습2

명렁어 ping [ip 주소] -l 4800

보내려는 데이터 크기: 4800

MTU: 1500

1514 = 14 (Ethrnet) + 20 (IPv4) + 1480 (Data)

마지막 조각 = 402 = 14 (Ethernet) + 20 (IPv4) + 8 (ICMP) + 360 (Data)

 

+ Recent posts