-> 블로그 이전

[Network] 네트워크 계층 (Network Layer)

2022. 1. 21. 19:21Major`/컴퓨터 네트워크

네트워크 계층 (Network Layer)

- 논리적인 주소(IP 주소)를 담당하고, 패킷의 전달 경로를 결정(라우팅)하는 역할

- Layer 4(Transport Layer)에서 만들어진 패킷을 전달 받아서, 목적지 컴퓨터의 논리적 주소(IP)를 Layer3의 헤더에 추가하는 역할

- 서로 다른 Network간의 통신을 가능하게 해주는 계층

  • 라우터"라는 장비를 통해서 다른 Network로 Data를 전송

"라우터"

  • Data의 목적지가 정해지면 해당 목적지까지의 최적의 경로를 설정해준다
  • "IP 주소"를 통해서 Network를 식별

 

Layer 2(Data Link) / Layer 3(Network)

Layer 2

- Ethernet 프로토콜을 기반으로 같은 Network(LAN)안에서 Data를 주고받는다

 

Layer 3

- IP (Internet Protocol)를 기반으로 서로 다른 Network간에 Data를 주고받는다

 


 

라우터 (Router)

- Network를 분리할 수 있다

- 거리와 상관없이 다른 Network로 Data(패킷)를 보낼 수 있다

- 라우팅 테이블(Routing Table)을 통해서 경로 정보를 등록하고 관리 

- 서로 다른 Network들에 대한 정보가 저장되어 있어야 한다

 

라우터 기능

▶ 경로 설정

- Data 패킷이 출발지 ~ 목적지까지 갈 수 있는 경로를 검사하고, 최적의 경로를 설정

▶ 스위칭

- 경로 설정이 결정될 경우, Data 패킷 스위칭 작업을 수행

 

패킷 스위칭

- 작은 블록의 패킷으로 Data를 전송해서, Data를 전송하는 동안만 Network 자원을 사용하도록 하는 방법

- 패킷은 데이터 연결 상의 모든 노드들 사이에 개별적으로 경로가 제어

▶ 장점

- 회선 이용률이 높다

- 고 신뢰성, 고품질, 고효율이다

▶ 단점

- 경로에서의 각 교환기에서 다소의 지연이 발생

- 패킷별 헤더 추가로 인한 오버헤드 발생 가능성

 


 

라우팅 (Routing)

- 서로 다른 Network간의 최적의 경로를 설정하고, Data를 보내는 기술

  • 이를 처리하는 장치 : 라우터(Router) 

라우팅 정보

토플로지

- Network 요소들을 물리적으로 연결하는 방식

 

트래픽 부하

- 특정 라우터에 트래픽이 많이 몰려있을 경우

  • 다른 라우터로 경로를 안내해서 Network의 성능 향상

 

링크 비용 (라우팅 메트릭)

- (거쳐가는 지점의 개수, 비용, 지연, 처리율)등과 같은 변수들을 참조해서 최적의 라우팅 경로 계산

 

메세지

- 라우터끼리 라우팅을 위해 주고 받는 정보들

 

라우팅 테이블

- 패킷이 목적지까지 가는 방법/거리 등을 저장하고 있는 테이블 (목적지까지의 경로)

- 시간에 따라 주기적으로 업데이트

- 라우팅 프로토콜을 통해 계산된 라우팅 정보들을 저장


라우팅 방식

정적/고정 라우팅

- 관리자가 일일이 경로를 입력

- 미리 정해진 루트를 따라 경로선택 (수동 경로 설정)

- 소규모 Network에 적합

▶ 장점

- 라우터의 부하를 경감

- 복잡한 계산이 필요 없기 때문에 빠른 라우팅 가능

▶ 단점

- 관리자가 관리해야 할 부분이 많아진다

- 정해진 루트 상 장애가 발생할 경우, Network 전체 이용에 장애 발생

 

동적/적응적 라우팅

- 라우터가 프로토콜에 의한 계산에 따라 스스로 라우팅 경로를 결정 

- 망의 상태에 따라 경로선택 (자동 경로 설정)

- 대규모 Network에 적합

 


 

IP (Internet Protocol)

- TCP 세그먼트에서 IP 헤더 붙여서 데이터그램을 생성

 

IP 헤더(데이터그램)

▶ 버전 (Version)

- IP프로토콜의 버전

  • IPv4 : 0100
  • IPv6 : 0110

- 버전이 올바르지 않을 경우, 해당 데이터그램은 폐기

 

▶ 헤더길이 (Header Length)

- 4byte 단위로 표현

- 최소 길이 = 20byte (실제 적재값 = 5) / 최대 길이 = 60byte (실제 적재값 = 15)

 

▶ 서비스 유형 (Type Of Service : Differentiated Services)

- 데이터그램이 어떻게 처리되어야 하는지를 정의

- QoS 제공을 위해 사용

  • Quality of Service : 전송율, 에러율, 서비스 품질, 우선순위,...

서로 다른 유형의 IP 데이터그램을 구별

  • 실시간 데이터그램(IP 통신 App) / 비실시간 트래픽(FTP)

 

▶ 전체 길이 (Total Length)

- 헤더와 데이터 길이를 합한 길이

- 최대값 = 216 - 1 = 65535

  • Data 길이 = 전체 길이 - 헤더 길이
  • 실제 Data와 Padding(의미없는 0)을 구분하기 위해 전체길이가 필요

 

▶ 식별자 (Identification)

- 데이터그램이 단편화되어 전송된 후, 재조립할 때 사용

  • 송신측에서 Data를 패킷단위로 나눠서 전송하면
  • 수신측에서는 해당 Data를 재조립해야 한다

- 식별자 필드는 중복 X : 유일해야 한다

- Counter를 이용해서 데이터그램을 보낼때 마다 Counter값을 1씩 증가

- 모든 단편화된 단편의 헤더에는 식별자 필드가 포함

 

▶ 플래그 (Flag)

- 데이터그램의 상태/진위를 나타내기 위한 변수 (D, M으로 구성) - Data(조각)의 상태

  • D : Do not Fragment >> 1이면 단편화 X, 0이면 단편화 O
  • M : More Fragment >> 1이면 단편이 더 존재, 0이면 마지막 단편

 

▶ 단편화 오프셋 (Fragment Offset)

- 전체 데이터그램에서, 단편에 포함된 Data(조각)의 시작 위치

- 8byte 단위로 표시

 

▶ 수명 (Time To Live)

- 데이터그램의 수명제한을 위해 사용

  • 송수신 과정에서 상위계층 프로토콜을 혼란시킬 수 있기 때문에, 오래된 데이터그램은 폐기

- 라우터가 데이터그램을 처리할 때마다 수명값은 1씩 감소

  • 0이 되면, 라우터에서 해당 데이터그램 폐기

 

▶ 프로토콜 (Protocol)

- 데이터그램을 처리한 후, 전달될 상위프로토콜을 표시

  • 6 : Data 부분을 TCP로 전달
  • 17 : Data 부분을 UDP로 전달

 

▶ 체크섬 (Checksum)

- IP 헤더에 대한 에러 검출

  • IP는 헤더에 대한 에러 검출만 수행
  • Data 필드에 대한 에러 검출은 상위 계층에서 수행

- 에러가 검출된 데이터그램은 폐기

 

 

※ Example) IP 헤더 체크섬 구하기

  • IP헤더의 모든 값들을 2byte씩 더해준다 (체크섬 부분은 0으로 설정해주고 더하기)
  • 더한값에 1의 보수를 취하면 IP헤더의 체크섬 값이 추출된다

1) IP헤더 2byte씩 더하기

4500 0028 41E1 4000 8006 0000 C0A8 00A4 0E00 71D0
4500 >> 0100 0101 0000 0000
0028 >> 0000 0000 0010 1000
:: 4528 >> 0100 0101 0010 1000 - result
4528 >> 0100 0101 0010 1000
41E1 >> 0100 0001 1110 0001
:: 8709 >> 1000 0111 0000 1001 - result
8709 >> 1000 0111 0000 1001
4000 >> 0100 0000 0000 0000
:: C709 >> 1100 0111 0000 1001 - result
C709 >> 1100 0111 0000 1001
8006 >> 1000 0000 0000 0110
:: 1470F >> 1 0100 0111 0000 1111 - (carry)
1470F >> 1 0100 0111 0000 1111
4710 >> 0100 0111 0001 0000 - result (wrapped around)
4710 >> 0100 0111 0001 0000
C0A8 >> 1100 0000 0100 1000
:: 107B8 >> 1 0000 0111 1011 1000 - (carry)
107B8 >> 1 0000 0111 1011 1000
07B9 >> 0000 0111 1011 1001 - result (wrapped around)
07B9 >> 0000 0111 1011 1001
00A4 >> 0000 0000 1010 0100
:: 085D >> 0000 1000 0101 1101 - result
085D >> 0000 1000 0101 1101
0E00 >> 0000 1110 0000 0000
:: 165D >> 0001 0110 0101 1101 - result
165D >> 0001 0110 0101 1101
71D0 >> 0111 0001 1101 0000
:: 882D >> 1000 1000 0010 1101 - final result

 

2) 더한값에 1의보수 취하기 (:: 최종 체크섬 값)

882D >> 1000 1000 0010 1101
1의 보수 취하기
0111 0111 1101 0010 >> 77D2

  • 체크섬 값이 올바르게 구해졌다

 

▶ 출발지 IP 주소 (Source IP Address)

- 송신자의 IP 주소

 

▶ 목적지 IP 주소 (Destination IP Address)

- 수신자의 IP 주소

 

▶ 옵션

- 필요한 경우에만 사용

- 최대 길이 = 40byte

- IP 헤더 길이가 4byte의 배수가 되지 않는 경우, 남는 공간을 Padding한다 (0으로 채운다)

 

▶ 데이터

- 상위 계층의 데이터 (Layer 4 ~ 7)를 전달

- 대부분의 경우 목적지에 전달하기 위해 Layer 4 세그먼트(TCP, UDP)를 포함

- ICMP 메시지와 같은 다른 유형의 Data 또한 담는다


IP 주소 (IP Address)

- LAN에서는 MAC 주소만으로 통신이 가능, but 다른 Network로는 Data 전송 불가능

  • MAC주소가 아닌 서로 다른 Network를 식별할 수 있는 주소 : IP주소 

- ISP로부터 제공받을 수 있다

- IPv4, IPv6가 존재

 

IPv4 / IPv6

▶ IPv4

- 32비트 : 약 43억 개 생성 가능

- 32비트를 8비트 단위로 4개씩 나눈다 / 각 블록은 10진수로 표기 / 점(.)으로 구분

  • ex) 192.168.0.1

 

▶ IPv6

- 처음에는 IPv4만 존재했는데, Network가 보급됨에 따라 주소가 부족해져서 IPv6를 도입

- 128비트 : 43억 * 43억 * 43억 * 43억개 : 사실상 무한대

- 128비트를 16비트 단위로 8개씩 나눈다 / 각 블록은 4자리의 16진수로 표기 / 콜론(;)으로 구분

  • ex) 2001:0230:aaaa:ffff:0000:0000:ffff:1111

 

IP 주소 클래스

- 각 클래스별로 네트워크 ID / 호스트 ID로 나눠져 있다

  • 네트워크 ID : 어떤 네트워크인지
  • 호스트 ID : 해당 네트워크의 어떤 컴퓨터인지
클래스 이름 내용 네트워크 ID : 호스트 ID
A 클래스 대규모 네트워크 주소 8비트 : 24비트
B 클래스 중형 네트워크 주소 16비트 : 16비트
C 클래스 소규모 네트워크 주소 24비트 : 8비트
일반 네트워크에서는 A ~ C 클래스까지 사용 가능
D 클래스 멀티캐스트(MultiCast) 주소
E 클래스 연구/특수용도 주소

 

▶ A ~ C 클래스 공인/사설 IP 범위

  • 사설 IP는 절대로 공인 IP 주소로 사용할 수 없다 
클래스 공인 IP 범위 사설 IP 범위 최대
호스트 수
A - 1.0.0.0 ~ 9.255.255.255
- 11.0.0.0 ~ 126.255.255.255
10.0.0.0 ~ 10.255.255.255 16777214
B - 128.0.0.0 ~ 172.15.255.255
- 172.32.0.0 ~ 191.255.255.255
172.16.0.0 ~ 172.31.255.255 65534
C - 192.0.0.0 ~ 192.167.255.255
- 192.169.0.0 ~ 223.225.255.255
192.168.0.0 ~ 192.168.255.255 254

 

IP 주소 구분 1) 공인 IP - 사설 IP

- 둘다 2진수의 32비트를 사용한다 (IPv4의 경우)

▶ 공인 IP 주소 (Public IP)

- 인터넷에 직접 연결되는 컴퓨터/라우터에 할당

- 인터넷 상에서 사용할 수 있는 IP주소

- 전세계에서 유일한 IP 주소

- 외부에 공개되어 있기 때문에 인터넷에 연결된 다른 PC로부터의 접근이 가능

  • 방화벽 등의 보안 프로그램이 필요

 

▶ 사설 IP 주소 (Private IP)

- IPv4의 주소가 부족해지면서 해결을 위해 사설(Private) IP영역을 만들어서 IP주소를 중복 사용할 수 있게 하였다

- LAN에 존재하는 컴퓨터에 할당

- 내부 네트워크 (ex - 공유기 내부 네트워크) 상에서만 사용할 수 있고, 인터넷상에서는 사용 X 

 

▶ 할당 과정

  1. ISP가 제공하는 공인 IP 주소라우터에만 할당
  2. LAN 안에 있는 컴퓨터에는 (1) LAN의 네트워크 관리자가 자유롭게 사설 IP 주소 할당 (정적 라우팅) or (2) 라우터의 DHCP 기능을 사용해서 주소를 자동 할당 (동적 라우팅)

 

※ DHCP (Dynamic Host Configuration Protocol)

- IP주소, 게이트웨이,... 등 각종 네트워크 정보를 자동으로 할당해주는 프로토콜

▶ 장점

- PC의 수가 많거나, 변동사항이 많을 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능

- IP 충돌을 막을 수 있다

▶ 단점

- DHCP 서버에 의존되기 때문에 서버가 다운되면 IP 할당이 제대로 이루어지지 않는다

실제 IP 주소(32비트) : 11000000 | 10101000 | 00000001 | 00001010
10진수로 변환 (옥텟(8비트) 단위로 끊기) : 192.168.1.10

>> 옥텟별로 0 ~ 255(10진수) | 00000000 ~ 11111111(2진수) 범위 가능

 

 

IP 주소 구분 2) 네트워크 주소 - 브로드캐스트 주소

- 두 주소는 특별한 주소이고, 컴퓨터/라우터가 자신의 IP로 절대로 사용하면 안되는 주소이다

 

▶ 네트워크 주소

- 해당 네트워크의 대표 주소 

- 호스트 ID가 10진수로 0

▶ 브로드캐스트 주소

- 네트워크에 있는 모든 컴퓨터한테 데이터를 전송하는 데 사용하는 전용 IP 주소 

- 브로드캐스트 주소로 전송된 데이터네트워크 안에 있는 모든 컴퓨터로 송신된다

- 호스트 ID가 10진수로 255

 


 

서브넷 (Subnet)

- 많은 수의 컴퓨터가 브로드캐스트 패킷을 전송하면 모든 컴퓨터에 패킷이 전송되고 Network가 혼잡 

- 대규모 Network → 소규모 Network로 분할 :  브로드캐스트로 전송되는 패킷의 범위가 좁아진다

  • Network 분할하는 것 : 서브넷팅 (Subneting) 
  • 분활된 Network : 서브넷 (Subnet) 

 

서브넷 마스크 (Subnet Mask)

- IP 주소에서 어디까지가 네트워크 ID인지 알려주는 역할

  • 네트워크 부분 비트 = 1 / 호스트 부분 비트 = 0
  • prefix 표기법에 의해서, 네트워크 부분의 비트 길이가 얼마인지 표현해주면 된다
  • 255.255.255.0 Subnet Mask : prefix = /24

- 서브넷팅을 통해서 (네트워크 ID : 호스트 ID)가 (네트워크 ID : 서브넷 ID : 호스트 ID)로 변경된다

- IP주소에 서브넷 마스크를 AND 연산하면 네트워크 주소/브로드캐스트 주소를 구할 수 있다

  • 호스트 비트 0으로 채우기 : 네트워크 주소
  • 호스트 비트 1로 채우기 : 브로드캐스트 주소

>> 서브넷 마스크 bit개수 n개 늘리기 -> 클래스가 2n개의 서브넷으로 나뉘어진다

 

각 IP 클래스들의 기본 서브넷 (Default Subnet) - (A ~ C 클래스)

클래스 이진 표현 십진표현
A 00000000 . 00000000 . 00000000 . 00000000
~
01111111 . 11111111 . 11111111 . 11111111
0.0.0.0 ~ 127.255.255.255
서브넷 마스크 : 255.0.0.0
B 10000000 . 00000000 . 00000000 . 00000000
~
10111111 . 11111111 . 11111111 . 11111111
128.0.0.0 ~ 191.255.255.255
서브넷 마스크 : 255.255.0.0
C 11000000 . 00000000 . 00000000 . 00000000
~
11011111 . 11111111 . 11111111 . 11111111
192.0.0.0 ~ 223.255.255.255
서브넷 마스크 : 255.255.255.0

※ Example)

192.168.4.100/26

  1. 192.168.4.100/26 비트화
    -> 11000000 10101000 00000100 01100100
  2. /26 이니까 서브넷 마스크 비트화
    -> 11111111 11111111 11111111 11000000
  3. IP주소와 서브넷 마스크 AND 연산 : 네트워크 주소
    -> 11000000 10101000 00000100 01 / 호스트 부분은 남은 6비트
  4. 네트워크 주소 : 호스트 부분을 0으로 채움
    -> 11000000 10101000 00000100 01000000 : 192.168.4.64
  5. 브로드캐스트 주소 : 호스트 부분을 1로 채움
    -> 11000000 10101000 00000100 01111111 : 192.168.4.127
  6. 네트워크 주소 ~ 브로드캐스트 주소 사이에 있는 IP 주소들 = 호스트에게 할당 가능한 주소
    -> 192.168.4.65 ~ 192.168.4.126
  7. 호스트 비트가 6bit
    -> 호스트 개수 = 26-2 = 62개

서브네팅 연습문제

 

subnettingquestions.com - Free Subnetting Questions and Answers Randomly Generated Online

Question: What is the broadcast address of the network 172.27.103.0/26?

subnettingquestions.com


기본 게이트웨이 (Default Gateway)

- 다른 Network로 Data를 전송하려고 할 때, 라우터의 IP주소를 설정하는 것

- 자신의 소속 Network 이외의 Network로 패킷을 보내려고 할때, 어디로 보내야 할지 정보를 갖고 있지 않을 때 기본 목적지 >> '보낼 곳을 모를 때 우선 전송해두는 곳' 

- 보통, 네트워크 관리자들은 IP범위의 시작 주소기본 게이트웨이로 사용해서 컴퓨터의 라우팅 기능을 구성

  • 모든 클라이언트가 해당 IP 주소를 가리키도록 한다

- 기본 게이트웨이를 사용함으로써 서로 다른 Network상에 존재하는 컴퓨터끼리 통신이 된다

- 게이트웨이가 없으면 Network는 외부와 격리 (세상과 단절)

- 호스트가 외부의 호스트에 도달하려면 반드시 게이트웨이를 거쳐야 한다