Reference - Computer Networking: a Top Down Approach
Network layer는 end to end로 패킷을 전송할 때, 경로를 설정하고 라우터 관점에서 어떻게 효율적으로 전달할지를 결정하는 역할을 한다.
IP(Internet Protocol)
- Network layer의 protocol 3가지
routing protocol - forwarding table과 밀접한 관련이 있으며, path를 어떻게 할지를 정하고 router에 전달해준다.
IP protocol - 주소를 관리하는 기능
ICMP protocol - error reporting 및 라우터에 signal이 필요할 때 signaling을 해준다.
- IP datagram format
IP version, header, service type, length, time to live(떠도는 기간) 등이 기록되어 있다.
overhead는 TCP 20bytes, IP 20bytes, + app layer overhead로 계산된다.
- IP fragmentation
Maximum Transfer Size보다 큰 데이터가 있으면, 이를 MTU만큼 쪼개서 전송. 이때 나누어진 패킷의 처음에 header file을 붙여서 보낸다. 이후 destination에 도달하면 receiver 단에서 reaseembly를 통해 패킷을 연결한다.
라우터마다 MTU가 다르기 때문에 비효율적인 반복을 줄이기 위해 receiver 단에서만 reaseembly를 한다.
- IP addressing
IPv4의 경우 32bit의 identifier(IPv6은 64bit)를 가진다.
host는 일반적으로 두개의 인터페이스(이더넷과 와이파이)를 가지며, 라우터는 다양한 인터페이스로 다양한 디바이스에서의 data를 받아들인다. 이러한 32bit 주소는 8bit씩 잘라서 10진수로 표현할 수 있다. (xxx.xxx.xxx.xxx)
- Subnets
회사, 기관 등 group별로 network를 묶은 subnet이 있다. IP address는 subnet part가 있고 host part가 있다. 예를 들면 마지막 8bit가 host part, 그 앞 24bit가 subnet part다. 이때 xxx.xxx.xxx.xxx/24와 같은 형태로 뒤에 '/'를 통해 24bit 까지가 subnet mask임을 나타내기도 한다. subnet 안에 단말이 256개 이상이면 단말 수에 따라 subnet을 24보다 작게 바꾸어야 한다.
최근들어 CIDR(Classless InterDomain Routing)로, host수에 따라 subnet part를 자유롭게 설정할 수 있게 되었다.
how to get IP address?
IP가 미리 할당되지 않은 경우, DHCP(Dynamic Host Configuration Protocol)을 통해 IP를 할당해주는 서버에 IP를 요청해서 할당받아 쓰게 된다. plug-and-play 방식(=유저 활성화에 따라 IP 할당/회수)으로 동작한다.
이를 통해 IP를 host에게 동적으로 줄 수 있기에 IP 갱신 및 재사용이 가능하다.
유선 네트워크보다 무선 네트워크, 즉 모바일 유저에게 특히 유용하다.
IP address의 subnet을 얻는 과정은, ISP(통신사)를 통해 계층적으로 ISP 아래 subnet을 할당받는다.
또한 더 큰 범위에서 보면 ICANN 국제 기관에서 IP와 DNS를 관리한다.
- DHCP 과정
1. host가 DHCP discover message를 모든 단말한테 broadcast하면
2. DHCP 서버가 이를 받고 candidate IP address를 포함한 DHCP offer를 broadcast로 보냄.
3. host가 IP주소를 받기 위해 DHCP request를 broadcast로(DHCP는 IP가 있고, host는 아직 IP를 확정짓지 않은 상태에서 네트워크 내 주변 단말에게 알리기 위해 broadcast함) 보내고
4. DHCP server가 DHCP ack을 host에게 broadcast로 보내고(마찬가지로 아직 IP 못받음) IP를 할당받게 됨.
- DHCP의 역할
1. client에게 first hop router를 addressing
2. DNS server의 이름과 IP address을 정함
3. network mask(subnet mask) 결정
DHCP는 Application layer에 정의되어 있음. UDP로 encapsulation되어 있으며, ethernet을 통해 전달됨.
- NAT(Network Address Translation)
네트워크에서 부가적으로 제공하는 기능이다. IPv4를 아직까지 쓸 수 있게 만드는 기능이다.
그 방법은, 라우터만 IP address를 가지며 라우터가 가진 하나의 IP주소를 라우터와 연결된 여러 디바이스가 쓸 수 있게 한 것이다. 라우터와 연결된 디바이스, 즉 내부 네트워크의 경우 외부 IP address와는 상관없는 로컬 네트워크를 구성해서 로컬의 ip 주소를 따로 할당하게 한다. 라우터에서 디바이스로 들어오고 나가는 패킷은 모두 라우터의 IP address를 가지는데, 여기에 port number를 붙여 어떤 디바이스의 패킷인지 구별할 수 있게 한다.
NAT는 NAT 기능이 있는 라우터만 쓸 수 있다. (local source IP address, port #를 NAT IP address와 new port #로 replace하고, 이를 remember해야한다.) 여기서 큰 문제점은 내부 디바이스가 외부에 패킷을 보낼 순 있는데, 외부 디바이스는 내부 디바이스로 먼저 패킷을 보낼 순 없다는 것이다. 또한 NAT는 application layer에 구현되어 있는데, router는 layer 3까지만 process up할 수 있기에, NAT 기능이 있는 라우터는 appliation layer까지 구현되어있는 라우터를 구입을 해야 한다는 의미이며, NAT는 app designer에 의해 관리되어져야 한다.
- Generalized Forwarding and SDN
라우터가 라우팅 기능 외에 부가적인 기능을 하도록 프로그래밍할 수 있다.
logically centralized routing controller의 역할을 하며 프로세싱, 컴퓨팅, 스토리징을 하는 서버로서의 역할도 한다.
이를 일반화시켜 ip address만 mapping했던 local flow table에 다른 부가적인 기능을 추가할 수 있다는 의미다.
또한 network layer와 link layer 사이에 switch layer가 있는데, 현대에는 switch에도 mini PC를 넣어 암호화, 압축 등의 프로그래밍을 할 수 있다.