Yozzang의 해킹일기 💻
article thumbnail
728x90

이번 포스트에서는 Network Layer에 대해 다루도록 하겠습니다.

Network Layer의 주요 역할 :

  • 패킷 전달(Packet Forwarding) : 종단 간(END-TO-END)의 패킷 전달
  • 라우팅(Routing) : 종단 간 패킷을 전송할 때, 라우팅 프로토콜을 기반으로 가장 효율적인 경로를 선택하여 패킷을 전송할 수 있게 함.
  • 논리적인 주소(Logical Address) 사용 : IP 주소를 사용하여 사용자 데이터를 목적지 장치까지 전달.

Network Layer 논리 주소 사용시의 동작 과정 :

  1. Transport 로부터 segment를 전달 받음
  2. 전달 받은 세그먼트를 캡슐화(헤더를 붙이는 작업)해서 데이터그램으로 바꿈
  3. network -> datalink -> physical -> physical -> datalink -> network ....
  4. 헤더를 붙이고 제거하는 과정을 반복
  5. 최종 목적지에 도착하면 캡슐을 제거하여 segment를 Transport로 전달
그러면 라우터는 어떻게 목적지를 찾아가는 것일까?

패킷이 라우터에 도착하면 라우터가 제일 먼저 하는 일이 바로 패킷의 헤더 부분을 확인하는 겁니다. 그것도 헤더 부분 중의 Destination IP Address, 즉, 해당 패킷의 목적지 IP 주소를 확인하는 것입니다. 그런 다음에 자신의 포워딩 테이블(라우팅 알고리즘에 의해 만들어짐)을 참조해서 다음 경로를 선택합니다. 다음 그림은 바로 해당 과정을 도식화한 것입니다.

그러나 IP주소는 총 32비트, 즉 2의 32승(40억)개가 되므로 한 포워딩 테이블에 모든 IP주소를 저장하기에 다소 부적합합니다(Nodal Processing Delay 발생). 따라서 실제 포워딩 테이블은 다음 그림과 같이 모든 IP주소가 아닌 IP주소를 범위(address-range)로 나뉘어서 저장합니다. 

그러면 IP주소를 나뉘는 기준과 선택 기준이 또 무엇일까?

 

IP address-range를 정하는 기준이 아주 심플합니다. IP주소가 32비트라고 할 때 비트의 크기를 가지고 결정합니다. 예를 들면 0~100은 A구역, 101~200은 B구역과 같은 식으로 결정합니다. 다음 그림을 통해 더 쉽게 이해할 수 있습니다.

이어서 선택 기준에 대해서 다루겠습니다. IP주소는 기본적으로 "Longest Prefix Matching"을 지키고 있습니다. 즉, IP주소와 비슷하는 정도가 구체적일수록 선택된다는 것입니다. 다음의 예시 그림을 살펴보겠습니다.

1번 예시는 0번과 가장 비슷해서 0번 링크를 선택한다는 것을 쉽게 알 수 있을 것입니다. 그러나 2번 예시는 어떤 링크를 선택할까요? 2번 예시는 1과 2번 링크를 다 선택할 수 있지만 실제로는 1번 링크가 선택됩니다. 그 이유로는 1번 링크와의 비슷한 정도가 좀 더 구체적이기 때문입니다.

마지막으로 IP 헤더의 구조에 대해 알아보겠습니다.

 

IP Header

주요 기능 설명 : 

  • ver : IP의 버전 (IPv4, IPv6)
  • head.len : 헤더의 길이(Bytes)
  • type of servicd : 실제로 사용 X
  • time to live : 남은 최대 홉 개수 (무한 루프에 빠지는 것을 막기 위해 사용)
  • upper layer : Transport Layer, 즉 TCP로 보내야 할지, UDP로 보내야 할지 정하는 역할

'Networking' 카테고리의 다른 글

NAT (Network Address Translation)  (0) 2022.04.11
IP Address (IPv4)  (0) 2022.04.10
Network Core  (0) 2022.04.08
TCP & UDP  (0) 2022.04.07
TCP/IP Protocol Model  (0) 2022.04.07
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!