

오픈 시스템 상호 연결(OSI,Open System Interconnection) 모델은 네트워크 통신 기능을 7개의 계층으로 나누는 개념적 프레임워크입니다. 다양한 하드웨어 및 소프트웨어 기술이 모든 상황과 장소에서 일관되게 작동해야 하기 때문에 네트워크를 통해 데이터를 전송하는 것은 복잡합니다. OSI 7계층 모델은 이러한 환경에서 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명함으로서, 계층별로 모든 기술은 특정 기능을 제공하고 해당 기능을 수행해야 네트워킹에 유용하게 사용할 수 있습니다. 상위 계층의 기술은 기본 구현 세부 사항에 대해 걱정할 필요 없이 하위 수준 기술을 사용할 수 있으므로 추상화의 이점을 누릴 수 있습니다.
그 중 클라우드 및 네트워크 인프라 환경에서 엔지니어가 직접 제어하고 설계하는 핵심은 L2,3,4,7입니다. 1계층(물리)은 자동화되어 있고, 5·6계층은 애플리케이션에 통합되었기 때문입니다.
I. 데이터 링크 계층(L2)
물리 계층(L1)을 통해 송수신되는 정보의 오류를 관리하고, 안전한 정보의 전달을 수행하도록 돕는 계층입니다. 인접한 네트워크 노드 간의 신뢰성 있는 데이터 전송을 보장하는 것이 핵심 목적입니다.
1. 주요 역할과 기능
데이터 링크 계층은 '이웃 교통 경찰'과 같은 역할을 하며, 다음과 같은 구체적인 기능을 수행합니다.
- 프레이밍(Framing): 네트워크 계층에서 받은 데이터 패킷을 '프레임(Frame)'이라는 단위로 캡슐화합니다. 프레임의 시작과 끝을 구분하여 비트 스트림을 의미 있는 단위로 나눕니다.
- 물리적 주소 지정(Physical Addressing): 프레임 헤더에 송신자와 수신자의 *물리적 주소(MAC 주소)를 추가합니다. 이는 IP 주소와 달리 장치 고유의 '평면적(Flat)' 주소입니다.
- 에러 제어(Error Control): 물리 계층에서 발생할 수 있는 오류를 감지하고 수정합니다. 주로 CRC(순환 중복 검사) 방식을 사용하여 데이터의 무결성을 확인하고, 손상된 프레임은 폐기하거나 재전송을 요청합니다.
- 흐름 제어(Flow Control): 송신 측과 수신 측의 데이터 처리 속도 차이로 인해 수신 측의 버퍼가 넘치지 않도록 데이터 전송량을 조절합니다.
- 매체 접근 제어(Medium Access Control): 여러 장치가 동일한 통신 매체를 공유할 때, 충돌을 방지하고 누가 언제 매체를 사용할지 결정합니다.
*MAC주소란? 컴퓨터나 스마트폰 등 네트워크에 연결 가능한 모든 하드웨어(NIC, 랜카드)에 제조사에서 부여하는 전 세계 유일한 물리적 고유 식별 번호입니다.
2. 두 개의 서브계층 (IEEE 802 표준 기준)
데이터 링크 계층은 더 세부적으로 두 개의 계층으로 나뉩니다.
- LLC (Logical Link Control, 논리 링크 제어): 상위 계층인 네트워크 계층과의 인터페이스 역할을 하며, 흐름 제어 및 오류 제어 기능을 담당합니다.
- MAC (Medium Access Control, 매체 접근 제어): 물리적인 매체에 접근하기 위한 제어 및 주소 지정(MAC 주소)을 담당합니다. (예: 이더넷의 CSMA/CD, 와이파이의 CSMA/CA)
3. 대표적인 장비 및 프로토콜
- 주요 장비: L2 스위치(Switch), 브리지(Bridge), *네트워크 인터페이스 카드(NIC)
- 주요 프로토콜:
- 이더넷(Ethernet): 가장 대중적인 유선 LAN 표준
- IEEE 802.11 (Wi-Fi): 무선 LAN 표준
- PPP (Point-to-Point Protocol): 두 지점 간의 직접 연결
- HDLC: 고속 데이터 연결 제어
*NIC: 컴퓨터를 유무선 LAN에 연결하여 네트워크 데이터를 주고받을 수 있게 하는 물리적 하드웨어 장치
II. 네트워크 계층(L3)
여러 개의 노드를 거칠 때마다 경로를 선택하고, 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 계층입니다. 서로 다른 네트워크 간의 통신을 가능하게 하는 것이 핵심입니다.
1. 주요 역할과 기능
네트워크 계층은 '내비게이션' 혹은 '우체국 물류 시스템'과 같은 역할을 하며, 다음과 같은 기능을 수행합니다.
- 라우팅(Routing): 데이터를 목적지까지 보낼 최적의 경로를 설정합니다. 다양한 라우팅 알고리즘을 사용하여 효율적인 길을 찾아냅니다.
- 호스트 주소 지정(Addressing): 네트워크 내의 모든 호스트가 고유하게 식별될 수 있도록 논리적인 주소를 할당합니다. 대표적으로 * IP 주소가 여기에 해당합니다.
- 패킷 포워딩(Forwarding): 수신한 패킷을 적절한 출력 인터페이스를 통해 다음 **노드로 전달하는 실제적인 동작을 수행합니다.
- 단편화 및 재조립(Fragmentation & Reassembly): 데이터 전송 시 하위 계층(L2)의 최대 전송 단위(MTU)보다 패킷이 클 경우, 이를 작은 단위로 나누고 목적지에서 다시 합칩니다.
*IP 주소는 논리주소에 해당하며 L2에서 나온 MAC 주소와는 다른 개념입니다.
**노드? 여기서 노드란 패킷이 최종 목적지 까지 가는 경로에 있는 라우터를 의미합니다. 패킷이 출발지에서 목적지까지 한 번에 갈 수 없는 경우가 대부분이기 때문에 라우터를 이용하고, 이때 "목적지(IP)로 가려면 어느 통로(인터페이스)로 나가서 어떤 장치(다음 라우터)에게 줘야 하는가?"를 결정합니다.
2. 데이터 단위 및 특징
- 데이터 단위: 이 계층에서 취급하는 정보의 단위는 패킷(Packet)입니다.
- 비연결성 통신: 대표적인 프로토콜인 IP는 수신자의 확인 없이 패킷을 전송하는 비연결형(Connectionless) 방식을 취하며, 신뢰성 있는 연결은 상위 계층(L4)에서 담당합니다.
3. 대표적인 장비 및 프로토콜
- 주요 장비: 라우터(Router), L3 스위치
- 주요 프로토콜:
- IP (IPv4, IPv6): 네트워크 계층의 핵심 프로토콜로 주소 지정과 라우팅을 담당합니다.
- ICMP: 오류 보고 및 네트워크 상태 진단(예: ping 명령)에 사용됩니다.
- IGMP: 멀티캐스트 그룹 관리용 프로토콜입니다.
- 라우팅 프로토콜: OSPF, RIP, BGP 등 경로 최적화를 위해 라우터 간 정보를 교환하는 프로토콜입니다.
III.전송계층(L4)
양 끝단(End-to-End; 종단간 통신이라고도 한다)의 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않게 해 주는 계층입니다.
1. 주요 역할과 기능
전송 계층은 다음과 같은 핵심 기능을 수행합니다.
- 프로세스 간 통신(다중화): 특정 컴퓨터 내의 여러 프로그램 중 어느 프로그램으로 데이터를 보낼지 결정합니다. 이를 위해 포트(Port) 번호를 사용합니다.
- 신뢰성 있는 전송: 패킷이 손실되거나 순서가 바뀌었을 때 이를 바로잡습니다. (주로 TCP의 역할)
- 흐름 제어(Flow Control): 송신 측과 수신 측의 데이터 처리 속도 차이를 해결하여 수신 측 버퍼가 넘치지 않게 조절합니다.
- 혼잡 제어(Congestion Control): 네트워크 선로가 정체될 때 데이터 전송 속도를 줄여 네트워크 붕괴를 막습니다.
- 분할 및 재조립: 상위 계층의 메시지를 전송하기 적당한 크기인 세그먼트(Segment) 단위로 나누고, 받는 쪽에서 다시 합칩니다.
2. 데이터 단위 및 식별자
- 데이터 단위: 세그먼트(Segment) (UDP의 경우 데이터그램이라고 부르기도 함)
- 식별자: 포트(Port) 번호 (예: HTTP는 80, HTTPS는 443 등)
3. 대표적인 프로토콜: TCP vs UDP
전송 계층에서 가장 중요한 것은 이 두 프로토콜의 차이점입니다.
| 구분 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
| 성격 | 연결 지향형 (3-way handshaking) | 비연결형 |
| 특징 | 신뢰성 높음, 순서 보장, 흐름/혼잡 제어 | 속도 빠름, 오버헤드 적음, 순서 보장 안 됨 |
| 용도 | 웹 브라우징(HTTP), 파일 전송(FTP), 이메일 | 실시간 스트리밍, 온라인 게임, VoIP |
IV. 응용 프로그램 계층(L7)
사용자가 네트워크 서비스에 접근할 수 있도록 인터페이스를 제공하는 계층입니다. 우리가 흔히 사용하는 웹 브라우저, 이메일 프로그램 등이 이 계층의 프로토콜을 사용하여 데이터를 주고받습니다.
1. 주요 역할과 기능
응용 계층은 '서비스의 입구'와 같으며, 다음과 같은 역할을 수행합니다.
- 네트워크 가상 단말기: 원격 서버에 접속하여 작업할 수 있는 환경을 제공합니다.
- 파일 전송, 접근 및 관리: 서로 다른 시스템 간에 파일을 주고받고 관리하는 기능을 제공합니다.
- 우편 서비스: 전자 우편(E-mail)의 발신 및 수신을 지원합니다.
- 디렉터리 서비스: 분산 데이터베이스 소스에 접근하여 전역적인 정보를 제공합니다.
2. OSI 7계층 vs TCP/IP 모델
- OSI 모델: 5계층(세션), 6계층(표현), 7계층(응용)이 엄격하게 분리되어 있습니다.
- TCP/IP 모델: 이 세 계층의 기능을 하나로 묶어 '응용 계층(Application Layer)' 하나로 처리합니다. 실제 우리가 사용하는 인터넷 환경은 대부분 이 통합된 방식을 따릅니다.
3. 대표적인 프로토콜
우리가 일상에서 가장 많이 접하는 프로토콜들이 모두 여기에 모여 있습니다.
- HTTP / HTTPS: 웹 페이지를 주고받을 때 사용
- FTP: 파일 전송 시 사용
- SMTP / POP3 / IMAP: 이메일 전송 및 수신 시 사용
- DNS: 도메인 이름(https://seongw00.tistory.com/)을 IP 주소로 변환할 때 사용
- SSH / Telnet: 원격 시스템에 안전하게 접속할 때 사용
- DHCP: 호스트에 IP 주소를 자동으로 할당할 때 사용
📦 데이터의 이동: 캡슐화(Encapsulation)와 역캡슐화(De-encapsulation)
네트워크 통신은 데이터를 겹겹이 포장해서 보내고, 받는 쪽에서 하나씩 뜯어보는 과정입니다. 각 계층에서 데이터가 어떻게 변하고 이동하는지 단계별로 살펴보겠습니다.
1. 송신 측: 데이터를 포장하는 과정 (Top-Down)
사용자가 보낸 원본 데이터가 하위 계층으로 내려가면서 각 계층의 제어 정보(Header)를 덧붙입니다.
1.1) L7 (Application Layer) - 데이터 생성
- 동작: 사용자가 웹 브라우저에 https://seongw00.tistory.com/를 입력합니다.
- 데이터: HTTP Request 메시지가 생성됩니다.
- 상태: 순수한 Data 그 자체입니다.
1.2) L4 (Transport Layer) - 전송 방식 결정
- 동작: 데이터 앞에 TCP 헤더를 붙입니다. (TCP 3-way handshake로 연결이 확립된 상태)
- 추가 정보:
- Source Port: 내 브라우저가 임시로 쓰는 포트 (예: 51234)
- Destination Port: 서버의 서비스 포트 (예: 443)
- Sequence Number: 데이터 조각의 순서 번호
- 상태: Segment (데이터 + L4 헤더)
1.3) L3 (Network Layer) - 주소지 기록
- 동작: 세그먼트 앞에 IP 헤더를 붙입니다.
- 추가 정보:
- Source IP: 내 컴퓨터의 IP 주소
- Destination IP: 서버의 IP 주소
- 상태: Packet (세그먼트 + L3 헤더)
1.4) L2 (Data Link Layer) - 물리적 통로 확보
- 동작: 패킷 앞에 Ethernet 헤더, 뒤에 FCS(오류 검출용)를 붙입니다.
- 추가 정보:
- Source MAC: 내 컴퓨터 랜 카드의 물리 주소
- Destination MAC: 내 공유기 혹은 게이트웨이 라우터의 MAC 주소
- 상태: Frame (패킷 + L2 헤더/트레일러)
2. 중간 과정: 라우팅 (Hop-by-Hop)
데이터가 인터넷을 지날 때, 라우터들은 L3(IP) 헤더를 보고 길을 찾습니다.
- 흥미로운 점은 다음 목적이 장비로 가기 위해, 라우터를 거칠 때마다 L2(MAC) 주소는 계속 바뀐다는 것입니다.
- 하지만 L3(IP) 주소와 L4(Port) 정보는 최종 목적지까지 변하지 않고 유지됩니다.
3. 수신 측: 포장을 뜯는 과정 (Bottom-Up)
서버에 도착한 프레임은 역순으로 헤더를 검사하며 올라갑니다.
- L2 (Data Link): "이 프레임의 목적지 MAC이 내 랜 카드 주소가 맞나?" 확인 후 헤더를 뜯어내고 패킷을 위로 보냅니다.
- L3 (Network): "이 패킷의 목적지 IP가 내 IP가 맞나?" 확인 후 헤더를 뜯어내고 세그먼트를 위로 보냅니다.
- L4 (Transport): "오류 없이 순서대로 왔나? 8080번 포트를 쓰는 앱이 누구지?" 확인 후 TCP 헤더를 뜯어내고 순수한 데이터를 앱에 전달합니다.
- L7 (Application): 서버 애플리케이션(예: Spring Boot)이 /status 요청을 읽고 응답을 준비합니다.

🦈 와이어샤크를 활용한 계층별 통신 검증
1. 패킷 캡처 준비
- 로컬 테스트: PC에서 브라우저를 켜고 특정 사이트에 접속하는 과정을 캡처합니다.
- 필터 설정: 상단 필터창에 http 또는 목적지 서버의 IP를 입력합니다. (예: ip.addr == [서버IP]/google.com을 이용)

2. 패킷 선택 및 상세 분석창 확인
캡처된 리스트 중 하나를 클릭하면 하단에 상세 분석(Packet Details) 창이 뜹니다. 여기서 계층 구조를 그대로 확인할 수 있습니다.

1. Frame (L2 - Data Link):

- Ethernet II 섹션을 열어보면 Source MAC 주소와 Destination MAC 주소를 확인할 수 있습니다.
2. Internet Protocol (L3 - Network):

- 그 아래 Internet Protocol Version 4 섹션을 클릭합니다.
- Source IP와 Destination IP가 정확히 찍혀 있는지 확인합니다.
3. Transmission Control Protocol (L4 - Transport):

- Transmission Control Protocol 섹션을 클릭합니다.
- 여기서 Source Port와 Destination Port를 확인할 수 있습니다.
- TCP라면 *[SYN], [SYN, ACK], [ACK]로 이어지는 3-way handshake 과정도 패킷 리스트에서 직접 볼 수 있습니다.
4. Hypertext Transfer Protocol (L7 - Application):

- 가장 아래에 있는 Hypertext Transfer Protocol 섹션을 클릭합니다.
- 실제로 우리가 요청한 GET /status HTTP/1.1 같은 메시지와 헤더 정보가 텍스트로 보입니다.
마무리
OSI 7계층이 실제 패킷과 도메인 체인으로 어떻게 구현되어 있는지 확인했습니다. 이 지식은 단순히 시험을 위한 것이 아니라, 인프라 장애라는 전장에서 가장 강력한 무기가 됩니다.
서비스 장애가 발생했을 때 L7 애플리케이션 코드부터 열어보기보단, Bottom-Up(하향식) 접근법을 선택할 수 있습니다.
- L3 단계: ping을 날려 목적지 IP까지의 물리적 통로가 살아있는지 확인하고,
- L4 단계: telnet이나 nc로 서비스 포트가 열려 있는지, TCP 핸드쉐이크가 정상인지 체크하며,
- L7 단계: 그제야 비로소 HTTP 응답 코드와 애플리케이션 로그를 분석하며 문제의 본질을 파고듭니다.
dig 결과에서 본 CNAME의 미로나 와이어샤크의 복잡한 패킷들은 결국 이 계층들이 완벽하게 맞물려 돌아가고 있음을 증명하는 증거들입니다. 인프라를 설계하고 운영한다는 것은, 이 보이지 않는 계층들 사이에 신뢰의 다리를 놓는 과정입니다. 지금의 내용이 앞으로 마주할 인프라 장애를 해결하는 기초체력이 되기를 바랍니다.
'네트워크' 카테고리의 다른 글
| [네트워크]QUIC 프로토콜 (1) | 2026.03.16 |
|---|---|
| [네트워크]CloudFront(CDN)에 대해서 (0) | 2026.03.16 |
| [네트워크]네트워크 회선 (1) | 2026.03.11 |
| [네트워크]멀티 서버 도커 서비스 일괄 점검 (0) | 2026.02.12 |
| [네트워크]OSI 7계층에 대하여 (0) | 2026.02.05 |