사용자는 접속하고 싶은 브라우저의 주소를 입력하게 되면 원하는 브라우저를 볼 수 있게된다. 예를 들어 www.google.com으로 로 접속하면 우리는 google 화면을 볼 수 있다.
그렇다면 내부적으로는 어떻게 동작하는지도 알아보자
우선 OSI 7계층에 대해서 간단하게 알아보면
OSI 7계층 모델은 네트워크 통신을 7개의 계층으로 나누어 설명하는 참조 모델이다. 상위 계층으로 갈수록 사용자와 가까운 부분을 다루게 된다고 볼 수 있다.
- 물리 계층 : 네트워크 장비 간의 물리적 연결을 담당한다. ex) 비트 전송, 전기적 신호 변환, 케이블 및 하드웨어 연결
- 데이터 링크 계층 : 인접한 네트워크 장비 간의 데이터 전송을 관리한다. ex) 오류 감지 및 수정, MAC 주소 관리 등.
- 네트워크 계층 : 데이터가 네트워크 상에서 목적지까지 전달되도록 경로를 결정. ex) 패킷 생성, 라우팅, IP주소 관리
- 전송 계층 : 종단 간 데이터 전송을 담당한다. ex) TCP, 데이터 스트림 관리, 포트 번호 관리
- 세션 계층 : 통신 세션을 설정, 관리 및 종료 ex) 세션 설정 및 동기화, 데이터 교환 관리
- 표현 계층 : 데이터의 형식 변환 및 암호화를 담당한다. ex) 인코딩/디코딩, 암호화/복호화
- 응용 계층 : 사용자와 네트워크 간의 인터페이스를 제공한다. ex) 응용 프로그램 서비스 제공, 프로토콜 관리
사용자가 www.google.com을 입력하면, 브라우저는 HTTP 프로토콜을 사용해 구글 웹 서버와 통신을 하는데, HTTP는 OSI 7계층 중에서 응용 계층에서 동작하는 프로토콜이다.
이때 브라우저는 요청한 도메인 이름에 대한 IP 주소를 알아야 하기 때문에 DNS 서버에서 찾아본다. 이 과정 또한 응용 계층에서 이루어지며, DNS 서버는 해당 도메인에 대한 IP 주소를 응답한다. ex) 63.245.217.105
- 도메인 이름 : example.com = 63.245.217.105 라고 생각하면 된다.
웹사이트는 그들의 IP 주소를 통해 직접 접근될 수도 있다. 우리는 IP Checker와 같은 도구에 도메인을 입력해 IP 주소를 찾을 수도 있다.
IP 주소를 얻은 후, 브라우저는 구글 서버와 통신을 한다. HTTP는 TCP/IP를 기반으로 작동하므로, 데이터를 주고받기 전에 TCP 3-Way Handshake 과정이 필요하다. 이 단계는 전송 계층에서 이루어진다.
TCP 3-Way Handshake
- 브라우저가 서버에 SYN 패킷을 보낸다.
- 서버가 브라우저에 SYN-ACK 패킷을 응답한다.
- 브라우저가 서버에 ACK 패킷을 보내 연결을 확립한다.
TCP 연결이 성립된 후, 브라우저는 HTTP Request 메시지를 생성하여 구글 서버에 보낸다. 예를 들어 "GET / HTTP/1.1" 이라는 요청을 TCP 프로토콜을 통해 80번 포트로 전송되는데, 데이터는 패킷 형태로 네트워크를 통해 전달된다.
이때 네트워크 계층에서 IP 주소를 사용하고, 데이터 링크 계층에서 MAC 주소를 사용한다.
구글 서버는 클라이언트의 요청을 수신하고 이를 처리 후, HTTP Response 메시지를 생성하여 응답한다.
요청이 성공하면 200 OK 상태 코드와 웹 페이지 데이터를 전송하면, 브라우저는 이 응답을 받아 HTML, CSS, JS 등의 데이터를 해석하여 화면에 페이지를 렌더링 한다.
마지막으로 모든 데이터 전송이 완료되면 클라이언트와 서버는 4-Way Handshake 과정을 거쳐 TCP 연결을 종료한다.
4-Way Handshake
- ANonce(Authenticator Nonce) : 엑세스 포인트(AP)가 클라이언트에 Nonce(랜덤 값)을 보낸다.
- 이 메시지에는 AP의 인증 정보를 포함하며, 클라이언트가 인증할 수 있도록 한다.
- SNonce(Supplicant Nonce) : 클라이언트는 AP가 보낸 ANonce를 받아서 자신의 Nonce 를 생성한다.
- 클라이언트는 ANonce와 SNonce를 사용해서 임시 키를 생성한다.
- 클라이언트는 SNonce와 AP의 ANonce를 결합하여 자신의 MIC를 생성한다.
- 이 MIC는 무결성 검사를 위해 사용되며, 클라이언트는 SNonce와 함께 자신이 생성한 MIC를 AP에 전송한다.
- AP는 SNonce와 ANonce를 사용하여 동일한 임시 키를 생성하고, AP는 MIC를 검증하여, 데이터의 무결성과 일치하는지 확인하다. AP는 그룹 키를 클라이언트에 암호화된 형태로 보내고, AP 또한 MIC를 첨부한다.
- 클라이언트는 AP로부터 받은 그룹 키를 복호화해서 저장하고, AP의 메시지를 검증하고, 성공적으로 메시지를 받았다는 확인 메시지를 AP에 보낸다.
'🖥️ Back-end' 카테고리의 다른 글
자바의 Record 란? (1) | 2025.03.27 |
---|---|
DDD (Domain Driven Design) : 도메인 주도 설계 도전 1일차 (1) | 2025.03.13 |
Jackson 이란? (1) | 2025.03.05 |
RabbitMQ 란? (0) | 2025.03.04 |
Redis 기본 문법 알아보기 (1) | 2025.03.03 |