[네트워크 마스터 시리즈] Network Layer (feat. ARP)

noisrucer·2024년 5월 20일
0
post-thumbnail

1. 서론


저번 챕터에서는 OSI 모델 2계층인 Data Link Layer(데이터 링크 계층)에 대해서 살펴보았다. 데이터 링크 계층의 주 역할은 네트워크 내의 인접한 두 물리적인 단말 사이를 연결하는 것이다.

이번 시간에는 Network Layer(네트워크 계층)에 대해서 자세히 살펴본다.

학습 순서는 다음과 같다.

  1. 네트워크 계층의 역할은 무엇인가?
  2. IP 주소란? MAC 주소와의 차이점은?
  3. Subnet이란?
    ?. IP Packet 포맷
  4. ARP란?
  5. Router/Routing이란?
  6. Routing Protocol이란?
    • Autonomous System
    • IGP vs EGP
  7. 서로 다른 네트워크에 있는 두 host 사이의 packet 흐름

2. 네트워크 계층의 역할


이번 시간에 살펴볼 네트워크 계층의 주 역할은 "서로 다른 네트워크에 있는 두 host를 연결"하는 것이다.

(물론 같은 네트워크에 있는 두 host도 연결한다)

그러면 서로 다른 네트워크host의 정의를 먼저 짚고 넘어가자.

2.1 서로 다른 네트워크란?

이전 Data Link Layer 포스트에서 알아봤듯이 "같은 네트워크"란 다음 두가지 방법으로 해석할 수 있다.

  1. 논리적으로 같은 네트워크 (Subnet)
  2. 브로드캐스트 도메인 (Broadcast Domain)

일반적으로 두 개의 해석은 동일하다.

즉, 같은 subnet에 속하는 두 단말은 L2 protocol만을 이용해서 소통할수 있고 (단, 같은 subnet이지만 서로 다른 VLAN에 있는 단말은 서로 다른 broadcast domain에 속하므로 L2 protocol만으로 소통할수 없다), 같은 broadcast domain에 속하는 두 단말은 같은 subnet에 속한다.

이번 챕터에서는 첫번째 해석인 "논리적으로 같은 네트워크(subnet)" 해석에 초점을 맞추겠다.

따라서 "다른 네트워크"란 "다른 subnet"을 의미한다.

Subnet에 관해서는 곧 자세히 살펴볼 것이다.

2.2 Host란?

RFC 2460에 host에 대한 명확한 정의가 나와있다. IPv6에 관한 문서이지만 IPv4로 해석해도 무관하다.

해석하면 host는 "IP 주소를 가지는 router가 아닌 모든 네트워크 기기"를 말한다. 곧 살펴보겠지만 router는 수신지 IP 주소가 자신이 아니더라도 곧바로 IP packet을 버리지 않고 적합한 상대에게 전달하려고 노력하는 기기를 말한다. 그에 반해 host는 IP packet의 수신지 IP 주소가 자신이 아니라면 곧바로 IP packet을 버린다. 쉽게 말해서 개인 노트북 같은 기기이다.


이제 네트워크 계층의 역할을 다시 살펴보자.

"서로 다른 네트워크에 있는 두 host를 연결하는 것"

위에서 배운 내용들을 바탕으로 다음과 같이 번역할 수 있다.

"서로 다른 subnet에 있는 IP 주소를 가지는 router가 아닌 두 네트워크 기기(host)들을 연결하는 것"

3. IP 주소란?

3.1 IP 주소 vs MAC 주소

네트워크 세계에는 2가지 주소가 존재한다.

MAC 주소는 L2 데이터 링크 계층에서 동작하는 단말의 NIC에 할당되는 물리적인 주소이다.

반면에 IP 주소는 L3 네트워크 계층에서 동작하는 OS에 할당되는 논리적인 주소이다. 네트워크 통신을 할때는 이 IP 주소를 통해서 최종 목적지를 명시하며, 수많은 MAC 주소를 가진 단말을 거치며 수신지 host로 데이터를 전달한다.

IP 주소와 MAC 주소를 연결하는것이 ARP(Address Resolution Procotol)이다. 곧 살펴보겠지만 ARP는 "이 IP 주소를 가진 사람 있나요~ 있으면 MAC주소 좀 알려주세요"라는 메세지를 보내 IP 주소를 MAC 주소로 변환한다.

IP 주소에는 IPv4 주소와 IPv6 주소가 있다. 이번 포스트에서는 IPv4에 대해서 알아본다. 따라서 그냥 IP 주소라고 표기되어 있으면 IPv4 주소를 말한다.

3.2 IP 주소의 포맷

IP 주소는 32 bit(4 byte)로 이루어져있으며, 8 bit씩 점(.)으로 구분해서 10진수로 표기한다. 점으로 구분한 그룹을 octet(옥텟)이라고 부른다.

  • 2진수 표기: 11000000 10101000 01100100 00000001
  • 10진수 표기: 192.168.100.1

또한, IP 주소는 2가지 부분이 있다.

  1. 네트워크/서브넷 부분: 이 주소가 어떤 IP 네트워크에 있는가?
  2. 호스트 부분: 그 네트워크에서 어떤 host인가?

그런데 IP 주소만 있으면 32 bit중 어디까지가 네트워크 부분이고 어디부터가 호스트 부분인지 구별 할 수가 없을것이다. 따라서 IP 주소는 그 자체로 사용되지 않고, subnet mask(서브넷 마스크)라는 또 다른 32 bit 값과 함께 사용된다.

3.3 Subnet Mask

IP 주소 중 대응하는 subnet mask의 bit가 1인 부분은 네트워크 부분이고, 0인 부분은 호스트 부분이다.

FieldValue
IP 주소 (10진수)192.168.100.1
IP 주소 (2진수)11000000 10101000 01100100 00000001
Subnet mask (2진수)11111111 11111111 11111111 00000000
Subnet mask (10진수)255.255.255.0
Subnet mask (CIDR 표기)/24

Subnet mask는 2진수, 10진수, CIDR 표기법 등으로 표현할 수 있다. 물론 모두 똑같은 값을 표현한다. CIDR 표기 법은 귀찮게 일일히 값을 나열하는 대신에 왼쪽부터 몇개의 1이 있는지를 나타내는 표기법이다.

위의 예제에서 IP 주소에 subnet mask를 적용하면,

  • 네트워크/서브넷 부분: 192.168.100
  • 호스트 부분: 1

이 될 것이다.

4. Subnet / Subnetting


4.1 Classful Addressing vs CIDR

IP 주소의 할당 방식은 2가지가 있다.

4.1.1 Classful Addressing

IP 주소는 사용 용도에 따라 Class A ~ E의 주소 그룹으로 분류 할 수 있다.

클래스네트워크 부분 bit 수호스트 부분 bit 수총 할당 가능한 IP 주소 (네트워크의 크기)설명
Class A8 bit24 bit16,777,214대규모
Class B16 bit16 bit65,354중규모
Class C24 bit8 bit254소규모
Class D---특수 용도
Class E---특수 용도

Classful Addressing은 위의 주소 클래스에 기반해 IP 주소를 할당하는 방식을 말한다. A, B, C가 주로 사용되며 D, E는 일반적으로 사용되지 않는다. 네트워크 부분과 호스트 부분이 8 bit 단위로 깔끔하게 분리 되므로 알기 쉽고 관리하기 쉽다는 장점이 쉽다. 하지만 주소 클래스가 A, B, C 3가지 밖에 존재하지 않으므로 낭비되기 쉽다는 장점이 있다. 만약 65,355개의 IP 주소가 필요하다면 Class A를 사용해야 하는데 일반적인 기업에서 1600만개의 IP 주소가 필요한 경우는 거의 없을 것이다.

4.1.2 CIDR (Classless Inter-Domain Routing)

8 bit 단위의 주소 클래스에 관계없이 유연하게 필요한 만큼 IP 주소를 할당하는 방식을 CIDR이라고 한다. CIDR 방식에서 네트워크 부분을 subnet 부분이라고 부른다.

만약 조직에 10,00개의 IP 주소가 필요하다면, 호스트 부분에 10개의 bit를 할당하고(2102^{10}=1024), 서브넷 부분에 22개의 bit를 할당하면 될것이다. 이러한 서브넷의 예시 중 하나는 192.168.240.0/22이다.

그런데 고민해볼 부분이 있다. 만약 조직에서 192.168.1.0/24 네트워크를 할당받았다고 하자. 그러면 192.168.1.0 ~ 192.168.1.25528=2562^{8}=256개의 IP 주소를 사용할수 있는데, 이 주소 범위를 각 부서에 맞게 또 다시 나누고 싶을수도 있을것이다. 이러한 작업을 subnetting(서브네팅)이라고 한다.

만약 A, B, C, D 부서에 256개의 IP 주소를 동일하게 나눠주고 싶다고 가정하자. 그렇다면 8 bit의 호스트 부분을 4개의 그룹으로 또 다시 나눠야 한다. 4개로 나누려면 2 bit가 필요하다.

따라서 다음과 같이 각 부서에 할당할 수 있다.

  • A 부서: 192.168.1.0 ~ 192.168.63
    • 00 000000 (0) ~ 00 111111 (63)
  • B 부서: 192.168.1.64 ~ 192.168.1.127
    • 01 000000 (64) ~ 01 111111 (127)
  • C 부서: 192.168.1.128 ~ 192.168.1.191
    • 10 000000 (128) ~ 10 111111 (191)
  • D 부서: 192.168.1.192 ~ 192.168.1.255
    • 11 000000 (192) ~ 10 111111 (255)

4.2 Subnetting을 하는 이유

그런데 왜 굳이 다른 subnet으로 나눌까?

외부 네트워크 X에서 네트워트 Y의 특정 단말 Z(A 부서)에 패킷을 전달하고 싶다고 가정하자. 서브네팅이 없다면 Y에 속하는 모든 단말들을 라우팅 테이블에 등록하고 수신지 IP 주소와 하나하나 비교해야 할 것이다. 하지만 만약 네트워크 Y를 위와 같이 A, B, C, D의 서브넷으로 나누게 되면, 단말 Z에 대한 요청이 들어올때 라우팅 테이블에서 4개만 스캔 한 뒤 A 부서로 보낼 수 있다. 이렇게 서브넷을 적절히 이용하면 패킷 라우팅 효율성을 증가할 수 있다.

또 다른 이유는 보안적인 측면이 있다. 만약 A 부서는 아주 민감 정보를 다루는 부서이기 때문에 다른 부서들과 다르게 특정 보안 정책을 적용해야 할 수 있다. 이때 ACL(Access Control List)와 firewall 등을 서브넷 단위로 적용하여 부서마다 다른 보안 정책을 취할 수 있다. AWS에서도 똑같은 개념이 적용된다. VPC를 여러개의 subnet으로 나눈 뒤, 각 서브넷마다 서로 다른 NACL(Network Access Control List)를 적용할 수 있다.

4.3 예외 주소

Subnet을 할당받았다고 host 부분의 모든 IP 주소를 쓸 수 있는건 아니다.

  • Network address (네트워크 주소)
    • 네트워크 주소는 호스트 부분의 비트가 모두 0인 IP 주소로, 네트워크 그 자체를 나타낸다.
    • 또한 0.0.0.0/0은 기본 경로 주소(default route address)를 나타낸다. 기본 경로 주소는 "모든 네트워크"를 나타낸다.
  • Broadcast address (브로드캐스트 주소)
    • 브로드캐스트 주소는 호스트 부분의 비트가 모두 1인 주소로, 같은 네트워크에 있는 모든 단말을 나타낸다.
  • Loopback address (루프백 주소)
    • 루프백 주소는 자기 자신을 나타내는 1 옥텟이 127인 IP 주소이다.
    • 1 옥텟이 127이기만 하면 어떤 주소를 사용해도 상관 없지만 통상적으로 127.0.0.1/8을 사용한다. Localhost라고도 불린다. 이 주소는 익숙할 것이다.

5. IP Packet의 포맷

데이터 링크 계층에서 주고받는 PDU는 frame이라고 부른다.

네트워크 계층에서 주고받는 PDU는 (IP) packet이라고 부른다 (계층과 상관없이 통상적으로 주고받는 데이터를 packet이라고도 부르기에 혼동이 있을 수도 있다).

이제 IP packet의 형태에 대해 살펴보자.

필드크기설명
Version4 bitIP 버전을 나타낸다. IPv4에서는 0100 이다.
ToS1 byte혼잡도 제어 등에서 IP packet의 우선순위를 나타낸다
Header Length4 bit- IP packet 헤더 길이를 나타낸다.
- IP packet 헤더 길이는 4 byte의 배수여야 한다. 이 값은 헤더 길이를 4 byte 단위로 환산한 값이 들어간다. 보통 헤더 길이는 20 byte므로 5가 들어간다.
Packet Length2 byte- IP packet 헤더와 페이로드를 합친 전체 길이를 나타낸다.
- Ethernet의 MTU가 1500 byte인 경우 packet 길이 또한 1500이 된다.
Identifier (식별자)2 byte- 트랜스포트 계층에서 MTU보다 더 큰 데이터를 넘겨주는 경우에는 어쩔 수 없이 IP packet을 여러개로 나눠서 보내야한다 (IP fragmentation). 이 경우 수신지 측에서 쪼개진 패킷들을 다시 재조립을 해야 할텐데 이 때 identifier값이 사용된다. 즉, packet의 ID.
- IP packet을 만들때 무작위로 할당된다.
Flag3 bit- IP fragmentation시에 사용되는 몇개의 비트들이다. 3개가 있는데 첫번째는 사용되지 않는다.
- DF (Don't Fragment) 비트: IP fragmentation을 허락할지를 나타낸다. 0이면 허가하고 1이면 허가하지 않는다. Fragmentation을 하면 그만큼 성능이 안좋아지므로 최근 애플리케이션은 성능을 고려해 DF 비트를 1로 세팅해 fragmentation을 아예 허가하지 않는다. 대신 상위 계층에서 미리 데이터 크기를 조정한다.
- MF (More Fragment) 비트: 1이면 fragmentation된 Packet이 뒤에 더 온다라는 뜻이고 0이면 마지막 fragmented packet이라는 뜻이다.
Fragment Offset13 bit- Fragmentation된 packet이 본래 packet의 앞쪽부터 어느 위치에 있는지를 나타낸다.
- 8 byte의 배수이다.
TTL1 byte- IP packet은 라우터를 경유하면서 목적지로 나아가는데, 이때 경유하는 라우터 수를 hop 수라고 한다. TTL은 hop을 거칠때마다 1씩 감소하고 0이 되면 packet이 파기된다. Packet을 파기한 라우터는 "Time-to-live exceed"라는 ICMPv4 패킷을 반환해서 송신지 단말에 알린다.
- IP packet이 목적지를 찾지 못하고 영원히 떠돌거나 과도한 라우터 경유를 막기 위해 사용된다.
Protocol Number1 byte- IPv4 payload가 어떤 프로토콜로 구성되어 있는지를 나타낸다.
- ex) TCP인 경우는 6, UDP인 경우는 17.
Header Checksum2 byte- IPv4 header의 정합성을 체크하기 위해 사용되며, 1의 보수 연산을 사용한다.
- 이 값은 TTL 때문에 hop마다 새로 계산되어야 한다.
송/수신지 IP 주소각 4 byte송/수신지의 IP 주소
Option가변실무에서 사용 X
Padding가변IPv4 헤더 길이는 4 byte의 배수가 되어야 한다. 하지만 Option 필드는 가변이기 때문에 만약 4의 배수가 아닌 경우 padding을 끝에 추가해 강제로 만든다.

6. Routing & ARP


지금까지 네트워크 계층의 역할, IP 주소, 서브넷, 그리고 IP packet 포맷에 대해 학습했다. 이제 서로 다른 네트워크의 두 host가 실제로 어떻게 통신을 하는지 알아보자.

6.1 Router (라우터)

라우터는 L3 네트워크 계층에서 동작하는 기기로, IP 주소와 MAC 주소를 가지는 인터페이스가 여러개가 있고, 각 인터페이스는 서로 다른 subnet(혹은 LAN으로 해석해도 좋다)과 연결되어 있다.

또한, 라우터는 IP packet이 특정 subnet에서 들어오면 routing table(라우팅 테이블)을 보고 적절한 방향(적절한 subnet)으로 라우팅 하는 역할을 수행한다.

앞서 살펴봤듯이, 라우터와 호스트의 차이는 간단한다. 전달받은 IP packet의 수신지 IP 주소가 자신과 달라도 라우팅을 하려고 노력하는 친구면 라우터고, 그렇지 않고 바로 packet을 버리면 호스트이다.

라우터에서 다른 라우터로 데이터를 전달할때 저번 시간에 배운 L2 switch와 곧 살펴볼 ARP가 사용된다.

결국 인터넷이라는 거대한 시스템은, 수많은 라우터들이 상호작용하며 IP packet을 라우팅하여 목적지로 데이터를 전달하는 구조이다.

6.2 ARP (Address Resolution Protocol)

그런데 의문점이 하나 생긴다. 상대방의 IP 주소만 가지고 어떻게 실제로(물리적으로) 패킷을 전달할 수 있을까? 결국 우리가 얘기하고 있는 L3 IP packet도 L2 frame으로 캡슐화될 것이고, 그 frame은 오로지 "MAC 주소"를 기반하여 전달된다.

즉, IP 주소MAC 주소로 변환하는 프로토콜이 필요하다. 이러한 L3 계층과 L2 계층 사이의 징검다리를 수행하는 프로토콜이 바로 ARP이다.

ARP는 L2 계층의 broadcast를 사용한다.

참고로 ARP는 L2 계층에 속하는 프로토콜이다 (L2와 L3 그 어느 중간에 위치한 프로토콜 같기도 하고.. 실제로 ARP 패킷은 L2 frame의 payload 부분에 들어간다).

6.2.1 ARP의 패킷 포맷

출처: Javatpoint

필드크기설명
Hardware Type(HTYPE)2 byte- L2 protocol을 명시
- Ethernet에서는 0x0001
Protocol Type(PTYPE)2 byte- L3 protocol을 명시
- IPv4에서는 0x0800
Hardware Length(HLEN)1 byte- MAC 주소 길이
- 6 (MAC 주소: 6 byte)
Protocol Length(PLEN)1 byte- IP 주소 길이
- 4
Operational Code2 byte- ARP frame 종류
- 1: ARP Request
- 2: ARP Reply
Sender Hardware Address (SHA)가변송신지 MAC 주소
Sender Protocol Address (SPA)가변송신지 IP 주소
Target Hardware Address (THA)가변- 수신지 MAC 주소
- 알지 못하므로 더미 주소인 00:00:00:00:00:00이 들어간다
Target Protocol Address (TPA)가변- 수신지 IP 주소
- 같은 서브넷이면 상대 단말의 IP 주소
- 다른 서브넷이면 next hop 라우터의 IP 주소

참고로 ARP packet 자체는 Ethernet frame의 payload안에 들어간다.

6.2.2 ARP의 동작 과정

  • PC1
    • IP: 10.0.11.2
    • MAC: a1a1
  • PC2
    • IP: 10.0.11.3
    • MAC: b1b1

같은 서브넷에 있는 PC1PC2로 IP packet을 전달하고 싶다고 가정해보자. 현재 PC1PC2의 IP 주소는 알지만 MAC 주소는 모르는 상태다.

  1. PC1은 ARP Request packet을 payload에 담은 Ethernet frame을 조립한다.

    • PC1은 ethernet frame 헤더의 송신자 MAC 주소 필드에 a1a1, 수신자 주소 필드에 ff:ff:ff:ff:ff:ff를 넣는다 (ARP packet의 THA와 헷갈리지 말자. ARP는 broadcast를 사용하므로 "frame 헤더의 수신자 필드" 자체에는 모든 비트가 1인 값이 들어간다).
    • Frame payload에 위에서 살펴본 ARP 패킷을 조립하여 넣는다.
      • SHA: a1a1
      • SPA: 10.0.11.2
      • THA: 00:00:00:00:00:00
      • TPA: 10.0.11.3
      • 나머지 필드
  2. L2 Switch는 frame을 받아서 연결된 모든 단말들에게 broadcast한다.

    • PC1 으로부터 frame이 들어왔으니 먼저 {Fa0/1: a1a1} 매핑 정보를 학습한다.
    • Frame의 수신자 MAC 주소가 ff:ff:ff:ff:ff:ff임을 보고 broadcast를 시도하려 한다.
    • 하지만 지금은 PC1을 제외한 연결된 모든 단말들의 매핑을 모르기 때문에 flooding을 하여 Fa0/2: b1b1 매핑 정보를 학습한다.
      • 주의할 점) L2 switch flooding과 L2 broadcast는 다르다. 만약 switch가 연결된 모든 단말들의 {port: MAC} 매핑을 이미 학습한 상태라면 flooding 없이 바로 broadcast를 할 수 있을 것이다.
    • 이제 ARP packet을 담은 ethernet frame을 연결된 PC1을 제외한 모든 단말들에게 "TPA(10.0.11.3) 가진 친구있으면 MAC 주소 알려주세요~"라며 broadcast한다.
  3. PÇ2는 ARP Reply packet을 담은 ethernet frame을 만들어 PC1에게 자신의 MAC 주소와 함께 회답한다.

    • Switch가 broadcast한 frame안의 ARP packet의 TPA(수신지 IP 주소)가 자신과 일치함을 알고, 그에 대응하는 ARP Reply 회답 packet을 만들어 frame에 담아서 unicast로 PC1으로 회답한다.
      • Ethernet frame
        • 송신지 MAC: b1b1
        • 수신지 MAC: a1a1
      • ARP Packet
        • SHA: b1b1
        • SPA: 10.0.11.3
        • THA: a1a1
        • TPA: 10.0.11.2
    • 회답 frame을 받은 switch는 수신지 MAC 주소 a1a1을 본 뒤 자신의 MAC 주소 테이블에 이미 매핑이 있으므로 flooding 없이 바로 PC1에게 전달한다.
  4. PC1은 ARP Reply packet이 담긴 frame을 회신한뒤, 송신지 MAC 주소(b1b1)를 추출한다. 드디어 상대 단말의 IP 주소로부터 MAC 주소를 얻는데 성공했다!

  5. PC1은 ARP Cache 테이블에 방금 얻은 {IP 주소: MAC 주소}를 캐싱한다.

    • 만약 PC1PC2와 자주 통신하는데, 매번 ARP를 이용해 MAC 주소를 구하는건 비효율적이다. 따라서 ARP Cache 테이블에 매핑 정보를 기록해두고 추후 이 정보를 이용해 시간을 아낀다.
    • 보통 ARP 테이블의 엔트리는 만료 시간이 있다 (ex. 10분).
    • 추후 살펴보겠지만 routing table이 있는 곳(router)에는 항상 ARP 테이블도 존재한다.
    • 맥북에서는 arp -a 커맨드로 ARP cache 테이블 정보를 볼 수 있다.

6.3 Routing

이제 라우터가 어떻게 라우팅 테이블을 보며 IP packet을 적절한 방향으로 라우팅 하는지 알아보자. 한 가지 명심에 둬야 할 점은 같은 서브넷에 있는 두 단말들끼리는 라우팅 자체가 필요가 없다는 점이다. 다른 서브넷에 있는 단말에게 패킷을 전달할때만 라우터를 거쳐 상대방에게 전달된다. 또한 라우팅에는 직접 전달간접 전달 두 가지 종류가 있다.

  • 상대 단말이 같은 서브넷에 있을 때
    • L2 스위칭
  • 상대 단말이 다른 서브넷에 있을 때 (라우팅)
    • 직접 전달 (라우터의 인터페이스와 직접 연결된 서브넷인 경우)
    • 간접 전달 (직접 연결되지 않은 서브넷인 경우)

6.3.1 같은 서브넷에 있는 경우 - Switching

PC1은 자신의 IP 주소 & 서브넷 마스크수신지 IP 주소를 비교하여, 목적지가 같은 서브넷인지 다른 서브넷인지를 판단한다.

앞서 ARP 동작에서 살펴본 예시랑 동일하다. 같은 서브넷에 있는 기기에게 IP packet을 전송하는 경우에는 라우팅 자체가 필요 없다. ARP를 이용해 PC2의 MAC 주소를 구하고, switch를 통해 frame을 쏴버리면 된다.

6.3.2 다른 서브넷 - 직접 전달 Routing

라우터의 특정 인터페이스와 직접 연결된 서브넷인 경우, 라우터는 추가적인 라우터를 경유하지 않고 L2 protocol 레벨에서 직접 상대 단말로 IP packet을 쏠 수 있다. 이유가 뭘까? 그림에서 Router 1의 eee2 MAC 주소를 가지는 인터페이스가 10.0.22.x/24 서브넷과 연결되어 있다. 그러면 위의 "같은 서브넷에 있는 경우" 케이스가 그대로 적용된다. Switch를 통해 같은 서브넷의 어떠한 단말이든 곧바로 frame을 전달할수 있는 것이다.

PC1에서 다른 서브넷에 있는 PC3로 IP packet을 전송하고 싶은 상황이다.

STEP 1

먼저 PC1은 자신의 IP 주소와 서브넷 마스크랑, 수신지 PC3 IP 주소를 비교한 뒤, PC3이 다른 서브넷에 있다고 판단한다.

맥북에서는 ifconfig를 통해 IP 주소와 서브넷 마스크를 알 수 있다.

STEP 2

목적지가 다른 서브넷에 있으므로 라우터에 IP packet을 보내어 대리 전송을 의뢰해야 한다. 그런데 무슨 라우터에 보내야 할까? 바로 Gateway Router이다.

Gateway router이란 쉽게 말해서 "어디로 가야될지 모르겠다면 일단 이 라우터로 보내세요~"이다.

  • 맥북에서는 netstat -rn 커맨드를 이용해 라우팅 테이블을 볼 수 있다. Destination이 default라고 되어 있는 엔트리가 바로 gateway router(10.160.190.1)이다.

예제에서는 PC1의 라우팅 테이블에 Router 1이 default gateway로 등록되어 있다고 가정한다. 따라서, PC1은 IP packet을 Router 1에게 "L2 protocol"을 이용하여 전송한다. 항상 기억하자, L3 IP packet의 헤더는 최종 목적지인 PC3까지 전달하기 위해 사용된다. 같은 서브넷에서는 무조건 L2 protocol으로 전송해야한다.

하지만 우리는 아직 Router 1의 MAC 주소를 모른다. 따라서 ARP를 이용해 Router 1의 MAC 주소를 찾는다.

이제 Router 1으로 frame을 전송한다.

여기서 주의해야 할 점은 이 Router 1으로 도착하면 L3 header은 파기된다. 명심하자. L3 header는 오로지 PC1에서 Router 1으로 frame을 전달하는 역할을 수행한다. 달성이 됐으니 더 이상 필요가 없다.

STEP 3 (feat. 라우팅 테이블)

Router 1은 전달받은 IP packet의 수신지 IP 주소(10.0.22.3)을 보고 라우팅 테이블을 뒤져서 매칭되는 엔트리를 찾는다.

라우팅 테이블의 동작 방법에 대해 알아보자.

라우팅 테이블에는 Destination IPGateway 엔트리가 존재한다.

Gateway는 destination IP로 가기위해 가야하는 다음 장소이다.

  • 만약 Destination IP가 라우터의 어느 인터페이스와 직접 연결(Directly Connected, DC)되어 있는 경우에는 gateway에 인터페이스 들어간다. 예제의 Router 1 라우팅 테이블에서, 목적지 IP 주소가 10.0.11.x/2410.0.22.x/24인 경우 Router 1과 직접 연결된 서브넷에 있으므로 각각 왼쪽과 오른쪽 인터페이스가 gateway로 설정된다.
    • 직접 연결된 경우, 라우팅 테이블의 엔트리는 자동으로 설정된다.
  • 만약 Destination IP가 라우터의 어느 인터페이스와도 직접 연결되지 않는 경우에는, 최종 목적지에 도달하기 위해 거쳐야하는 바로 다음 라우터의 IP 주소가 들어간다. Router 1 라우팅 테이블에서, 10.0.33.x/24에 가기위해서 다음으로 Router 2를 거쳐야 하므로 Router 2의 IP 주소가 gateway로 설정되어 있음을 알 수 있다.

그런데...직접 연결되지 않는 경우에, Router 1이 10.0.33.x/24로 가기 위해서 Router 2로 가야된다는걸 애초에 어떻게 알수가 있을까? 예제에서는 아주 가까운 목적지니까 간단해 보이지만 만약 "바다건너 저 멀리 미국에 있는 컴퓨터로 가기 위해 거쳐야할 다음 라우터는 어떻게 알 수 있을까?". 여기에 네트워크 계층의 핵심이라고 할 수 있는 "라우팅 프로토콜"이 사용된다. 잠시 뒤에 살펴보겠지만 간단하게 알아보자.

1) Static Routing: 관리자가 직접 라우팅 테이블에 설정하는 방법이다. 직접 "이런 서브넷이면 이 라우터에 가는게 맞겠다"하고 수기 등록을 해주는것이다. 당연히 대규모 & 복잡한 네트워크에는 현실적이지 않다.
2) Dynamic Routing: 관리자가 직접 설정을 해줄 필요 없이, 라우터들끼리 적절한 라우팅 테이블 정보를 다이내믹하게 교환하면서 라우팅 테이블을 만들어가는 방식이다. 대부분의 경우 이 방식을 사용한다.

얘기가 길어졌는데, 예제로 돌아가보자.

예제에서는 IP packet의 최종 수신지 IP가 10.0.22.3이므로,DC 10.0.22.x/24 Right 엔트리가 매칭된다.

만약 매칭되는 엔트리가 여러개가 있으면 수신지 IP와 가장 길게 매칭되는(Longest Match) 엔트리를 선택한다. 예를 들어 라우팅 테이블에 Destination IP가 10.0.22.0/2410.0.22.0/25가 있다면 후자가 10.0.22.3와 bit 한개 차이로 이긴다.

STEP 4

수신지 IP에 해당하는 라우팅 테이블 엔트리는 오른쪽 인터페이스로 최종 수신지에게 IP packet을 직접 전달할 수 있다. 하지만 Router 1은 수신지 IP(10.0.22.3)에 해당하는 MAC 주소를 알지 못한다. 따라서 오른쪽 인터페이스에서 ARP Request를 보내 PC3의 MAC 주소를 찾는다.

주의할 점: PC1 -> Router 1으로 frame이 도착하고 나면 L3 header는 버려진다. Router 1은 "새로 L3 header을 만든다". 그래서 src MAC: eee2로 바뀐것이다. 즉, hop을 거칠때마다 달라진다.

MAC 주소를 찾았으면 L2 protocol을 이용해 Router 1에서 PC3으로 frame을 쏴준다.

6.3.3 다른 서브넷 - 간접 전달 Routing

마지막으로 수신지 IP 주소가 라우터가 연결된 서브넷에 속하지 않는 경우를 알아보자.

PC1PC4에게 IP packet을 보내고 싶은 상황이다.

  1. PC1은 자신의 컴퓨터에 등록된 IP 주소와 서브넷 마스크와 수신지 IP 주소(10.0.33.2)를 비교해서 목적지가 자신의 서브넷에 있지 않다는 사실을 확인한다.

  2. 따라서 PC1은 자신의 컴퓨터에 기본으로 등록된 (같은 서브넷에 속하는)default gateway 라우터(Router 1)에게 IP packet을 전달해야한다. 하지만 Router 1의 MAC 주소를 모르기 때문에 ARP Request를 보내 Router 1의 MAC 주소(eee1)를 찾는다. 그리고 아래 사진처럼 Ethernet frame을 조립한다.

  3. PC1Router 1으로 frame을 보낸다. L3 header(MAC 주소)의 유일한 목적은 같은 서브넷에 있는 PC1 -> Router 1로 frame을 전달시키는 것이기 때문에, Router 1은 frame을 수신한 뒤 L3 헤더를 drop 시킨다.

  4. Router 1은 L2 헤더에서 최종 수신지 IP 주소(10.0.33.2)를 보고 라우팅 테이블에서 매칭되는 엔트리를 찾는다. 이 경우 Destinatnion IP: 10.0.33.x/24, Gateway: 10.0.22.2 엔트리다. 이 부분에서 이전 예제와 다르다. Gateway에 만약 직접 연결된 인터페이스(left, right)가 적혀 있었다면, 최종 수신지 IP 주소(10.0.33.2)를 직접 ARP request에 담아 MAC 주소를 찾은 뒤 바로 쏴버리면 되지만, 여기서는 gateway가 10.0.22.2 (Router 2)가 적혀있다. 즉, "L2 protocol로 직접 전달할수가 없으니 또 다시 10.0.22.2 IP 주소를 가지는 라우터로 전송하면 걔가 알아서 해주겠지"라는 뜻이다.

    • 여기서 명심해야 할 점은 Router 1Router 2같은 서브넷에 있다는 사실이다. 따라서 ARP를 통해 Router 2의 MAC 주소를 찾은 뒤 frame화 시켜서 L2 protocol을 이용해 전달해야 한다.
  5. Router 110.0.22.2 (Router 2) IP 주소로 ARP Request를 보내서 Router 2의 MAC 주소를 찾은 뒤, L3 header을 만들고 frame을 조립하여 전송한다. 여기서 주의해야 할 점은 라우터를 거칠때마다 L3 header는 새로 만들어진다는 점이다.

  6. Router 2는 frame을 받은 후 L3 header의 목적을 다했으니 drop시킨다. 그런 다음 IP packet의 수신지 IP 주소(10.0.33.2)를 보고 라우팅 테이블에서 매칭되는 엔트리를 찾는다. 이 경우 Destination IP: 10.0.33.x/24, Gateway: Right이 매칭된다. [6.2.2 같은 서브넷]과 똑같은 상황이다. 같은 서브넷에 연결되어 있으니까 IP packet의 최종 수신지 IP 주소(10.0.33.2)를 가지고 ARP Request를 보내서 최종 목적지인 PC4의 MAC 주소를 찾는다. 그 다음 L3 frame을 새로 조립한다.

  7. Router 2 -> PC4로 frame을 보낸다. 이제 PC1에서 PC4로 최종 전달된 것이다. L3 header의 유일한 목적은 Router 2 -> PC4로 전달하는 거였으니 PC4는 L3 frame을 drop 시킨다(decapsulation, 비캡슐화). 또한, L2 frame의 유일한 목적은 host-to-host 전달, 즉, PC1 -> PC4로 IP packet을 전달하는것이였다. 목적을 이뤘으므로 L2 header 역시 drop 시킨다. 아직 배우지는 않았지만 L4 header(TCP header) 역시 순차적으로 drop 시키고 최종 data를 추출한 뒤 적절한 연산을 수행한다.

이로써 먼 여정을 거쳐 PC1에서 PC4로 데이터가 최종 전달 되었다. 명심해야 할 점은 각 계층 헤더의 역할이다. IP packet이 전달되는 과정동안 L3 header(MAC 주소)은 라우터를 거칠때마다 바뀌었지만, L2 header(IP 주소)는 한번도 변하지 않았다는 사실을 기억하자.

L3 header의 목적: 같은 서브넷(LAN)에서 MAC 주소를 이용한 device-to-device 전달
L2 header의 목적: 다른 서브넷에서 IP 주소를 이용한 host-to-host 전달

일반적인 가정에서는, 우리가 사용하는 컴퓨터의 default gateway가 가정에 있는 브로드밴드 라우터로 되어있고, 브로드밴드 라우터의 default gateway는 KT 같은 ISP(인터넷 서비스 제공자)의 네트워크의 라우터로 되어있다. 따라서 ISP가 잘 설정해놓은 라우터 들을 경유하여 최종적으로 목적지로 도착하는 것이다.

7. AS(Autonomous System) & Routing Protocol(라우팅 프로토콜)


라우터가 IP packet의 수신지 IP 주소와 라우팅 테이블을 보고 매칭되는 엔트리를 찾아서 그 방향으로 패킷을 전달한다고 배웠다.

라우터의 인터페이스와 직접 연결된 서브넷인 경우 별 다른 작업없이 자동으로 등록된다. 하지만 다른 서브넷일 경우에는 별도로 라우팅 테이블을 채워줘야 한다. 여기에는 2가지 방법이 있다.

  1. Static Routing (정적 라우팅)
    • 네크워트 관리자가 직접 등록
  2. Dynamic Routing (동적 라우팅)
    • 수동 등록 없이 동적으로 라우팅 테이블 생성

이번 챕터에서는 동적 라우팅에 대해 알아보겠다. 참고로 이번 포스트에서는 가볍게 살펴보고 추후 별도의 포스팅에서 자세히 다뤄보도록 하겠다.

7.1 AS (Autonomous System)

인터넷은 수많은 라우터들이 서로 라우팅을 하며 이루어진다.

하지만 지금까지는 모두 동일한 라우터들로 이루어진 "평평한 네트워크"를 가정했었다. 하지만, 실제 네트워크는 수십억개의 라우터들로 이루어져있으며, 개인이 아닌 사업자(ISP)들이 라우터들을 니즈에 맞게 배치하며 자신만의 네트워크를 구축한다.

따라서 실제 네트워크에서는, 라우터들을 묶어서 Autonomous System(AS)라는 네트워크 단위로 관리된다. 또한, 각 AS는 하나의 정책에 따라 관리된다(ex. 동일한 라우팅 프로토콜). AS는 주로 기업, ISP, 연구 기관 등의 규모 있는 조직이 관리하며 AS 마다 고유 번호가 부여된다.

한국인터넷정보센터에 들어가보면 한국에서 관리되는 AS를 확인할 수 있다.

네트워크는 사실 라우터들의 집합보다, "AS의 집합" 혹은 "네트워크(AS)의 네트워크"으로 표현하는게 더 적절하다.

7.2 Intra-AS / Inter-AS Routing Protocol

라우터들은 동적으로 라우팅 정보를 서로 주고 받으면서 라우팅 테이블을 채워 나간다. 이를 라우팅 프로토콜이라고 한다. 라우팅 프로토콜은 같은 AS 내에서 이루어지는 라우팅 프로토콜AS 간의 라우팅 프로토콜로 구분할 수 있다.

  • Intra-AS Routing Protocol (IGP)
    • 같은 AS 내의 라우팅 프로토콜
    • IGP(Interior Gateway Protocol) 라고도 한다.
    • 대표적인 3가지
      • RIP
      • OSPF
      • EIGRP
  • Inter-AS Routing Protocol (EGP)
    • 다른 AS 사이의 라우팅 프로토콜
    • EGP(Exterior Gateway Protocol) 라고도 한다.
    • 1가지만 사용
      • BGP

AS 사이를 연결해주는 라우터를 gateway router이라고 한다. AS 내에서는 IGP 프로토콜을 이용해 내부 라우터들을 연결하고, AS 간에는 gateway router들이 서로 상호 작용하면서 EGP 프로토콜로 AS 들을 연결해준다.

라우팅 프로토콜은 크게 link state 라우팅으로 distance vector 라우팅으로 분류할 수 있다.

OSPF가 대표적인 link state 라우팅 알고리즘이다.

Link state 라우팅은 네트워크 전체의 topology를 알고 있는 상태에서 라우팅을 한다. 즉, 네트워크안의 라우터들이 어떻게 연결되어 있고 라우터에서 다른 라우터로 전송하는데 cost가 얼마나 드는지에 대한 글로벌 정보를 알고 있는 것이다.

어떻게 동작하는지 조금 더 자세히 알아보자.

  • 각 라우터는 자신과 연결되어 있는 라우터(neighbor)들의 정보(ex. 라우터 ID, cost)를 담은 LSP(Link State Packet)를 만들어 neighbor 라우터들에게 broadcast한다.
  • LSP를 받은 라우터는 방금 LSP를 전달 받은 라우터를 제외하고 모든 neighbor 라우터들에게 LSP를 복제해서 또 전송한다.
  • 이 작업을 반복하면 각 라우터가 네트워크 전체의 topology에 대해서 알 수 있다. 이 작업을 flooding이라고 한다.
  • 각 라우터는 네트워크 topology 정보를 이용해 최단 거리 알고리즘(다익스트라)을 수행해서 네트워크에 있는 모든 라우터들로 가는 길과 cost를 계산해서 라우팅 테이블을 만든다.

LSP에는 다음과 같은 정보들이 들어있다.

  1. LSP를 처음 만든 라우터의 ID
  2. Neighbor 라우터와 link cost의 리스트
  3. Sequence number(SEQNO)
  4. TTL(Time-to-live)

하지만 모든 라우터들이 LSP를 받는 족족 다른 모든 라우터들에게 복제를 해서 전달한다면, flooding의 효율성은 지수적으로 감소될것이다. 따라서 LSP를 브로드캐스트 할때 Reliable Controlled Flooding이라는 메커니즘을 사용한다.

Reliable Controlled Flooding에는 LSP에 있는 SEQNOTTL이 사용된다.

  • SEQNO
    • 라우터가 LSP를 만들때마다 새로운 SEQNO가 부여된다.
    • 라우터가 LSP를 받으면, SEQNO와 source router ID를 비교해서 예전에 이미 받은 LSP면 더 이상 flooding 하지 않고 파기한다.
  • TTL
    • LSP는 TTL 값을 가지고 있다. 이 값은 라우터를 거칠때마다 1씩 감소하며, 만약 TTL이 0이되면 flooding 하지 않고 파기한다.

지금까지 Link State 라우팅에 대해서 간략하게 알아보았다. Link state은 모든 라우터가 전체 네트워크에 대한 정보를 알고 있어야 하고 라우팅 테이블을 만들기 위해 다익스트라 알고리즘을 돌려야 하기 때문에 CPU와 메모리가 많이 소모 된다는 단점이 있다. 하지만 요즘의 CPU와 메모리 성능으로는 문제가 없다고는 한다.

link state 라우팅은 현재 네트워크 topology를 알기까지 수렴시간이 짧고 신뢰성이 높다는 장점이 있다.

7.4 Distance Vector 라우팅

Distance vector 라우팅 알고리즘은 Bellmand-Ford 최단 경로 알고리즘을 사용한다.

기본 개념은 간단하다. 먼저 Bellman-Ford 알고리즘을 알아보자.

Dx(y)=minv{cx,v+Dv(y)}, v is neighbor of xD_x(y) = min_v\{c_{x,v} + D_v(y)\}\text{, v is neighbor of x}

노드 x가 있고, x의 인접 노드 v1, v2, v3가 있다고 하자. 이때, x에서 y로 가는 최단 경로는,

  • x에서 v1의 거리(cx,v1c_{x,v1}) + v1에서 y로 최단 거리 (Dv1(y)D_{v1}(y))
  • x에서 v2의 거리(cx,v2c_{x,v2}) + v2에서 y로 최단 거리 (Dv2(y)D_{v2}(y))
  • x에서 v3의 거리(cx,v3c_{x,v3}) + v3에서 y로 최단 거리 (Dv3(y)D_{v3}(y))

중 최소값 이다.

각 노드(라우터)는 자신의 인접 노드까지의 distance를 저장하고 있는다. 이 자료 구조를 distance vector이라고 한다.

Distance vector 라우팅 알고리즘 동작 방식을 알아보자.

각 노드는 다음 작업을 반복한다.

  1. WAIT: Local link cost(인접 노드까지 cost) 혹은 인접 노드에서 새로운 distance vector이 올때까지 기다린다.
    • 각 노드는 인접 노드로의 cost는 알고 있다고 가정한다.
  2. RECOMPUTE: Distance vector을 새로 계산한다.
    • Dx(y)=minv{cx,v+Dv(y)}D_x(y) = min_v\{c_{x,v} + D_v(y)\}
  3. SEND NEW DV: 만약 distance vector가 업데이트 된다면, 업데이트 된 DV를 인접 노드에게 보낸다.

Distance vector 라우팅 알고리즘은 flooding이 동기적으로 동작하는 link state 알고리즘과 달리 비동기적으로 작동한다. 또한 라우터가 네트워크의 전체 topology에 대해 알고 있을 필요가 없고, 인접한 노드들의 cost만 아는 상태에서 서로 distance vector을 교환해가며 라우팅 테이블을 채워가는 분산 알고리즘이다. 반면, link state 알고리즘에 비해서 수렴하는데 시간이 더 많이 걸린다 (slow convergence).

Distsance vector 라우팅 알고리즘은 RIP, EIGRP 라우팅 알고리즘에 사용된다.

7.5 Intra-AS 라우팅 알고리즘 (IGP)

IGP에는 3가지 종류가 있다.

  • RIP (Routing Information Protocol)
    • Distance vector 라우팅 알고리즘
    • 메트릭: Hop 수
    • 라우팅 테이블 자체를 정기적으로 교환하며 라우팅 테이블을 만들어간다.
    • 대규모 네트워크 환경에는 어울리지 않으며 현재는 잘 사용되지 않는다.
  • OSPF
    • Link state 라우팅 알고리즘
    • 메트릭: 비용 (100 / 대역폭(Mbps))
    • 각 라우터가 link 상태나, 대역폭, IP 주소, 서브넷 마스크 등 다양한 정보를 교환하면서 LSDB(Link State Database)를 만들어나가고, 이것으로부터 최단 경로 연산을 수행해 라우팅 테이블을 만들어나간다.
    • 네트워크를 area들로 나누고, 같은 area의 라우터들끼리만 LSDB를 공유하도록 한다. 모든 area는 backbone에 연결되어 있다.
  • EIGRP
    • 하이브리드 (Distance vector 기반 + link state)
    • 메트릭: 대역폭, 지연

7.6 Inter-AS (EGP) - BGP

EGP는 AS와 AS을 연결할때 사용하는 라우팅 프로토콜이다. 현재는 BGP(Border Gateway Protocol) 한가지만이 사용된다. BGP는 "glue that holds the internet together"이라고도 불린다. 직역하면 "BGP는 인터넷을 연결하는 풀같은 존재"다. AS들 사이를 연결해주어 "네트워크의 네트워크"를 만드는 것이다.

BGP의 원리를 간단하게 풀어보면 다음과 같다.

  • AS는 다른 AS에게 "내가 목적지 X로 갈 수 있어요~ 그리고 여기 어떻게 가는지 그 길(path) 정보도 줄게요~"라고 reachability information을 광고(advertise)한다. Distance vector 알고리즘 처럼 서로서로 자신의 reachability information을 주고 받으면서 AS들을 연결한다.
  • AS끼리 reachability information 정보를 주고 받는 것을 eBGP라고 한다.
  • 다른 AS로부터 reachability information을 받으면, AS 내부에 있는 internal 라우터들에게 그 정보를 전파하는것을 iBGP라고 한다.

BGP 메세지를 주고받는 AS를 peer이라고 하며, TCP connection을 통해 통신한다.

7.6.1 BGP Path Advertisement

AS는 다른 AS에게 "내가 목적지 X로 가는 길(path)을 알려줄게요"라며 BGP 메세지를 보낸다. Path를 advertise한다고 해서 BGP는 path vector protocol이라고도 불린다.

이 path 정보에 무엇이 들어있는지 알아보자.

  • Path Prefix - Path의 최종 목적지 네트워크 주소(CIDR)
  • Attributes
    • AS-PATH - 최종 목적지로 가기위해 거쳐가야하는 모든 AS의 리스트
    • NEXT-HOP - 최종 목적지로 가기위해 거쳐야하는 바로 다음 router의 IP 주소이다.
      • 예를들어 AS1에 속한 router1이 X와 연결되어있고, AS2에 속한 router2가 있다고 하자. 이때, router 1이 router 2에게 X로 가는 path 정보를 담아 BGP 메세지를 보낸다면, NEXT-HOP은 router 1의 IP 주소가 될것이다.
    • etc...

출처: Computer Networking: a Top Down Approach

정리해보면, AS3이 X와 연결되어있으면, 3a2c에게 다음 정보를 BGP 메세지에 담아 eBGP를 통해 advertise 한다.

  • Path Prefix: X의 네트워크 주소
  • AS-PATH: AS3, X
  • NEXT-HOP: 3a의 IP 주소

2c는 iBGP를 통해 AS2내의 라우터들에게 전파한다.

2a는 eBGP를 통해 AS1의 1c라우터에게 advertise한다.

1d는 iBGP를 통해 AS1내의 라우터들에게 전파한다.

최종적으로 AS1와 AS2의 모든 라우터들은 X로 가는 route를 학습했고, 이를 라우팅 테이블에 잘 기록한다.

만약 X로 가는 다수의 route가 들어오면 다음 룰들을 반복하며 한가지 route를 선택한다.

  1. Highest Local Preference
    • Peer AS로 부터 route를 전달받을떄 정책에 따라 local preference가 부여된다. 그 다음 iBGP를 통해 local preference와 함께 BGP message가 전달된다.
  2. AS-PATH가 제일 짧은 route
  3. Hot potato routing을 통해 선택한다.
    • Hot potato routing은 intra-domain cost(AS 밖으로 나가는데 드는 AS 내부 cost)가 제일 작은 라우터를 선택하는 방식이다. 예를 들어, 2d2c를 통한 route가 hop수가 작더라도 당장 AS2를 탈출하기에는 2a를 거치는게 더 빠르니까 2a를 선택한다.

7.6.2 BGP - Policy-based Routing

BGP는 policy(정책)을 설정하여 AS가 원하는대로 네트워크 구성을 할 수 있다.

예를 들어, 어떤 ISP가 A와 B랑 연결되어 있는데 A는 고객이고 B는 경쟁사 ISP의 고객이다. 이 경우에, B와 연결되어 있다고 해서 이 정보를 eBGP를 통해 advertise 할 이유가 없을 것이다. 이렇게 정책에 따라 advertise할지 말지를 결정하고 또는 peer AS로 부터 전달받은 정보를 받아들일지 파기할지를 결정할 수 있다.

8. 마치며

이번 시간에는 네트워크 계층에 대해 자세히 알아보았다. 네트워크 계층은, 같은 서브넷 혹은 LAN 안에서 MAC 주소를 기반으로 device-to-device 전달을 담당하는 데이터 링크계층을 이용하여, "서로 다른 서브넷의 두 host를 연결"한다.

라우터라우팅 테이블 정보를 보고 IP packet을 적절한 방향으로 전달하여 최종 목적지로 전달한다. 또한, 라우터들은 AS라는 자율적인 sub-네트워크로 그룹화되며, 수많은 AS들이 모여서 인터넷을 만든다. AS내의 라우터들을 연결해주는 프로토콜이 IGP이고 대표적으로 RIP, OSPF, EIGRP가 있다. 한편, EGP(GRP)는 AS사이를 끈끈하게 이어주며 인터넷을 만들어간다.

다음 시간에는 transport layer(트랜스포트 계층)에 대해 알아보겠다.

profile
backend engineer

0개의 댓글