✍️ L3 Network (네트워크 계층)
👉 End to End Delivery (또는 Host to Host Communication)
👉 End 노드(종단 노드) 간의 라우팅을 담당하는 계층
👉 라우팅이란, 라우팅 알고리즘(프로토콜)에 의해 목적지로 전송하기 우한 최적의 경로를 설정하고 패킷을 교환(중계, Forwarding)하는 기능
👉 최종 목적지 노드를 찾기 위해서는 노드에 대한 논리적인 주소가 필요한데, 이 역할을 IP 주소가 한다.
(앞서 L4 계층에서의 주소는 Port 번호라고 한다.)
👉 PDU(Packet Data Unit)은 Packet(패킷)
PDU (Packet Data Unit)란, 프로토콜 데이터 단위의 약자로 각 계층에서 처리하는 데이터 단위를 말한다.
상위 계층에서는 데이터, L4 Transport에서는 세그먼트/ 데이터그램 L3 Network에서는 패킷, L2 DataLink에서는 프레임, L1에서는 비트라고 한다.
✍️ IP (Internet Protocol)
옛날에는 CBN 방식으로 인터넷을 했다. 응답하라 1997만 봐도 성시원이 인터넷으로 채팅할 때, 인터넷을 사용하면 전화를 쓰지 못했다. 이렇듯 전화선을 가지고 인터넷을 하다보니, 비효율적이었다. (전화는 쉴틈 없이 한다해도 채팅은 그렇지도 않고..) 따라서 다른 통신 방식이 필요했다.
📌 탄생배경 : PBN을 위해 만들어짐
CBN의 최대 단점 : 자원의 낭비, Connection된 Link가 끊어지면 통신불량
👉 PBN 탄생 : Route가 끊길 때 좀 돌아가더라도 도착할 수 있게 만듦
여기서 “IP 탄생” 어떻게 해서든 IP 주소를 보고 Destination에 도착!
CBN (Circuit Based Network) | PBN (Packet Based Network) |
Connection-Oriented 자원 점유 방식 → 자원낭비 Signalling 필요 : SS7 Connection이 끊기면 통신불가 ex 전화 |
Connectionless 자원 공유 방식 Signalling 필요 x Source에서 Destination까지 무조건 데이터 전송 ex 인터넷 |
✏️ IP의 특징
❶ 데이터그램(Datagram)
❷ 비신뢰성 : 목적지에 성공적으로 도달하는 것을 보장하지 않음 ∵TCP로 보장
❸ 비연결형
❹ 경로설정 : Router
✏️ IP 주소
❶ 컴퓨터의 주소 (인터넷에 연결된 기기를 식별하는 유일한 번호)
❷ 32 bit
❸ IP 주소 Class
📌 A Class (0~127) : 국가 이상의 큰 통신망에 사용
📌 B Class (128~191) : 학교 등 중대규모 통신망에 사용
📌 C Class(192~223) : 소규모 회사나 ISP업체의 통신망에 사용
(IP배정할 때 가장 많이 사용)
📌 D Class : 멀티캐스트 시에만 특수 사용
📌 E Class : 자원확보를 위한 예비용, 연구용, 테스트용으로 존재 ( 사용되지x)
❹ 서브넷 마스크
👉 목적 : IP 주소 고갈 방지 대책. 네트워크 구분 및 IP 주소 개수 측정
👉 특징: 맨 앞에 비트부터 ‘1’이 연속되어야 한다.
‘1’ : 네트워크 아이디 , ‘0’: 호스트 아이디 ( ↔ 와일드 마스크 )
예를 들면,
IP | Subnet Mask | Network ID | Host ID | IP주소개수 |
121.160.13.45 | 255.255.255.0 | 121.160.13 | .45 | 2^8개 |
255.255.0.0 | 121.160 | .13.45 | 2^16개 | |
255.0.0.0 | 121 | .160.13.45 | 2^24개 |
✏️ IP주소 부족 문제 해결 방법
📌 DHCP (Dynamic Host Configuration Protocol)
: PC의 전원이 켜지면서 네트워크상에 브로드캐스트를 날린다. 그럼 DHCP서버는 그 요청을 듣고 클라이언트 PC에게 자신이 관리하는 IP 주소 중 하나를 배분한다. 이렇게 함으로써 사용하지 않은 PC에게 IP주소를 줄 필요가 사라져 IP주소를 효율적이게 사용하여 IP주소부족 문제를 해결하고 있다.
📌 NAT (Network Address Translation)
: 사설 IP주소를 공인 IP주소로 바꿔주는데 사용하는 통신망의 주소 변환기이다. 인터넷의 공인 IP주소는 한정되어 있기 때문에 가급적 이를 공유할 수 있도록 하는 것이필요한데 NAT를 이용하면 사설 IP주소를 사용하면서 이를 공인 IP주소와 상호변환할 수 있도록 하여 공인 IP주소를 다수가 함께 사용할 수 있도록 함으로써 이를 절약할 수 있는 것이다.
📌신주소 도입-IPv6
: IPv4는 32비트로 2^32개 즉 약 43억개의 주소가 이용 가능한 반면, IPv6는 128비트로 2^128개로 거의 무한대의 (43억x43억x43억x43억 개) 주소 할당이 가능하여 IP주소부족 문제를 해결할 수 있다.
✏️ IPv6
- 128비트 (IPv4는 32비트)
- 옵션이 기본 헤더로부터 분리되고, 필요할 때 기본 헤더와 상위 계층 데이터 사이에
새로운 확장 헤더를 삽입하여 사용
- IPv4보다 라우팅이 더 빠르다.
📌 IPv6 주소: 4개의 16진수 단위를 8개 사용한다.
- ABCD:BC34:0004:2350:AAFF:0000:1234:5678 ☞ 콜론으로 구분한다.
- ABCD:BC34:4:2350:AAFF:0:1234:5678 ☞ 앞 쪽의 0은 생략 가능하다.
- ABCD:BC34:4:2350:AAFF::1234:5678 ☞ 0으로만 구성된 섹션은 0을 모두 생략하고
두 개의 콜론으로 대체할 수 있으며, 주소당 한 번만 허용된다.
📌 IPv6 헤더
- 기본 헤더의 길이는 40바이트로 고정된다.
- 우선순위: 동시 접속에 대한 패킷의 우선순위를 정한다.
- 흐름 레이블: 데이터의 특정 흐름을 다룬다.
- 페이로드 길이; 기본 헤더를 제외한 IP 데이터그램의 전체 길이를 규정한다.
- 홉 제한: IPv4의 TTL과 같은 목적으로 사용된다.
☞IPv4에 구성 요소가 줄었다. (checksum 없어짐)
📌 IPv4에서 IPv6로의 천이전략
:천이는 IPv4와 IPv6 시스템이 공존하고 있을 때 발생되는 문제를 방지하면서 점차적으로 이루어져야 한다.
이중스택 (dual stack)
인터넷의 모든 시스템이 IPv6를 사용할 때 까지, IPv4와 IPv6를 동시에 사용해야한다.
패킷을 수신측으로 보낼 때 버전을 결정하기 위해 송신측에서 DNS로 질의한다.
DNS가 IPv4 주소를 응답하면 송신측은 IPv4 패킷을 보내고 IPv6 주소를 응답하면 송신측은 IPv6 패킷을 보낸다.
터널링 (tunneling)
IPv6를 사용하는 컴퓨터들이 통신하기 위해 IPv4를 사용하는 네트워크 영역을 통과해야 할 때 사용한다. - Mobile IP에서 자세히 다룸
이 영역을 통과하기 위해서는 패킷이 IPv4의 주소를 가져야 한다.
IPv6 패킷은 IPv4를 사용하는 네트워크 영역을 통과할 때 IPv4 패킷 내에 캡슐화 되고, 영역을 통과한 다음 역캡슐화한다.
헤더 변환 (header translation)
대부분의 인터넷이 IPv6를 사용하지만 일부 시스템이 IPv4를 사용하는 경우에 필요하다.
송신측에서 IPv6를 사용하길 원하지만 수신측에서 IPv6를 이해하지 못하는 경우, 패킷이 수신측에서 이해할 수 있는 IPv4 형식으로 헤더 형식이 변해야만 한다.
✍️ ARP (Address Resolution Protocol)
👉 네트워크 환경에서 임의의 호스트가 다른 호스트의 데이터를 전송하려면 수신 호스트의 IP 주소뿐만 아니라, MAC 주소도 알아야 한다. 수신 호스트의 IP주소는 보통 응용프로그램 사용자가 프로그램을 실행하는 과정에서 직접 입력하므로, IP주소로부터 수신 호스트 MAC 주소를 얻는 기능을 ARP라고 한다.
👉 동작과정 (와이어샤크)
❶ Host A가 Host B의 MAC 주소를 얻으려면 ARP Request 라는 패킷을 브로드 캐스트
❷ ARP Request 패킷을 네트워크의 모든 호스트가 수신하지만, 관계없는 호스트는 패킷을 무시하고 Host B만 IP주소가 자신의 IP 주소와 동일함을 인지하여 ARP Reply 패킷을 사용해 자신의 MAC 주소를 호스트 A에 회신함.
👉 ARP Table
: 데이터를 전송할 때 마다 ARP를 사용하여 패킷을 브로드캐스트 하면 네트워크 트래픽이 증가함. 따라서 ARP를 사용하는 Host에서는 가장 최근 얻은 IP 주소와 MAC 주소 매핑 값을 보관하는 캐시 정보를 이용하여 ARP 트래픽에 의한 네트워크 부화를 최소화 함
👉 RARP
: ARP와 반대로 MAC 주소를 이용해 IP주소를 제공한다.
✍️ Router
각 Router마다
❶ 목적지 IP주소를 확인
❷ Routing Table에서 찾음(Look up) → (있으면) Packet Forwarding
❸ Table에 없으면 → Routing 알고리즘 → Table 저장 → Packet Forwarding
❹길을 찾지 못하면 → 정해둔 Default Route( Default Route 15번정도 돌면 패킷 자체를 삭제 : Delay, Loss )
(또는, TTL(Time to Live) 혹은 hop Count가 0이 되면 패킷을 폐기한다. )
QoS(Quality of Service) : Delay, Loss됨에 따라 서비스 품질은 보장하지 않는다.
위 그림에서 ①이 Forwarding 하기 전까지 ②는 대기 - Delay
만약 Queue가 꽉 찼는데 ②가 들어오면 - Loss
(Queue : Cache랑 비슷한 개념으로, 각 라우터에서 일시적으로 저장하는 방식)
✏️ Routing 테이블
📌 Gateway of last resort is not set
: 라우팅 테이블에 등록된 기본 경로 유무를 알려줌 (현재는 등록된 기본 경로 없음)
📌13.0.0.0/8 is is variably subnetted 6 subnets 2 masks
13.0.0.0/8 로 시작하는 A 클래스 중에 서브넷팅 된 경로가 6개 있고, 서브넷 마스크 종류가 2개
📌 Codes : 라우팅 테이블에 등록될 경로 유형 표기(사용할 수 있는 모드)
C connected : 연결됨 - 인터페이스를 통해 실제로 라우팅 되는 네트워크 대역 (물리적으로 직접 연겨뢰어 있는 네트워크)
S static : 경로를 정적으로 설정 (고정)
L local : 라우터 자기 자신을 의미
📌 13.13.10.0/24 : 목적지 네트워크
📌 [1/ : 정적경로의 신뢰도 (0~255)
0] : 메트릭
👉 신뢰도 : 라우터가 라우팅 테이블을 등록할 경로의 신뢰도를 의미하며, 숫자가 낮을수록 신뢰도가 높다. (동적경로를 할 때 라우터는 신뢰도가 높은 순으로)
Conneceted 0 : 신뢰도가 가장 높다. (인터페이스에 제일 근접하게 연결)
Static 1
EIGRP 90
OSPF 110
RIP 120
EIGRP, OSPF, RIP는 라우팅 알고리즘으로 아래에서 알아볼 예정이다!
❷ R 13.13.30.0 [120/5] via 13.13.14.4 se1/1
위 두개의 경로가 있을 경우 1번 경로가 선출된다 ∵ 매트릭의 값이 2<5 이기 때문에
📌 via : 경유하는 next-hop 라우터 표시
📌 13.13.23.1 : next-hop IP 주소
📌 is directly connected. Serial0/0/0 : 직접 연결된 Connected 경로를 의미하며, 패킷을 인터페이스로 바로 출력
✏️ Routing 알고리즘
📌 정적 경로 (Static Route)
- 관리자가 목적지 네트워크 정보, next-hop 정보를 파악하여 설정하는 방식
- 규모가 큰 것은 관리하기 불편하다.
👉 장점
신뢰적이다.
👉 단점
수동 설정이기 때문에 설정 내용이 많다.
네트워크를 운영하던 도중에 어떠한 라우터에 문제가 발생될 경우 라우터는 해당 정보에 관하여 자동으로 인지하지 못하기에 토폴로지 변화에 대응할 수 없다.
👉 설정방법
R1(config)#ip route 13.13.30.0 255.255.255.0 13.13.12.2
ip route : IP 경로를 정적으로 설정한다.
13.13.30.0 : 목적지 네트워크 이름
255.255.255.0 : 목적지 네트워크의 서브넷 마스크
13.13.12.2 :넥스트 홉/게이트웨이 (인터페이스를 지정해도 된다.)
📌 RIP (Routing Information Protocol)
- 거리 벡터 라우팅 프로토콜 : Hop Count 사용 (라우터 개수가 제일 작은 길로)
- 두가지 버전 (v1: classful, c2: classless)
- 매 30초마다 Routing Update 보냄 (정보 업데이트 시 UDP 포트 520번 사용)
- 나한테 연결된 Ethernet이랑 Serial Port만 RIP로 설정하면 자기들끼리 라우팅 정보를 광고하여 업데이트한다.
👉 장점
인터넷 표준 프로토콜로 모든 벤더(vender)에서 지원
간단하게 구현 및 운영 가능
전원이나 메모리 등 시스템 자원의 소모가 적음
👉 단점
지원하는 최대 Hop Count가 15개로 16개부터는 전송 불가 ∴ 대규모 네트워크에는 부적합
경로 선택이 Hop Cout 뿐이므로 최적 경로를 선택할 수 없음 ex) 경로 2개 중 1개는 라우터 하나 거치는 대신 대역폭 200메가, 나머지 1개는 라우터 여러개 거치더라도 대역폭이 10000맥일 경우 후자가 더 빠르지만 RIP는 라우터 대수가 적은 전자 경로로 보낸다.
Distance Vector (거리벡터)알고리즘으로 인해 링크 상태에 대한 변화가 느림
서브넷 정보를 처리하지 못함 (version2로 개선됨)
👉 설정방법
R1(config)# router rip
R1(config-router)# network A.0.0.0 (/ B.B.0.0 / C.C.C.0 )
- Classfull Routing Protocol
: 네트워크를 클래스로 처리하며, 라우팅 업데이트시 서브넷 마스크가 포함x
즉, 13.13.10.1/24 랑 13.13.11.1/24 는 같은 Class로 정보를 주고받지 않는다
∴ 자원을 많이 차지
(하지만 RIPv2로
R1(config)# router rip
R1(config-router)# version 2
R1(config-router)# no auto-summary 하면 서브넷 마스크가 적용된다.)
📌 EIGRP (Enhanced Interior Gateway Routing Protocol)
- Cisco 전용 라우팅 프로토콜
- Advanced Distance Vector
- no auto-summary
- IGRP
EIGRP 설정 * AS = Autonomous System
Router(config)# router eigrp [ 1~65535 AS Number ] // Number 같지 않으면 통신할 수 없음
Router(config-router)#no auto-summary
Router(config-router)#network A.0.0.0
Router(config-router)#network B.B.0.0
Router(config-router)#network C.C.C.0
- AS 번호가 동일해야지만, 네이버 성립 및 라우팅 업데이트 가능 ( 네이버 = Neighbor )
네이버 성립 및 라우팅 업데이트
- 네이버 성립 -> 라우팅 업데이트 실시
- 주기적인 라우팅 업데이트 x, 추가된 부분만 업데이트 실시
- 업데이트된 정보만 보냄 ( 자동 트리거 )
- Hello 인사 주고 받다가 Update 내용만 보냄 반드시 Ack 받았던 표시를 보냄
( Ack 안받으면 받을 때 까지 기다림)
- 장애 발생시 (R1)
1) R1이 Query 보냄
2) R2가 ACK ,Reply( 내가 아는 경로 있는데 이 경로 가봐 )
3) R1이 ACK ( 알았엉)
EIGRP 패킷 유형
- Hello : 네이버 관계 성립하기 위해서 교환하는 패킷, 주기적인 교환으로 네이버 관계
유지
- Update : 네이버 관계를 성립한 라우터간에 라우팅 업데이트를 실시할 때 사용
- Query : EIGRP 네트워크 장애시, 네이버 라우터에게 도달 불가능한 정보 및 대체 경
로를 질의
- Reply : Query 패킷에 대한 응답할 때 사용
- Ack : Update, Query, Reply 수신을 확인하기 위해 사용
만약 Update, Query, Reply 패킷에 대한 ACK 패킷을 수신하지 못하면,
수신할 때 까지 최대 16번 재전송 실시, 이후에도 수신하지 못하면 네이버 관계를 해지
네이버 성립 조건
- AS 번호 동일 ( Routing Protocol is "eigrp 100" )
- k상수가 동일 ( k1 = 1, k2 = 0, k3 = 1, k4 = 0, k5 = 0 )
- 확인방법: R1# show ip protocols
EIGRP 동작 과정
📌 OSPF( Open Shortest Path First ) : 최단 거리가 제일 좋다
- Classless Router Protocol ( auto-summary x )
- Ling-State 알고리즘
* 거리벡터 알고리즘 vs 링크상태 알고리즘?
거리벡터 알고리즘: 라우터 간에만 알 수 있음 내 이웃 라우터를 지나가면 알 수 없음
링크상태 알고리즘: 목적지라우터까지 알 수 있음
- 메트릭 : Cost (Bandwidth) // 경로를 구하는 기준
* RIP : Hop Count , EIGRP : (Bandwidth + Delay ) x 256
- 네이버 성립 -> 네이버 라우터 간에 라우팅 업데이트 실시
* Hello 후 Update
- 주기적인 업데이트 x
- 링크정보를 관리하는 LSDB 운영
- 균등 로드분산 지원: 최적 경로, 후속 경로
- 224.0.0.5 224.0.0.6 멀티 캐스트 주소 사용 ( RIP 0.9 EIGRP 0.10 )
OSPF 설정
Router(config)# router ospf [ 1 ~ 65535 Process-ID ]
Router(config-router)# router-id x.x.x.x // IPv4 형식의 ID를 줘야함
Router(config-router)#network [로컬 네트워크] [와일드 마스크] area [area 주소]
?와일드 마스크 : 서브넷 마스크보다 더 섬세하게 범위를 잡을 수 있음
서브넷 마스크 와일드 마스크
255.255.255.0 0.0.0.255
255.255.0.0 0.0.255.255
?area 주소; area 0 - backbone area에 붙어있어야 통신이 가능
라우터 아이디
1) 물리적인 인터페이스만 있을 경우: P 주소가 가장 높은 IP 주소로 선출
Ex ) F0/0 : 13.13.10.1
S1/0 : 13.13.12.1 <-- 라우터 아이디 선출
* Down 상태인 인터페이스 IP주소로는 선출하지 않는다.
2) 루프백 인터페이스가 있을 경우: LoopBck 중에 IP주소가 가장 높은 주소로 선출
Ex ) F0/0 : 13.13.10.1
S1/0 : 13.13.12.1
Lo 172 : 172.16.1.1 <-- 라우터 아이디 선출
3) router-id 명령어를 이용할 경우: router-id 1.1.1.1 ( 실제로 이것을 많이 사용 )
OSPF 동작 과정
✍️ 네트워크 토폴로지 (Network Topology)
✏️ 버스 토폴로지
- 공통의 공유된 케이블에 연결된 장치
: 버스라는 공통 배선에 각 노드가 연결된 형태로 노드의 신호가 테이블 전체에 전달됨
📌 장점
가장 간단하며 단일 케이블에 의해 네트워크의 모든 컴퓨터 연결
노트의 추가 및 삭제가 용이
특정 노드의 장애가 다른 노드에 영향을 주지 않음
📌 단점
공통배선의 대역폭을 공유하기 때문에 노드 수가 증가하면 배선의 트래픽이 증가하여 네트워크 성능이 저하.
공통배선이 맛이 가면 전체 네트워크 통신 불가
✏️ 스타(성)형 토폴로지
- 중앙에 있는 노드에 각 End-device를 직접 연결시킨 형태로 모든 통신 제어는 중앙에 있는 노드가 수행하게 됨
📌 장점
설치가 용이
중앙의 노드가 통신을 제어하기 때문에 유지보수 및 관리가 편함
고장이 발생했을 때 발견이 쉬우며 각 노드마다 전송속도를 다르게 설정할 수 있음
📌 단점
많은 통신회선이 필요
중앙 노드에 장애가 발생하면 토폴로지 전체가 통신되지않음
✏️ 링형 토폴로지
- 고리 구조를 형성하는 케이블에 컴퓨터를 연결한 형태
- 논리적인 토큰이 통신에 영향을 미침
- 토큰 패싱을 통해 패킷의 충돌방지 가능
📌 장점
단 방향 통신으로 신호 증폭이 가능하며 거리 제약이 적음
📌 단점
노드의 추가,삭제가 용이하지않음
한쪽 회선이 맛이 가면 통신불가 > 양방향통신으로 해결!
✏️ 트리형 토폴로지
📌 정적 경로 (Static Route)
- 최상위에 중앙 컴퓨터를 중심으로 단계적으로 하위,상위 개념을 계층적으로 적용한 형태
- 통신에 우선순위를 부여하거나 Backbone 망을 형성하여 데이터의 통신을 트래픽에 따라
최적화시킬 수 있음
📌 장점
통신망의 확장과 유지관리가 매우 용이
네트워크를 나눌 수 있기 때문에 체계적인 토폴로지를 구성할 수 있음
📌 단점
상위 노드에 장애가 발생하면 하위 노드의 통신에 영향을 미침
✏️ 망(Mesh)형 토폴로지
- 모든 노드가 서로 일대일로 연결된 그물망 형태로 다수의 노드 쌍이 동시에 통신할 수 있음
📌 장점
특정 노드의 장애가 다른 노드에 영향을 주지않음
회선 장애에 유연한 대처가 가능함
📌 단점
회선구축비용이 많이 듦
새로운 노드 추가 시 비용부담이 발생함 (일일이 다 연결해야하므로)
📌 마무리
네트워크 계층 보다는 라우터 얘기가 중점적으로 됐다. CCNA 자격증 딴다고 학원 다니면서 패킷트레이서 했던 거 위주로 정리를 해서 방향이 네트워크 계층 보다는 라우터가 된 거 같다. 학부 생활 때 정리한 거라 모자란 거도 많고 보충해야 될 내용도 많은데 엄두가 안난다. 개발 쪽 블로그도 밀려있는게 많아서 ㅠㅠ 우선은 포트폴리오에 있는 내용 중점으로 정리하고 추후에 하나씩 추가하도록 하겠다.
📝 포트폴리오 원본
'✏️ 공부 > 02. 네트워크' 카테고리의 다른 글
[네트워크] L4 Transport (전송 계층) -TCP, UDP, RTP, RTCP (0) | 2023.09.08 |
---|---|
[네트워크] OSI-7Layer (0) | 2023.08.26 |
[네트워크] 네트워크란? (0) | 2023.08.20 |
[네트워크] 개요 (0) | 2023.08.19 |