목차
1. 들어가며
2. 네트워크 계층?
3. 네트워크 4계층
4. 마치며
들어가며
네트워크 계층은 이전에 학교 수업시간에도 들었던 내용이지만 블로그에 따로 정리해놓은 글이 없어서 이번 기회에 정리를 해놓으려고 한다.
네트워크 계층?
인터넷 protocol suite는 인터넷에서 정보(패킷)을 주고받는 일종의 규약인 프로토콜들의 집합이다. 가장 유명한 것이 OSI 7 layer, 그리고 TCP/IP 4계층 모델 두가지 이다. TCP/IP 4계층을 좀 더 세분화해서 설명하는 것이 OSI 7 layer이므로 결국 둘다 같은 개념을 설명하고 있다고 보면 된다.

OSI 7 layer에서는 애플리케이션 계층을 3개로 세분화하고 Network Access(data link) 계층을 2개로 세분화하여 설명하고 있다. 소프트웨어 개발자 입장에서 네트워크 이론에 대해 학습한다면 인터넷(Network) 계층과 전송(Transport) 계층을 주의 깊게 봐야하므로 어떤 모델로 학습하든 상관은 없으나, 네트워크 프로토콜 계층에 여러가지 모델이 있다는 것 정도는 기억하도록 하자.
따라서 이번 글에서는 TCP/IP 4계층을 기반으로 네트워크 계층에 대해 알아보고 정리해보려고 한다. 순서대로 애플리케이션, 전송, 인터넷, Network Access(data link)계층에 대해 알아보자.
네트워크 4계층
* 애플리케이션 계층
애플리케이션 계층은 TCP/IP 4계층에서 가장 위에 위치한 계층으로 HTTP, FTP, DNS, 이메일 등 유저에게 실질적으로 서비스를 제공하는 층이다. 애플리케이션 계층에 속하는 프로토콜들은 아래와 같다.
FTP - 장치와 장치 간의 파일을 전송하는 데 사용되는 통신 프로토콜
SSH - 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
HTTP - 웹 사이트 이용시에 사용되는 대표적인 프로토콜
SMTP - 전자 메일(이메일) 전송을 위한 인터넷 표준 통신 프로토콜
DNS - 도메인 이름과 실제 서버의 IP 주소를 알려주는 서버
* 전송 계층
전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있는 계층이다. 대표적인 프로토콜로 TCP, UDP등이 여기에 속하며 인터넷에 패킷 정보를 어떤 식으로 전송(전달)할지 결정하는 계층으로 볼 수 있다.
TCP vs UDP
tcp와 udp의 차이는 네트워크 이론 중에서도 가장 중요하게 다뤄지는 부분 중 하나이다. 그 차이에 대해 정리하자면 다음과 같이 정리할 수 있다.

전체적으로 정리해보자면 TCP는 UDP에 비해 느린대신 신뢰성이 보장되고, UDP는 TCP에 비해 빠른대신 신뢰성이 보장되지 않는다고 볼 수 있다.
무엇보다도 TCP는 매 연결 시마다 3-way handshaking 이라는 일련의 과정을 통해 연결을 맺기 때문에 이 과정때문에 UDP보다 느린 점도 있다.
위의 표를 보면 TCP는 패킷의 전송 순서를 보장하는데에 비해 UDP는 패킷의 전송 순서를 보장하지 않는 것을 알 수 있는데, 이는 패킷 전송방식의 차이 때문이다.

TCP의 경우 위처럼 패킷을 보내기전에 패킷이 이동할 회선을 미리 정해두고 패킷을 스트림 형태로 회선을 통해 수신자에게 밀어 보낸다. 때문에 패킷끼리 순서에 맞춰서 회선을 통해 수신자에게 이동하게 되고, 패킷 내부의 Sequence Number에 의해 패킷의 순서도 자연스럽게 보장하게 된다.

그와는 대조적으로 UDP는 데이터그램 전송 방식을 사용하여 패킷을 전송한다. UDP에서는 패킷을 하나의 데이터 덩어리(데이터 그램)으로 보고, 모든 데이터 그램들은 그때 그때 가장 빠르고 적합한 경로를 라우팅하여 수신자에게 전달된다. 따라서 패킷 끼리 다른 경로를 통해 수신자에 도착할 가능성이 있고, 이 때문에 자연스럽게 패킷의 순서가 꼬일 가능성이 생기게 된다.
TCP는 UDP와 달리 혼잡 제어나 오류 처리등 다양한 기능을 제공하고 패킷의 신뢰성을 보장해주기 때문에 현재 대부분의 네트워크 서비스는 TCP를 기반으로 이루어진다. UDP의 경우 가볍고 빠른대신 신뢰성을 보장하지 않는다는 점을 살려 실시간 스트리밍이나 반응속도가 중요한 게임에 주로 사용되는 편이다.
물론 이론적인 부분에서 볼때는 TCP가 느리고 무겁다고 느껴질 수는 있으나 요즈음의 TCP는 정말 빠르기 때문에 실시간 스트리밍이나 FPS게임에서도 종종 TCP를 사용한다고 한다. 이론과 실제는 다르니 참고만 하는 것이 좋다.
* 인터넷 계층
인터넷 계층은 실질적으로 네트워크 패킷을 IP주소와 Port번호를 기반으로 지정된 목적지로 전달할 경로를 설정하는 계층이다. IP 계층으로 불리기도 하는데, 해당 계층에서 목적지 설정(라우팅)을 통해 경로를 설정하지만 신뢰성을 보장하지는 않는다. 패킷의 신뢰성이나 오류 처리 등의 방법은 위에서 설명한 전송계층에서 하는 일이며 인터넷 계층에서는 라우팅, 패킷 전송의 역할만을 하게 된다.
인터넷 계층에 속하는 스위치를 L3 스위치라 부르는데, 이것은 우리가 흔히 부르는 공유기(라우터)이다. 이 공유기(라우터)는 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 전송에 대한 비용을 최소화하고 경로를 최적화(라우팅)하여 올바른 경로로 패킷을 포워딩 하는 역할을 한다.
* 링크 계층
데이터 링크 계층이라고도 불리며 대표적으로 유선 인터넷인 이더넷이 속하는 계층이다. 실제 유선 광섬유, 무선 등을 통해 프레임을 다음 노드로 전달하는 역할을 한다.
마치며
이번글에서는 네트워크 4계층에 대해 간단히 소개해 봤다. IP주소의 개념이라던가 프로토콜의 의의 등 완전히 기초적인 개념부터 설명한 것이 아니므로 이 부분은 나중에 다른 주제로 포스팅을 할때 다뤄봐야겠다.
'네트워크 > 개념' 카테고리의 다른 글
[Network] - 프록시(proxy) (0) | 2024.02.04 |
---|---|
[Network] - 로드 밸런싱(Load Balancing) (0) | 2024.02.02 |
[Network] - Overlapped IO vs Nonblocking IO (0) | 2023.02.18 |
[Network] - Session (0) | 2023.02.15 |
[Network] - 멀티 프로세싱 서버 (0) | 2022.03.04 |