네트워크 계층
컴퓨터 네트워크는 컴퓨터와 컴퓨터의 통신으로 단순하게 보는 것이 아니다.
low-level로 들어가서 레지스터와 레지스터 간의 전기신호가 어떻게 흐르는지까지도 네트워크의 계층이라 볼 수 있다. high-level 측면에서 보면 컴퓨터로 구동하는 프로세스와 프로세스 간의 통신, 프로세스 보다 더 위인 사용자와 사용자와의 통신까지도 네트워크라 볼 수 있다.
이러한 네트워크에서 어떤 것이 어떤 것과 통신하는지 그 범주를 설정한 것이 네트워크 계층이다.
OSI 7계층
이 네트워크 계층은 가장 세분화가 잘 되어있고 표준이라 할 수 있을 만큼 모든 사람들이 다 아는 계층이다. 7단계로 나뉘며 아래와 같다.
1계층: Physical Layer
- 가장 low-level한 계층으로 전기신호가 물리적으로 어떻게 흐르는지를 정의
- 비트를 전송하는 계층
- 리피터, 허브 같은 단순한 전기신호를 보내는 장치
- 광섬유(fiber), 구리선 등 전기신호가 흐르는 도선
- 전자공학에서는 디지털-아날로그 간의 인코딩 및 멀티플렉싱 개념으로 많이 배움 ex) NRZ, FDM... 등
2계층: Data Link Layer
- 물리주소인 MAC주소(48비트: FF-FF-FF-FF-FF-FF)를 도입
- 프레임을 전송하는 계층
- 스위치 기능으로 MAC주소를 통해 내부 네트워크 끼리 통신 가능
- 브리지, 스위치 같은 프레임 내부의 MAC주소를 보고 어디로 보낼지 판단해 보내는 장치
- 오류가 나면 재전송하는 오류회복 기능
3계층: Network Layer
- 논리주소인 IP주소(32비트: 255.255.255.255)를 도입
- 첨언으로 기존은 IPv4는 32비트로 표현할 주소가 부족해 IPv6은 128비트로 늘려서 적용
- 패킷을 전송하는 계층
- 라우팅 기능으로 정해진 목적지까지 IP주소를 통해 외부 네트워크와 통신 가능
- 대표적인 프로토콜로 ARP, RARP(라우터에서 물리•논리주소를 변환)
- 라우터, L3 스위치 같은 IP주소를 보고 보내는 장치
4계층: Transport Layer
- 프로세스와 프로세스의 통신으로 각 프로세스는 하나의 IP에서 여러개일 수 있음
- 포트 주소(16비트: 0~65535) 를 도입
- 세그먼트를 전송하는 계층
- 에러 탐지 및 복구, 혼잡제어, 흐름제어 등 다양한 기능을 제공
- 대표적인 프로토콜로 UDP, TCP가 있으며 소프트웨어 측면으로는 HTTP/3의 QUIC도 존재
- L4 스위치가 대표적 장치
5계층: Session Layer
- 여기서부터는 low-level에서 high-level로 올라가는 경계
- 연결이 손실되면 프로토콜이 알아채고 재연결 시도(세션 회복)
- 인증(토큰, ID, PW 등) 및 허가(권한 부여)등의 기능 제공
- 대표적으로 webRTC에서 사용하는 SDP나 gRPC의 RPC
6계층: Presentation Layer
- 데이터를 아래 하위계층으로 이해하기쉽도록 번역하는 단계
- 데이터 변환 혹은 압축의 기능 제공
- 암호·복호화 기능 또한 수행
- 대표적으로 애플 파일 프로토콜(AFP)
7계층: Application Layer
- 사용자가 응용프로그램(Application)과 소통할 수 있는 인터페이스
- 데이터들을 사용자가 눈으로 볼 수도 있고, 수정도 가능한 상호작용
- 이메일 주소같은 사용자의 식별가능한 주소들로 쓰임
- 메시지 혹은 정보, 데이터를 전송
TCP/IP 4계층
기존의 OSI 7계층은 너무 세분화가 되어있어, 최근에는 이를 범주를 간단화하였다.
1계층: Network Access Layer
- 기존의 OSI 1~2계층
- 물리주소(MAC)를 사용해 내부 네트워크 상에서의 통신이 가능
2계층: Internet Layer
- 기존의 OSI 3계층
- 논리주소(IP)를 사용해 내부가 아닌 외부 네트워크(Internet)으로 뻗어나감
3계층: Transport Layer
- 기존의 OSI 4계층
- 통신 노드간의 연결을 제어하고 에러 탐지 및 복구 같은 신뢰성 부여
4계층: Application Layer
- 기존의 OSI 5~7계층
- low-level에서 high-level로 넘어온 단계
- 대부분 오픈소스를 통해 프레임워크, 프로토콜, 소프트웨어 등으로 공유
- FTP, HTTP, SPDY, QUIC, gRPC, webRTC, ZMQ, SSH(TLS) 등