www.google.com에 접속하면 생기는 일
✅ 공유기 vs 라우터 vs 스위치 — 헷갈리는 개념, 한 번에 정리!
🔌 스위치 (Switch)
주요 역할: 같은 네트워크 안의 장치들끼리 연결
동작 방식: MAC 주소 기반으로 목적지 장치에게만 데이터를 전달
비유: 🏢 아파트 내부 우편함 — 편지를 정확한 호수에만 전달
결론: 내부 통신 정리 담당
🌐 라우터 (Router)
주요 역할: 서로 다른 네트워크를 연결하고 경로를 안내
동작 방식: IP 주소를 기반으로 최적의 경로로 데이터 전달
비유: 🏣 중앙 우체국 — 다른 동네, 다른 도시로 가는 길을 안내
결론: 외부 통신 경로 안내자
📶 공유기 (Home Router)
집에서 흔히 말하는 "공유기"는 라우터 + 스위치 + 무선 AP + 방화벽까지 합쳐진 **복합기(All-in-One)**입니다.
포함 기능:
라우터 기능 – 외부 인터넷 ↔ 내부 네트워크 연결
스위치 기능 – LAN 포트를 통해 유선 장치 연결
무선 AP 기능 – Wi-Fi 신호 생성 및 무선 장치 연결
방화벽 / NAT – 보안 기능 및 사설 IP 관리
비유: 🏙️ 현대식 아파트 단지
정문 경비실: 외부와의 연결 (라우터)
각 동 우편함: 내부 장치 연결 (스위치)
무선 방송 시스템: Wi-Fi 기능 (AP)
📊 최종 요약 표
스위치
동일 네트워크 장치 간 연결
MAC 주소
내부 (LAN)
라우터
서로 다른 네트워크 간 연결 및 경로 설정
IP 주소
내부 ↔ 외부 (LAN ↔ WAN)
공유기
라우터 + 스위치 + AP 등 복합 기능 제공
IP 주소 + MAC 주소
내부 및 외부 모두
🧠 핵심 정리 한 줄 요약
“라우터가 스위치인가?” → ❌ 아니요. 역할이 다릅니다.
“공유기가 스위치인가?” → ❌ 아니요. 다만 스위치 기능을 내장하고 있습니다.
네트워크 상에서 클라이언트가 서버를 찾아가려면 IP 주소를 알아야 함. 도메인 네임을 IP로 변경해주는 DNS(Domain Name System)이 있다. 클라이언트가 DNS에게서 IP주소를 얻어옴
(자세한 과정 : DNS(Domain name Service))
라우터 접속
구글 웹 서버의 IP를 가지고 출발한 클라이언트의 요청은 PC에 연결된 랜선이나 와이파이 전파를 타고 공유기를 거쳐 인터넷 구간을 지난다.
구글 웹서버는 해당 요청에 대해 HTML 문서를 응답으로 준다.
요청과 응답의 주고 받는 대상이 반드시 HTML 문서만은 아니다. 단순히 문자열만 주고받거나 이미지, 동영상 파일, JSON이라는 데이터만 주고받기도 한다.
IP주소의 구성
IPV4의 경우 2^32 약 43억개 존재 , IP 주소가 부족해질 수 밖에 없었는데
전 세계 인터넷에 연결된 모든 곳에서 접속할 수 있는 유일한 IP는 공인(public IP)주소로 부여.
각각의 공인 IP 내부에 존재하는 네트워크 망에는 사설 IP 주소를 부여
포트
여러 개의 서버 애플리케이션에 접근하려면 IP 주소만으로 충분할까? IP 주소는 클라이언트의 요청을 물리적인 장치인 서버까지는 안내해 줄 수 있지만, 해당 서버 내에서 돌아가고 있는 서버 애플리케이션까지 전달해 주기에는 정보가 부족하다. 각각의 서버 애플리케이션에 정확하게 요청을 전달하기 위해서는 포트Port라는 추가 정보가 필요하다.
HTTP의 기본 포트는 80번이므로 http://www.google.com은 http://www.google.com:80이라고 요청을 보내는 것과 동일하다.
포트의 값과 종류
포트에 대해 좀 더 알아보자. 포트는 0~65535번까지의 값을 가질 수 있다. 그 중에서도 0~1023번 까지의 포트는 '잘 알려진 포트, 1024~49151번까지의 포트는 '등록된 포트' 나머지 49152~65535번까지의 포트는 '동적 포트'라고 부른다.
잘 알려진 포트 예시
20
FTP - 데이터 전송을 위해 사용
21
FTP - 제어를 위해 사용
22
SSH 연결에 사용(SSH 접속, SFTP 등)
23
Telnet
80
HTTP
443
HTTPS
등록된 포트는 범용적 프로토콜이 아닌 특정 소프트웨어에서만 사용되는 프로토콜을 위해 쓴다. 기본적으로 MySQL은 3306번, 레디스는 6379번 포트를 사용한다.
동적 포트는 서버에게 보낸 요청을 되돌려 받기 위해 사용한다. 사실 서버에만 여러 개의 서버 애플리케이션이 실행되고 있는 것이 아니라, 클라이언트에도 여러 개의 클라이언트 애플리케이션들이 실행되고 있으므로 서로 구분이 필요하다. 동적 포트는 우리가 직접 지정할 필요 없이 운영체제에 의해 관리되며, 비어 있는 포트를 사용하여 클라이언트 애플리케이션이 자신의 요청에 대한 응답을 제대로 되돌려 받을 수 있도록 한다.
서버의 포트: 정해진 공식 창구 (Well-Known Ports)
구글 본사(서버)에는 항상 정해진 창구가 있습니다.
웹사이트 안내 데스크는 항상 80번 또는 443번 창구에 있습니다.
게임 서버 접속 데스크는 항상 25565번 창구에 있습니다.
우리가 웹 브라우저로 google.com에 접속하는 것은, 우리 회사 빌딩에서 "구글 본사 빌딩, 443번 창구로 편지 보내주세요!" 라고 요청하는 것과 같습니다. 서버의 포트는 이렇게 역할이 정해져 있고 모두에게 알려져 있습니다.
클라이언트의 문제: 누가 보낸 편지에 대한 답장이지?
이제 그 설명에서 가장 중요한 부분입니다.
"클라이언트에도 여러 개의 클라이언트 애플리케이션들이 실행되고 있으므로 서로 구분이 필요하다."
우리 회사 빌딩(클라이언트)에도 여러 직원(애플리케이션)이 동시에 일하고 있습니다.
직원 A: 크롬 1번 탭 (네이버 접속 중)
직원 B: 크롬 2번 탭 (유튜브 시청 중)
직원 C: 디스코드 (친구와 대화 중)
직원 D: 카카오톡 (메시지 확인 중)
이 직원들이 모두 각자의 목적지로 편지를 보내면서, 답장 주소에 "답장은 우리 회사 빌딩으로 보내주세요" 라고만 쓰면 어떻게 될까요?
네이버, 유튜브, 디스코드가 보낸 답장 편지들이 모두 우리 회사 빌딩 1층 로비에 도착합니다. 이때 빌딩 경비원(운영체제)은 이 답장을 직원 A, B, C, D 중 누구에게 전달해야 할지 전혀 알 수가 없습니다. 이것이 바로 "구분이 필요하다"는 말의 의미입니다.
해결책: 동적 포트 (임시 반송 주소)
이 문제를 해결하는 것이 바로 동적 포트(Dynamic Port), 즉 '임시 반송 주소표'입니다.
직원 A (크롬 1번 탭)가 네이버에 요청을 보낼 때, 우리 빌딩 경비원(운영체제)이 임시로 비어있는 49152번 창구를 내어줍니다.
요청 편지에는 이렇게 적습니다: "네이버님, 답장은 우리 빌딩 49152번 창구로 보내주세요."
직원 C (디스코드)가 요청을 보낼 때, 경비원(운영체제)은 다른 임시 창구 57831번을 내어줍니다.
요청 편지에는 이렇게 적습니다: "디스코드 서버님, 답장은 우리 빌딩 57831번 창구로 보내주세요."
이것이 바로 "운영체제에 의해 관리되며, 비어 있는 포트를 사용한다"는 부분의 의미입니다. 우리는 이 번호를 신경 쓸 필요가 없습니다.
응답의 도착
네이버 서버는 답장을 보낼 때, 요청 편지에 적힌 대로 "우리 빌딩 49152번 창구"로 정확히 보냅니다.
우리 빌딩 경비원(운영체제)은 답장을 받고 생각합니다. "아, 49152번 창구는 아까 직원 A(크롬 1번 탭)가 쓰던 곳이지!"
경비원은 답장을 정확하게 직원 A에게 전달합니다.
이것이 "자신의 요청에 대한 응답을 제대로 되돌려 받을 수 있도록 한다"는 말의 의미입니다
전체 통신 과정에서 둘의 역할
당신이 집에서 크롬 브라우저로 google.com
에 접속하는 과정:
출발 준비 (내 컴퓨터 안):
포트: 크롬 브라우저는 운영체제로부터 임시 출발지 포트(예: 51000번)를 할당받습니다.
IP 주소: google.com의 목적지 IP 주소를 알아냅니다.
데이터 패킷(편지)에 [목적지: 구글 IP, 443번 포트], [발신지: 내 IP, 51000번 포트] 라고 적습니다.
집 안에서의 전달 (내 컴퓨터 → 공유기):
이제 이 편지를 집 밖으로 내보내기 위해, 일단 바로 옆에 있는 공유기에게 전달해야 합니다.
이때 MAC 주소가 사용됩니다!
내 컴퓨터는 "이 편지를 [내 컴퓨터의 MAC 주소]가 [공유기의 MAC 주소]에게 보냅니다" 라고 외칩니다.
이 통신은 아주 가까운 거리(같은 Wi-Fi 또는 같은 랜선)에서만 일어납니다.
인터넷 여행 (공유기 → 구글 서버):
공유기는 편지를 받고 밖으로 보냅니다. 이제부터 편지는 수많은 다른 라우터들을 거쳐갑니다.
이 과정에서는 MAC 주소는 계속해서 바뀝니다. (A라우터 → B라우터, B라우터 → C라우터...)
하지만 IP 주소는 절대 바뀌지 않고 최종 목적지인 구글 서버를 향해 갑니다.
목적지 도착 (구글 서버 안):
편지가 마침내 구글 서버(올바른 IP 주소)에 도착합니다.
구글 서버의 운영체제는 편지에 적힌 목적지 포트 번호(443번)를 보고, "아, 이건 웹 서버 프로그램에게 온 편지구나!" 라고 판단하여 정확한 프로그램에게 전달합니다.
웹 서버와 WAS
웹 서버라는 용어는 다음 세 가지 의미로 사용된다.
웹 서비스가 실행되고 있는 물리적인 형태의 서버
물리적인 서버 내에서 실행 중이며 웹 요청을 받을 수 있는 서버
프로그래밍 언어에 의해 특정 로직이 실행되는 웹 애플리케이션 서버
2번을 보통 웹 서버 (Web Server)라고 부르고, 3번을 애플리케이션 서버(Web Application Server)라고 부른다. 웹 서버는 보통 정적인 콘텐츠를 제공하는 것에 중점을 둔다. 예를 들어 HTML, CSS, 자바스크립트나 이미지 파일처럼 사용자가 요청한 콘텐츠를 정적인 형태 그대로 반환해 주는 역할을 한다. 반면에 WAS는 이런 정적인 콘텐츠에 더해 사용자의 요청에 따라 어떠한 로직을 실행시키거나, 그 로직의 결과에 맞춰 서버에 존재하지 않던 콘텐츠를 새로 만들어 응답하기도 한다.
대표적인 웹 서버로는 Nginx, Apache . WAS로는 자바를 기준으로 톰캣(Tomcat), 언더토우 등이 있다.
Last updated