
사용자가 웹브라우저에 URL을 입력합니다.
브라우저는 DNS를 통해서 서버의 실제 주소(IP 주소)를 찾습니다.
HTTP 프로토콜을 통해 HTTP 요청 메시지를 생성합니다.
TCP/IP 연결을 통해서 HTTP 요청이 서버로 전송됩니다.
서버는 HTTP 프로토콜을 활용하여HTTP 응답 메시지를 생성합니다.
TCP/IP 연결을 통해서 요청한 컴퓨터로 전송합니다.
도착한 HTTP 응답 메시지는 웹페이지 데이터로 변환되고, 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게됩니다.
💡 참고 포스팅
HTTP란 서버/클라이언트 모델에서 데이터 전송을 위한 프로토콜입니다.
즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 port를 사용합니다.
HTTP는 평문 데이터를 전송하기 때문에, 비밀번호나 주민등록번호 등과 같은 민감 정보를 주고 받을 때 제 3자가 열람이 가능합니다. 이러한 문제들이 HTTPS의 등장의 배경이 됩니다.
HTTPS란 HTTP에 데이터 암호화가 추가된 프로토콜입니다. HTTPS는 포트번호 443번을 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원합니다.
결론, HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약하지만, HTTPS는 안전하게 데이터를 주고 받을 수 있습니다. 하지만, HTTPS를 사용 시 암호화/복호화 과정이 추가되기 때문에 속도면에서 더 느립니다.(오늘날에는 그 차이가 미비합니다.) 또한, HTTPS는 인증서를 발급 및 유지하기 위한 유지 비용이 추가 발생합니다.
따라서, 개인정보와 같은 민감데이터를 주고 받을 때 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순 정보의 경우 HTTP를 사용하면 됩니다.
OSI 7 계층은 네트워크에서 통신이 발생하는 과정을 7 단계로 나눈 것을 말합니다.
1단계~7단계까지 나열하면, 물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용 계층입니다.
이렇게 나눈 목적은 통신이 일어나는 과정이 단계별로 파악하기 위해서 입니다. 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고, 유지 보수에도 용이하기 때문입니다.
각 계층에 특징을 간단히 설명드리면,
7계층은 응용 계층으로 프로그램을 말합니다.
6계층은 표현 계층으로 암호화/복호화가 수행되는 계층을 말합니다.
5계층은 세션 계층으로 연결 관련 설정이 수행되는 계층입니다.
4계층은 전송 계층으로 양 종단 간에 신뢰성 있는 데이터를 전송하는 계층을 말합니다.
3계층은 네트워크 계층은 데이터를 빠르게 전송하는 계층을 말합니다.
2계층은 데이터 링크 계층으로 인접한 노드 간의 신뢰성 있는 데이터를 전송하는 계층을 말합니다.
1계층은 물리 계층으로 데이터를 bit로 변환하는 계층을 말합니다.
TCP/IP 프로토콜 통신 과정에 초점을 맞추어 7계층을 단순화한 계층을 말합니다.
계층은 네트워크 인터페이스, 인터넷, 트랜스포트, 애플리케이션 계층으로 구성됩니다.
각 계층별로 처리 역할이 구분되어 있기 때문에 계층 간 간섭을 최소화할 수 있습니다. 특정 계층에서 문제가 발생 시 유지보수가 편리합니다.
사용자의 요청: 사용자가 웹 브라우저에 도메인 이름(예: www.example.com)을 입력하면, 브라우저는 해당 도메인의 IP 주소를 찾기 위해 DNS 조회를 시작합니다.
로컬 DNS 서버 조회: 브라우저는 우선 사용자의 컴퓨터나 네트워크에 설정된 로컬 DNS 서버에 해당 도메인의 IP 주소를 요청합니다. 로컬 DNS 서버는 일반적으로 사용자의 인터넷 서비스 제공업체(ISP)에 의해 제공됩니다.
캐시 확인: 로컬 DNS 서버는 먼저 자신의 캐시에 해당 도메인의 IP 주소 정보가 있는지 확인합니다. 캐시에 정보가 있으면 그 IP 주소를 사용자에게 바로 반환합니다.
루트 DNS 서버 조회: 캐시에 정보가 없는 경우, 로컬 DNS 서버는 루트 DNS 서버에 조회를 요청합니다. 루트 DNS 서버는 전 세계에 13개가 있으며, 도메인의 최상위 도메인(TLD, 예: .com, .net)에 대한 정보를 관리합니다.
TLD DNS 서버 조회: 루트 DNS 서버는 해당 도메인의 TLD(.com, .net 등)를 관리하는 TLD DNS 서버의 주소를 로컬 DNS 서버에 알려줍니다. 로컬 DNS 서버는 이 TLD DNS 서버에 해당 도메인의 이름 서버 정보를 요청합니다.
도메인의 이름 서버 조회: TLD DNS 서버는 해당 도메인을 관리하는 이름 서버의 주소를 로컬 DNS 서버에 알려줍니다. 로컬 DNS 서버는 이제 해당 도메인의 이름 서버에 접속하여 실제 IP 주소를 요청합니다.
IP 주소 반환: 도메인의 이름 서버는 해당 도메인의 IP 주소를 로컬 DNS 서버에 반환합니다. 로컬 DNS 서버는 이 IP 주소를 사용자의 컴퓨터로 전송하고, 동시에 자신의 캐시에도 이 정보를 저장합니다.
웹 사이트 접속: 사용자의 컴퓨터는 받은 IP 주소를 사용하여 해당 웹 사이트에 접속합니다.