[네트워크] IPv4 프로토콜

최동혁·2023년 1월 30일
0

컴퓨터 네트워크

목록 보기
13/19

IPv4

  • 한번에 보내는 양이 많으면 받는 쪽에서 영원히 못 받을 수도 있다.
  • 보내지다가 중간에 끊기는 과정이 반복되다 보면.
  • 그래서 한번에 보내는 양을 쪼개기 위해 필요한 것들이 위와 같은 필드들이다.

TTL(Time To Live)

  • 인터넷 패킷이 인터넷 세상에서 살아있을 수 있는 시간이다.
  • count와 같다고 보면 된다.
  • 출발지 A에서 목적지 B까지 가야 하는데, 경로 설정이 잘못 되어서 무한 루프 되는 것을 막아준다.

Protocol

  • 인캡슐화 할 때 다음 캡슐이 무엇인지 미리 알려주는 역할

Header Checksum

  • 보내는 쪽과 받는 쪽에서 특정 수식을 통해 값을 만들어냄.
  • 보내는 쪽과 받는 쪽에서 보낸 것을 잘 보내진 건지 확인을 위함.

ICMP 프로토콜

  • 요즘은 그냥 통신 확인용으로 쓰인다.
  • cmd 창에서 ping 명령어를 치면 사용되는 프로토콜이 ICMP다.

Type과 Code

  • 0번 Echo Reply
  • 8번 Echo
  • 3번 Destination Unreachable
  • 11번 Time Exceded
    • 3번과 11번은 비정상 메세지이다.
    • 11번은 목적지까지 잘 찾아갔는데, 상대방이 답장을 안주는 것.(읽씹)
    • 3번은 통신하고 싶은 대상한테 내 요청이 가는 것 조차 못함.
    • 3번은 내 컴퓨터에 문제가 있는 것.
    • 11번은 받는 쪽에 문제가 있는 것.
    • 11번이 보통 방화벽 문제가 많음.

라우팅 테이블

  • 내가 보낸 패킷은 어디로 가는가?

  • 어디로 보내야 하는지 설정되어 있는 테이블.

  • netstat -r 명령어를 이용해 cmd 창에 입력하면 위의 결과처럼 나온다.

  • 각 라우터에는 라우팅 테이블이 있다.

  • 보낼 때 어디로 가야하는지 방향이 작성되어 있다.

  • 받는 곳에서도 보내는 곳으로 다시 응답을 줘야하기 때문에 라우팅 테이블에 작성이 되어있다.

  • 보내는 곳만 테이블이 작성되어 있고, 받는 쪽에는 테이블 작성이 안되어 있다면 ttl 초과가 일어난다.

  • 처음에는 라우팅 테이블에 직접 연결된 곳만 안다.

  • 설정해 줄 때마다 라우팅 테이블이 업데이트 되고, 서로 응답 받을 수 있다.

  • 모든 라우터들의 대한 경로가 있어야지 각 컴퓨터끼리 통신을 주고 받을 수 있다.

  • 전부 수동으로 하나 하나 다 추가하는게 힘들다.

  • 그래서 네트워크 장비들끼리 자동으로 추가하는 기능이 있다.

  • 그런데 라우팅 테이블에 전세계의 경로가 써져있는 것이 아닌데 어떻게 우리는 웹사이트를 들어가서 통신할까??

  • 0.0.0.0 이다.

  • 이건 모든 IP 주소이다.

  • 그래서 라우팅 테이블에 없는 ip는 게이트웨이로 가라 라고 말한다.

  • 그게 이것이다.
  • 게이트웨이는 외부 인터넷이랑 연결되어 있기 때문에, 라우팅 테이블에 설정된 ip가 아닌 값이 들어오면 게이트웨이로 가게 하는 것이다.

통신 과정

  • 라우팅 테이블을 확인한다.

  • 확인 하고, 패킷을 만든다.
  • A에서 B로 가야하기 때문에 라우팅 테이블을 보는데 위에서 봤듯이 가장 가까이 있는 공유기 ip로 가라고 적혀있었다.
  • 그러기 위해서는 공유기의 MAC주소가 필요.
  • ARP 통신을 한다.

  • 계속 바로 옆에 있는 것의 경로가 라우팅 테이블에 적혀있다.

  • 이렇게 해서 A에서 B까지 가게 된다.

직접 그려보기

  • 일단 연결되어 있는 라우터들끼리는 테이블에 저장되어있다.
  • 그리고 최종 목적지의 아이피는 테이블에 적어줘야 한다.

IPv4의 조각화

  • 11980이면 3300으로 쪼개야 하는데, ip 프로토콜이 20을 차지해서 각 3280만큼 쪼갠다.
  • 각 ip 프로토콜은 전부 같다.

과정

  • MTU가 1500이면 이 패킷은 못넘어간다.
  • 그래서 쪼개야 함.

  • 최대 크기인 1500바이트와 나머지 548바이트로 나눈다.
  • 물론 ip 프로토콜은 20바이트이고, ICMP 요청이 8바이트이기 때문에 순수 데이터 크기는 1472바이트이다. 그리고 나머지가 쪼개진다.
  • 그래서 IPv4 패킷에 쓰여져 있는 offset과 나머지 정보들로 몇번째로 쪼개진 패킷인지 알아차릴 수 있다.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글