Network Layer
- packetizing
- forwarding & routing
- packet switching (datagram & virtual-circuit)
- network-layer performance
- IPv4 addresing (classful & classless)
- DHCP
- NAT
packetizing
packetizing 이란 payload(순수한 데이터)를 각 계층을 거치면서 encapsulating & decapsulating 하는 것
(end device에서만 Application, Transport 계층을 거치고 중간 라우터에서는 Network, Data link, Physical 계층만 거침)
Alice(source)로부터 Bob(destination)까지 데이터를 전송하면 거치는 각 라우터마다 packetizing이 반복됨
decapdulating 한 후 다시 encapsulating 하는 이유는 incoming link와 outgoing link가 다를 수 있어서(프로토콜이 다를 수 있음)
forwarding & routing
forwarding은 세부 경로를 결정하는 것이고 routing은 전체 경로를 결정하는 것 forwarding을 합쳐서 routing
헤더에 있는 forwarding value에 따라 forwarding tabel에서 output interface를 결정
packet switcing
datagram approach
라우터가 나뉜 패킷을 각각 독립적으로 처리, 마지막에 순서가 다르게 올 수 있으므로 기다렸다가 순서를 맞추고 상위 레이어로 올림
헤더에 소스 주소(SA)와 목적지 주소(DA)가 적혀있고 목적지 주소를 보고 forwarding table에서 output interface를 결정
(현재 인터넷은 이방식)
virtual-circuit approach
데이터를 보내기 전에 setup phase가 있음 (forwarding 할 경로를 정하기 위해)
incoming port를 보고 forwarding table에서 outgoing port를 결정하고 정해진 경로대로 패킷이 이동
network-layer performance
delay, throughput, packet loss 이 세 가지를 보고 말함
delay에는 transmission, propagation, processing, queuing delay가 있음
throughpu은 속도가 가장 낮은 구간(bottleneck)에 의해 결정됨
packet loss는 버퍼에 패킷이 꽉 차면 나머지를 버리기 때문에 발생 해결하기 위해 source에게 알려야 함
각 라우터들을 통해 순차적으로 전달하는 것을 backpressure, 한 번에 source에게 전달하는 것을 congestion control라고함
대부분 transport layer에서 동작
IPv4 Addresses
IPv4 address는 32비트 이므로 약 40억 개밖에 만들지 못하고 IP는 각 디바이스의 인터페이스마다 할당되므로 부족하게 됨
addressing은 32비트를 n bit인 prefix와 32-n bit인 suffix로 나눔
이때 prefix가 정해진 addressing방식을 classful addressing, 정해지지 않은 방식을 classless addressing 이라 함
classfull은 prefix가 8,16,24... 에 따라 A, B, C, D, E 클래스로 나눔 A 클래스는 맨 앞자리가 0으로 고정되므로 first byte는 0~127
B 클래스는 맨 앞자리가 10으로 고정되므로 first byte는 128~191 C 클래스는 맨 앞자리가 110으로 고정되므로 first byte는 192~223
D는 1110, 224~239C는 1111, 240~255
A 클래스는 전체의 50% B 클래스는 25% C 클래스는 12.5% D, E 클래스는 각 6.25%
classless addressing은 IPv4에서 IPv6로 넘어가기 위한 중간과정(short-term solution)이다
IP 뒤에 /n을 붙여 prefix length를 지정해 줌
할당할 수 있는 주소는 prefix를 제외한 모든 비트를 0으로 바꾼 주소부터 prefix를 제외한 모든 비트를 1로 바꾼 주소까지 가능
단 첫 번째 주소는 network address이고 마지막 주소는 broadcast address 이므로 첫 번째와 마지막 사이 주소를 할당 가능
뒤에 /n을 붙이는 방식 말고 Mask 주소를 알려주는 방식도 있음
예를 들어 Mask : 255.255.255.224 이면 11111111.11111111.11111111.11100000 이므로 prefix = 27과 동일
실제로 포워딩할 때는 DA를 이용해 network address를 찾고 그것을 input으로 interface를 찾음
만약 DA를 사용하면 너무 많아지기 때문에 대표로 network address를 사용하는 것
broadcast address는 데이터를 뿌릴 때 사용되는 주소