부제 : 내 컴퓨터로 구글에 접속하려 할 때 일어나는 일
OSI 7계층은 이론적인 참조 모델이다.
기본적인 OSI 7계층의 내용은 여러 자료가 많으니 여기서 따로 다루지 않는다.
1계층 : 물리 계층 (Wi-Fi, 이더넷)
2계층 : 데이터 링크 계층 (MAC 주소)
3계층 : 네트워크 계층 (IP)
4계층 : 전송 계층 (TCP, UDP)
5계층 : 세션 계층 (SSH, SSL 세션 관리)
6계층 : 표현 계층 (SSL, TSL)
7계층 : 응용 계층 (HTTP, HTTPS, SMTP, DNS)
실생활에서 일어나는 일을 OSI 7계층에 빗대어 생각을 해보자.
- 학교에서 와이파이로 https://google.com에 접속하는 과정
송신은 7계층 -> 1계층, 수신은 1계층 -> 7계층이다.
<내 컴퓨터 -> 구글 서버 송신> : 캡슐화
캡슐화의 과정 (7계층 -> 1계층)
7계층 : 웹 브라우저에 "https://google.com" 입력, 요청
DNS 조회 후 google.com의 IP 주소를 획득, HTTP 요청 메시지 생성
7계층의 역할 : 내 컴퓨터의 요청 -> HTTP 요청 메시지로 변환
6계층 : HTTPS 암호화
브라우저에서 생성한 HTTP 요청 메시지를 암호화한다.
6계층의 역할 : HTTP 요청 메시지 -> 암호화된 HTTP 요청 메시지로 변환
5계층 : SSL 세션 관리
웹 브라우저가 google.com에 대해 세션 생성, 저장
세션이 유지될 동안 "https://google.com" 재요청 시 소모되는 자원이 훨씬 적어진다.
5계층에서는 다른 계층과 다르게 데이터를 가공하거나 분해, 추가, 변형하지 않는다.
4계층 : TCP 3-way handshake
내 컴퓨터와 구글 서버의 논리적 연결
내 컴퓨터 → 구글 서버: SYN (연결 요청)
구글 서버 → 내 컴퓨터: SYN-ACK (연결 승인)
내 컴퓨터 → 구글 서버: ACK (연결 완료)
TCP 연결 : 논리적 연결, 실제로는 직접 연결되지 않았지만 직접 연결된 것처럼 동작
6계층에서 암호화된 HTTP 요청을 TCP 세그먼트로 분할
4계층의 역할 : 암호화된 HTTP 요청 -> TCP 세그먼트로 분할
3계층 : IP 패킷 감싸기, 라우팅(물리적 연결)
4계층에서 받은 TCP 세그먼트를 IP 패킷으로 한 번 감싼다.
IP 헤더 추가 (출발지 IP, 목적지 IP, 프로토콜, TTL ..)
라우팅 - 내 컴퓨터에서 Google 서버로 데이터를 전달하기 위해 첫 번째 홉으로 이동한다.
라우팅은 전체 경로를 미리 계산하는 것이 아니라, 현재 라우터에서 이동 가능한 "최선의 선택 지점"을 찾아 이동하는 것이다.
내 컴퓨터에서 가장 첫 번째 홉은 내가 연결되어있는 학교 와이파이 게이트 웨이 (기본 게이트 웨이)
라우팅의 실제:
- ❌ "전체 경로를 미리 계산"
- ✅ "다음 한 단계만 최선 선택" (그리디 알고리즘이 생각난다.)
- ✅ 각 라우터가 독립적으로 판단
- ✅ 홉-바이-홉으로 최종 목적지 도달
"학교 게이트웨이로 보내자"는:
- 내 컴퓨터 입장에서 "아는 길 중 최선"
- 게이트웨이가 "더 잘 아니까 맡기자"
길 물어보기와 유사하다. "부산 어떻게 갈까?" → "일단 고속도로 입구로 가자"
게이트 웨이 : 다른 네트워크(라우터)로 이동하는 출입문
내부 통신(같은 ip에서 통신 요청 시) 게이트 웨이를 거칠 필요가 없지만
외부 통신(다른 ip로 요청 시) 게이트 웨이를 거쳐야 한다.
예시 - 학교 네트워크 구조
┌─────────────────────────────────────┐
│ 학교 내부 네트워크 │
│ (192.168.1.0/24) │
│ │
│ 내 컴퓨터: 192.168.1.100 │
│ 옆 사람 컴퓨터: 192.168.1.101 │
│ 프린터: 192.168.1.200 │
│ │
│ 게이트웨이: 192.168.1.1 ←────┐ │
└─────────────────────────────────────┘
│
┌────▼────┐
│ 인터넷 │
│(외부) │
└─────────┘
라우팅 예시
C:\> tracert google.com (mac에서는 traceroute)
1 1 ms 192.168.1.1 (학교 게이트웨이)
2 15 ms 210.117.1.1 (학교 ISP)
3 25 ms 112.174.45.1 (KT 백본)
4 28 ms 72.14.194.226 (구글 네트워크)
5 30 ms 142.250.196.110 (구글 서버)
=> 총 5번의 홉을 거쳐 목적지까지 도착
3계층의 역할 : 4계층에서 받은 TCP 세그먼트 데이터를 IP 패킷으로 감싼 다음
다음 홉인 기본 게이트 웨이(학교 와이파이 게이트 웨이)로 이동한다.
2계층 : 'IP 패킷으로 감싼 TCP 세그먼트 데이터'에 '프레임'을 한 번 더 감싼다.
유선 연결 시 "이더넷 프레임" 으로 감싼다.
Wi-Fi 연결 시 "Wi-Fi 프레임" 으로 감싼다.
블루투스 연결 시 "블루투스 프레임" 으로 감싼다.
모바일 연결 시 "5g/LTE 프레임" 으로 감싼다.
=> (내부에 TCP 세그먼트 데이터가 들어있는) IP 패킷을 안전하게 포장, 에러 검출 (FCS/CRC)
2계층의 역할 : 내 컴퓨터에서 학교 와이파이 MAC 주소(물리 주소)로 최종 프레임을 전달
1계층 : 와이파이 전파를 통해 학교의 Wi-Fi 게이트로 실제 데이터 전송
(학교 와이파이 MAC 주소 -> 학교 와이파이 게이트웨이)
1계층의 역할 : 홉을 찾거나 라우팅 결정을 절대 하지 않고, 단순히 물리적 전송만 이루어진다.
* 3계층의 라우팅은 "최적의 경로를 먼저 확인 후 이동" 하는 것이 아니라 현재 홉에서 이동 가능한 최적의 홉을 찾는 것이다.
그러면 1계층에서 실제 데이터를 전달한 뒤 '다음 홉으로 이동하는 일'까지 발생하는 것이 아닐까 ?
=> 1계층은 데이터를 단순히 전달하는 역할만 하며 다음 홉으로 이동하는 일은 일어나지 않는다.
1계층에서 실제 데이터를 전달하고 나면 데이터를 받은 홉(중간 라우터)들은 1~3계층의 동작을 수행한다.
학교 와이파이의 게이트 웨이는 내 컴퓨터의 데이터를 받고 아래 일을 수행한다.
✅ 1계층: 신호 수신
✅ 2계층: 프레임 해석 → IP 패킷 추출
✅ 3계층: 라우팅 테이블 확인, 다음 홉 결정
✅ 2계층: 새 프레임으로 포장
✅ 1계층: 다음 홉으로 전송
다음 홉(게이트 웨이)도 마찬가지로 전달받은 데이터를 같은 방식으로 반복한다.
✅ 1계층: 신호 수신
✅ 2계층: 프레임 해석 → IP 패킷 추출
✅ 3계층: 라우팅 테이블 확인, 다음 홉 결정
✅ 2계층: 새 프레임으로 포장
✅ 1계층: 다음 홉으로 전송
이렇게 홉들을 이동하며 최종 목적지인 구글 서버에 도착하게 된다.
<구글 서버가 내가 보낸 데이터를 확인> : 역캡슐화
데이터를 확인 후 다시 내 컴퓨터에 응답을 내려주는 것은 캡슐화이다.
마찬가지로 내 컴퓨터에서 응답 데이터를 확인하는 과정은 역캡슐화이다.
역캡슐화의 과정 (1계층 -> 7계층)
1계층: 물리적 신호 수신 광케이블이나 네트워크 회선을 통해 들어온 전기 신호를 받는다.
1계층의 역할: 물리적 신호 -> 디지털 데이터로 변환
2계층: 프레임 해석
마지막 홉에서 온 프레임(이더넷 프레임, 와이파이 프레임..)을 해석하여 IP 패킷을 추출한다.
프레임 헤더를 제거하고 안에 있는 IP 패킷을 꺼낸다.
2계층의 역할: 프레임 -> IP 패킷 추출
3계층: IP 패킷 해석
IP 헤더를 확인하여 출발지와 목적지를 파악한다. "192.168.1.100에서 온 요청이구나, 내가 맞는 목적지네"
IP 헤더를 제거하고 TCP 세그먼트를 추출한다.
3계층의 역할: IP 패킷 -> TCP 세그먼트 추출
4계층: TCP 세그먼트 재조립
여러 개로 나뉜 TCP 세그먼트들을 순서대로 재조립한다.
TCP 헤더를 확인하여 연결 상태와 순서를 체크한다.
모든 세그먼트가 도착했으면 암호화된 HTTP 데이터를 복원한다.
4계층의 역할: TCP 세그먼트들 -> 완전한 암호화된 HTTP 요청으로 재조립
5계층: SSL 세션 확인
기존에 설정된 SSL 세션이 유효한지 확인한다.
세션 ID와 암호화 키 정보를 검증한다.
5계층에서는 데이터 변형 없이 세션 상태만 확인한다.
6계층: HTTPS 복호화
TLS/SSL을 이용하여 암호화된 HTTP 요청을 복호화한다.
암호화되어 알아볼 수 없던 데이터를 원래 HTTP 요청으로 복원한다.
6계층의 역할 : 암호화된 HTTP 요청 -> 평문 HTTP 요청으로 복호화
7계층: HTTP 요청 처리
"GET / HTTP/1.1 Host: google.com" 요청을 해석한다.
구글 홈페이지를 달라는 요청임을 이해하고 HTML 응답을 준비한다.
7계층의 역할: HTTP 요청 메시지 -> 구글 서버가 이해할 수 있는 명령으로 해석
아래는 입장이 바뀐 캡슐화, 역캡슐화이다.
'내 컴퓨터 -> 구글' 캡슐화가 '구글 -> 내 컴퓨터' 캡슐화로 바뀌었고
'구글의 내 컴퓨터 데이터 해석' 역캡슐화가 '내 컴퓨터의 구글 데이터 해석' 역캡슐화로 바뀌었다.
<구글 서버가 내 컴퓨터로 응답> : 캡슐화
구글 서버가 응답 데이터를 만들어 내 컴퓨터로 보내는 과정이다.
7계층: HTML 응답 생성
구글 홈페이지 HTML, CSS, JavaScript 파일을 생성한다.
HTTP 응답 헤더와 함께 완성된 웹페이지 데이터를 만든다.
7계층의 역할: 구글 홈페이지 -> HTTP 응답 메시지로 변환
6계층: HTTPS 암호화
생성한 HTML 응답을 TLS/SSL로 암호화한다.
내 컴퓨터만 해독할 수 있는 암호화된 데이터로 변환한다.
6계층의 역할: HTTP 응답 메시지 -> 암호화된 HTTP 응답 메시지로 변환
5계층: SSL 세션 관리
기존 세션을 유지하여 다음 요청 시 빠른 처리가 가능하도록 한다.
5계층에서는 데이터 변형 없이 세션 상태만 관리한다.
4계층: TCP 세그먼트로 분할
암호화된 HTML 응답을 TCP 세그먼트 크기로 나눈다.
각 세그먼트에 순서번호를 붙여서 재조립 가능하도록 한다.
4계층의 역할: 암호화된 HTTP 응답 -> TCP 세그먼트로 분할
3계층: IP 패킷 감싸기, 라우팅
TCP 세그먼트를 IP 패킷으로 감싼다. IP 헤더 추가 (출발지 IP: 구글서버, 목적지 IP: 내 컴퓨터)
다음 홉을 결정하여 내 컴퓨터 방향으로 라우팅한다.
3계층의 역할: TCP 세그먼트 -> IP 패킷으로 감싸고 다음 홉 결정
2계층: 프레임으로 포장
IP 패킷을 프레임(구글은 기본적으로 이더넷 프레임, RoCE라는 고성능 이더넷 프레임을 사용할 때도 있음)으로 감싼다.
다음 홉의 MAC 주소를 목적지로 설정한다.
2계층의 역할: 구글 서버에서 다음 홉 MAC 주소로 프레임 전달
1계층: 물리적 전송
광케이블이나 네트워크 회선을 통해 다음 홉으로 데이터를 전송한다.
1계층은 단순히 물리적 전송만 담당하며 홉 계산은 하지 않는다.
구글 서버에서 보낸 응답도 마찬가지로 각 중간 라우터에서 1~3계층 동작을 반복하며 내 컴퓨터까지 도달한다.
<내 컴퓨터가 구글 응답을 확인> : 역캡슐화
내 컴퓨터에 도착한 구글의 응답 데이터를 해석하는 과정이다.
1계층: 와이파이 신호 수신
학교 와이파이를 통해 들어온 전파 신호를 받는다.
1계층의 역할: 와이파이 전파 -> 디지털 데이터로 변환
2계층: Wi-Fi 프레임 해석
Wi-Fi 프레임을 해석하여 IP 패킷을 추출한다.
프레임 헤더를 제거하고 안의 IP 패킷을 꺼낸다.
2계층의 역할: Wi-Fi 프레임 -> IP 패킷 추출
3계층: IP 패킷 해석
IP 헤더를 확인하여 "구글에서 내게 온 응답이구나" 파악한다.
IP 헤더를 제거하고 TCP 세그먼트를 추출한다.
3계층의 역할: IP 패킷 -> TCP 세그먼트 추출
4계층: TCP 세그먼트 재조립
여러 개로 나뉜 TCP 세그먼트들을 순서대로 재조립한다.
완전한 암호화된 HTTP 응답으로 복원한다.
4계층의 역할: TCP 세그먼트들 -> 완전한 암호화된 HTTP 응답으로 재조립
5계층: SSL 세션 확인
기존 SSL 세션이 유효한지 확인한다.
5계층에서는 데이터 변형 없이 세션 상태만 확인한다.
6계층: HTTPS 복호화
암호화된 HTTP 응답을 복호화한다.
구글의 HTML, CSS, JavaScript를 원래 형태로 복원한다.
6계층의 역할: 암호화된 HTTP 응답 -> 평문 HTTP 응답으로 복호화
7계층: 웹페이지 렌더링
브라우저가 HTML을 해석하여 구글 홈페이지를 화면에 표시한다.
CSS로 스타일을 적용하고 JavaScript로 동적 기능을 실행한다.
7계층의 역할: HTTP 응답 메시지 -> 내가 볼 수 있는 구글 홈페이지로 변환
이렇게 요청과 응답이 각각 캡슐화와 역캡슐화 과정을 거치며 내 브라우저에 구글 홈페이지가 완전히 로드된다.
내 컴퓨터 -> 구글 서버
구글 서버 -> 내 컴퓨터
데이터 송수신 과정 정리
'CS' 카테고리의 다른 글
| [DB] SubQuery 1 (0) | 2026.02.09 |
|---|---|
| [DB] MySQL 성능 최적화 (0) | 2025.12.07 |
| [네트워크] 쿠키, 세션 (0) | 2025.11.02 |
| [운영체제] Java와 고성능 게임 개발 (0) | 2025.09.04 |
| [알고리즘] BFS DFS (0) | 2025.09.03 |