CS

[네트워크] OSI 7계층

nippycloud 2025. 9. 3. 14:25

 

부제 : 내 컴퓨터로 구글에 접속하려 할 때 일어나는 일

 

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