올해 초 CS 전공지식 도서를 읽으면서 TCP/IP 계층 모델과 OSI에 대해 정리한 적이 있다. 아무래도 책 자체가 전반적인 전문지식에 대한 요약본이다 보니, 다소 얕게 배우고 넘어갔던 기억이 있다. 워낙 중요한 내용들이기도 하고, 좀 더 정확하게 알고 있는 게 좋을 듯 하여 다시 정리해보려 한다.
선수지식
IP (인터넷 프로토콜)
지정한 IP주소에 데이터의 조각들을 패킷이라는 단위로 목적지까지 전송하는 역할을 하는 규약. 전송에만 목적을 두기 때문에 빠르지만 도중에 패킷이 유실되거나 순서가 꼬이는 문제가 발생할 수 있다. 이를 비연결성, 비신뢰성이라고 한다.
TCP (전송제어 프로토콜)
패킷 데이터의 전달을 보증하고, 보낸 순서대로 받게 해준다. 도착한 패킷들을 점검하여 문제가 있는 부분은 재요청하는 식으로 보증이 이루어진다. 이를 위해 3-way 핸드쉐이킹이라는 방법이 사용된다. 이 방법을 통해 패킷을 전송하고 이상이 없는지 상대에게 확인한다. HTTP, Email, 파일 전송 등에 활용된다. 높은 신뢰성을 보장하지만, 상대적으로 데이터 전달 속도가 느리다.
3-way Handshake
본격적인 연결 이전에 가상 연결을 통해 유효한 통신인지 확인하는 과정이다. 연결 생성 간 서버에게 시퀀스 번호를 보내는 SYN 패킷, 시퀀스 번호를 받은 서버가 응답하는 SYN/ACK 패킷, 유효한 데이터를 통해 서버에 응답하는 ACK 패킷으로 이루어진다. 해당 과정의 순서에 문제가 생기면, 서버는 클라이언트에게 문제가 발생한 시점부터의 전송을 재요청한다. 이를 통해 TCP는 신뢰할 수 있는 프로토콜이라고 얘기한다.
UDP (사용자 데이터그램 프로토콜)
각각의 데이터를 독립적으로 처리하는 비연결 지향적 프로토콜이다. 데이터그램이라는 단위로 통신이 이루어진다. 독립적으로 도착하고 처리되며, 전달 보증이나 순서를 보장하지 않기 때문에 간단한 통신 과정과 빠른 속도를 갖는다는 특징이 있다. IP와 거의 유사하며, 최적화 및 커스터마이징에 용이하다. 도메인, 신뢰성보다는 연속성이 중요한 실시간 동영상 서비스 등에 사용된다.
TCP/IP 4계층
네트워크 계층
노드 간 신뢰성 있는 데이터 전송을 담당하는 계층이다. 알맞은 하드웨어로 데이터가 전달될 수 있게 MAC 주소를 핸들링하거나, 패킷을 전기신호로 변환하여 선로를 통해 전달할 준비를 해준다. 프레임 단위로 구성되며, 최종 전송 전 패킷헤더에 MAC 주소와 오류 검출을 위한 속성을 첨부한다.
인터넷 계층
IP를 담당하는 계층으로, 데이터의 원 출처와 목적지에 관한 정보를 담고 있다. IP의 특징을 그대로 가져 패킷 전달 여부를 보증하지 않고, 빠른 전송을 우선으로 하여 이루어진다. 경로를 설정하는 라우팅 기능을 처리하며, 패킷 단위로 구성되며, 데이터 + IP주소 + 헤더 정보로 이루어져 있다.
전송 계층
통신 노드 간의 연결 제어 및 자료 송수신을 담당한다. IP 위에서 동작하며 데이터 전달을 보증하고 순서를 보장한다. 문제가 있는 경우 점검하여 재요청까지 처리한다. TCP, UDP 등이 전송 계층에 속하며, 세그먼트 단위로 데이터를 전달한다.
응용 계층
HTTP/FTP를 담당하는 계층으로, 서버나 클라이언트 응용 프로그램이 해당 계층에서 동작한다. 파일 전송이나 이메일, FTP, HTTP 등의 서비스가 이에 포함된다.
동작순서
송신 측 응용 계층에서 웹 페이지의 HTTP 요청이 들어오게 되면, 전송 계층으로 이동해 요청 데이터를 조각내고 포트 번호를 부여하여 네트워크 계층에 전달한다. 네트워크 계층에서는 데이터에 IP패킷을 추가하여 링크 계층에 전달한다. 링크 계층에서는 수신지 MAC 주소와 이더넷 프레임을 추가, 네트워크를 통해 송신할 준비를 마친다.
수신 측 서버의 링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달, 애플리케이션 계층까지 도달한다. 이후 클라이언트가 발신했던 HTTP 요청을 수신할 수 있게 된다.
송신 측에서는 요청 데이터 정보의 분해가, 수신 측에서는 역순으로의 결합이 이루어진다고 보면 될 듯 하다. 아래는 TCP/IP 계층을 요약한 표이다.
TCP/IP 4계층 | 역할 | 데이터 단위 | 주소 | 예시 | 장비 |
네트워크 계층 | 실제 데이터인 프레임 송수신 | Frame | MAC | 이더넷, 토큰링 | 브릿지, 스위치 |
인터넷 계층 | 데이터 전송을 위한 논리적 주소 지정 및 경로 지정 | Packet | IP | IP, ARP, OSPF | 라우터 |
전송 계층 | 호스트 간의 자료 송수신 | Segment | Port | TCP, UDP | 게이트웨이 |
응용 계층 | 응용프로그램 간의 데이터 송수신 | Data/Message | - | 파일 전송, 이메일, FTP, HTTP | - |
OSI 7계층
계층을 나눈 이유
흐름을 파악하기 쉽고, 특정한 곳에서 문제가 발생하는 경우 다른 단계의 개입 없이 해당 단계에서 수리가 이루어지기 때문에 유지보수가 용이하다.
물리 계층 (TCP/IP - 네트워크 계층)
전기적 신호가 나가는 물리적인 장비를 의미하는 계층이다. 단지 데이터를 전달할 뿐, 데이터의 값이나 에러에 대해서는 신경쓰지 않는다. 비트 (Bit)단위로 케이블 또는 허브를 이용해 데이터를 전달한다.
데이터 링크 계층 (TCP/IP - 네트워크 계층)
물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있게 하는 역할이다. 매체에 패킷 데이터를 실어 보내며, MAC 주소를 통해 통신한다. 또한 오류를 점검하고 재요청하기도 한다. 프레임(Frame) 단위로 브릿지, 스위치 등을 통해 데이터를 전달한다.
네트워크 계층 (TCP/IP - 인터넷 계층)
경로(Route)와 주소(IP)를 정하고 패킷을 전달한다. 패킷 단위로 목적지까지 가장 안전하고 빠르게 데이터를 전송하는 기능을 수행한다. 여러 개의 노드를 거쳐 경로를 찾아주며, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)를 제공하기 위한 기능적, 절차적 수단을 제공한다.
전송 계층 (TCP/IP - 전송 계층)
신뢰성 있는 데이터를 주고 받게 해주는 역할을 한다. (TCP / UDP) 오류검출 및 복구, 흐름제어와 중복검사 등을 수행한다. 세그먼트(Segment) 단위로 Port 번호를 부여해 데이터를 전달한다.
세션 계층 (TCP/IP - 응용 계층)
응용 프로세스가 통신을 관리하기 위한 방법을 정의하며, TCP/IP 세션을 만들고 없애는 역할을 한다.
표현 계층 (TCP/IP - 응용 계층)
전송하는 데이터의 표현방식을 결정한다. 데이터 변환, 압축, 암호화 등의 방식을 사용하며 GIF, JPEG, ASCII 등의 타입을 정의한다. 인코딩이나 부호화 또한 해당 계층에서 이루어진다.
응용 계층 (TCP/IP - 응용 계층)
사용자와 가장 가까운 계층으로, 실제 서비스나 프로세스가 동작하는 계층이다. HTTP, FTP 등으 프로토콜이 이에 속한다.
TCP/IP와 비교
이론에 기반(프로토콜을 기능별로 분리)한 OSI 7계층의 추상화된 형태가 TCP/IP 4계층으로, 실제 상황에 더 적합해 자주 쓰이는 방식이라고 한다.
Reference