오늘 하루, develop

#10. [3계층] 패킷 전송과정 (라우팅테이블, IPv4조각화) 본문

네트워크

#10. [3계층] 패킷 전송과정 (라우팅테이블, IPv4조각화)

toZoe 2024. 5. 7. 02:55

 소개

멀리 있는 컴퓨터끼리 통신하는 과정과 이때 사용되는 라우팅 테이블에 대해 공부해보자!


라우팅 테이블

윈도우에서 라우팅 테이블 확인

netstat -r

  • 라우팅 테이블에 적혀 있는 네트워크 대역으로만 갈 수 있음
  • 그래서 기본값으로 0.0.0.0을 둠

 

다른 네트워크와 통신하는 과정

상황 : A가 B(192.168.20.20)와 통신하려고 함

1. A가 라우팅 테이블 확인

  • B의 네트워크 대역이 A의 라우팅 테이블에 없으면 갈 수 없음
  • B의 네트워크 대역인 192.168.20.0/24가 있음 -> 목적지로 가려면 일단 192.168.10.1로 가라!

 

2. 패킷 생성 및 다음 노드로 전달

 

  • ICMP 요청이므로 Type은 8

✅ 이더넷 프로토콜의 목적지 MAC 주소는 어디일까?

→ B가 아닌, 당장 다음 노드의 MAC 주소!! (여기서는 공유기)

 

3. 공유기가 패킷을 받고 다음 노드로 전달

  • 본인의 라우팅 테이블 확인
    • 목적지를 찾아서 다음 노드 확인
  • 이더넷 프로토콜을 다시 작성 (MAC주소를 모른다면 ARP 먼저 하고 작성)
    • 다음 노드에 대한 정보를 바꿔야 함. MAC 주소
    • 네트워크 대역이 바뀔 때마다 이더넷 프로토콜은 다시 쓰임

 

✔ 공유기의 수신, 송신  IP 프로토콜은 동일

 

 

✔ 이더넷 프로토콜은 변경됨

- 수신한 이더넷 프로토콜

 

- 송신할 이더넷 프로토콜

 

 

 

위와 같은 방법으로 B까지 도달

 


IPv4의 조각화

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

 

  • MTU = 3,300byte일 때, IPv4 프로토콜이 20byte이므로 감안해서 data는 3,300 - 20 = 3,280byte 단위로 쪼갠다.
  • offset에 들어가는 수가 크므로 offset을 쓸 때는 8로 나눈다.
  • 3280 / 8 = 410이므로 두 번째 패킷의 offset이 410이다.

 

  • MTU가 걸러지는 시점은 IP 헤더가 붙은 직후이다.

 

✔️ 실습

와이어샤크로 192.168.0.100 -> 192.168.0.51 ping 요청한 후 패킷 캡쳐

 

  • ICMP는 마지막 패킷에만 붙음
  • 마지막 패킷 길이 402 = 360 + 8(icmp) + 20(ip) + 14(이더넷)

출처

https://youtu.be/_AONcID7Sc8?si=eUP0E7J8X4wCz4wc

https://youtu.be/CjnKNIyREHA?si=2NTCzznFoIbkBabV