주소와 이름
IP 주소
IP address
192.168.1.25뜻
네트워크에서 장치를 찾기 위해 사용하는 숫자 주소입니다.
언제 쓰나
다른 기기가 내 컴퓨터, 서버, 컨테이너 호스트에 접근해야 할 때 사용합니다.
예시
192.168.1.25요청 예시
다른 기기에서 접속할 때 어떤 IP 주소를 써야 하는지 설명해줘.
프로그래밍
로컬 개발, 브라우저 요청, API, Docker, 배포 문제 해결에서 자주 만나는 네트워크 용어를 검색하고 이해하는 가이드입니다.
42 개 항목
주소와 이름
IP address
192.168.1.25네트워크에서 장치를 찾기 위해 사용하는 숫자 주소입니다.
다른 기기가 내 컴퓨터, 서버, 컨테이너 호스트에 접근해야 할 때 사용합니다.
192.168.1.25다른 기기에서 접속할 때 어떤 IP 주소를 써야 하는지 설명해줘.
주소와 이름
IPv4
192.168.0.10점으로 나뉜 네 부분 숫자로 이루어진 흔한 IP 주소 형식입니다.
로컬 네트워크 예시는 보통 192.168.x.x 또는 10.x.x.x 같은 IPv4 주소를 사용합니다.
192.168.0.10이 주소가 IPv4 로컬 네트워크 주소인지 알려줘.
주소와 이름
IPv6
::1훨씬 많은 주소를 제공하기 위해 만들어진 더 긴 IP 주소 형식입니다.
로그, localhost 바인딩, 서버 네트워크 출력에서 볼 수 있습니다.
::1이 로그가 IPv4와 IPv6 중 무엇을 쓰는지 설명해줘.
주소와 이름
localhost
http://localhost:3000코드나 브라우저가 실행 중인 바로 그 컴퓨터를 뜻하는 이름입니다.
개발 서버를 실행 중인 같은 컴퓨터에서 접속할 때 사용합니다.
스마트폰에서 localhost는 개발 컴퓨터가 아니라 스마트폰 자신을 뜻합니다.
http://localhost:3000내 컴퓨터에서는 localhost가 되는데 휴대폰에서는 안 되는 이유를 설명해줘.
주소와 이름
127.0.0.1
http://127.0.0.1:3000현재 컴퓨터 자신을 가리키는 대표적인 IPv4 루프백 주소입니다.
localhost 대신 숫자 주소로 현재 컴퓨터에 접속할 때 사용합니다.
http://127.0.0.1:3000여기서 localhost와 127.0.0.1이 같은 의미인지 설명해줘.
주소와 이름
0.0.0.0
next dev -H 0.0.0.0서버가 사용 가능한 모든 네트워크 인터페이스에서 요청을 받도록 할 때 쓰는 주소입니다.
같은 네트워크의 다른 기기에서 개발 서버에 접속해야 할 때 사용합니다.
localhost보다 개발 서버 접근 범위가 넓어질 수 있습니다.
next dev -H 0.0.0.0이 개발 서버를 0.0.0.0에 바인딩해야 하는지 설명해줘.
주소와 이름
Hostname
my-laptop.local장치나 서버를 사람이 읽기 쉽게 부르는 이름입니다.
IP 주소보다 네트워크 이름이 기억하기 쉬울 때 사용합니다.
my-laptop.local이 호스트명이 원하는 IP로 연결되는지 설명해줘.
주소와 이름
Domain
example.com웹사이트나 서비스를 사람이 읽기 쉽게 표현한 인터넷 이름입니다.
사용자가 서버 IP를 외우지 않아도 되도록 공개 사이트에 도메인을 사용합니다.
example.com배포된 사이트가 어떤 도메인을 써야 하는지 설명해줘.
주소와 이름
DNS
example.com -> 93.184.216.34도메인 이름을 IP 주소로 바꿔주는 시스템입니다.
도메인을 호스팅 서비스나 서버에 연결할 때 DNS 레코드를 설정합니다.
example.com -> 93.184.216.34이 도메인에 어떤 DNS 레코드가 필요한지 설명해줘.
포트와 연결
Port
3000한 컴퓨터 안에서 어떤 앱이나 서비스가 요청을 받을지 구분하는 번호입니다.
개발 서버는 3000, 3001, 5173, 8000 같은 포트를 자주 사용합니다.
3000이 서버가 어떤 포트를 쓰는지 알려줘.
포트와 연결
Listen
Ready on http://localhost:3000서버가 특정 주소와 포트에서 요청을 받을 준비가 된 상태입니다.
어떤 URL을 브라우저에서 열 수 있는지 확인할 때 listen 출력을 봅니다.
Ready on http://localhost:3000이 서버가 어디에서 요청을 기다리는지 설명해줘.
포트와 연결
Port forwarding
8080 -> 3000한 포트나 장치로 들어온 요청을 다른 포트나 장치로 전달하는 방식입니다.
라우터, 터널, 컨테이너, 원격 개발 환경에서 사용합니다.
8080 -> 3000이 포트가 어디로 전달되는지 설명해줘.
포트와 연결
Firewall
Allow incoming connections on port 3000네트워크 트래픽을 허용하거나 차단하는 규칙 시스템입니다.
서버는 실행 중인데 다른 기기에서 접속되지 않을 때 확인합니다.
Allow incoming connections on port 3000방화벽이 이 로컬 연결을 막고 있을 수 있는지 설명해줘.
웹 요청
URL
https://example.com/docs?page=1웹 리소스를 요청할 때 사용하는 전체 주소입니다.
URL에는 프로토콜, 호스트, 선택적 포트, 경로, 쿼리 문자열, fragment가 포함될 수 있습니다.
https://example.com/docs?page=1이 URL을 프로토콜, 호스트, 포트, 경로, 쿼리로 나눠줘.
웹 요청
Path
/ko/reference/docker서버 안에서 어떤 라우트나 리소스를 요청하는지 나타내는 URL 부분입니다.
어떤 페이지나 API endpoint가 요청되는지 이해할 때 사용합니다.
/ko/reference/docker이 URL 경로가 앱의 어떤 라우트에 해당하는지 알려줘.
웹 요청
Query string
?page=1&lang=koURL에서 ? 뒤에 붙어 추가 값을 전달하는 부분입니다.
필터, 페이지 번호, 검색어, 간단한 옵션을 전달할 때 사용합니다.
?page=1&lang=ko이 URL이 어떤 쿼리 파라미터를 보내는지 설명해줘.
웹 요청
HTTP
http://localhost:3000브라우저와 서버가 웹 요청과 응답을 주고받는 기본 프로토콜입니다.
로컬 개발에서는 프로덕션 HTTPS 설정 전까지 HTTP를 자주 사용합니다.
http://localhost:3000이 로컬 URL이 HTTP와 HTTPS 중 무엇을 쓰는지 설명해줘.
웹 요청
HTTPS
https://example.comTLS 암호화로 보호되는 HTTP입니다.
공개 사이트, 로그인, 쿠키, 결제, API, 프로덕션 트래픽에는 HTTPS를 사용합니다.
https://example.com이 배포 사이트에 HTTPS가 필요한지 설명해줘.
웹 요청
HTTP method
GET /api/tools요청이 어떤 종류의 동작을 원하는지 서버에 알려주는 동사입니다.
GET은 보통 데이터를 읽고, POST는 보통 데이터를 생성하거나 제출합니다.
GET /api/tools이 API 요청이 어떤 HTTP 메서드를 써야 하는지 설명해줘.
웹 요청
Status code
200 OK / 404 Not Found / 500 Internal Server ErrorHTTP 응답 결과를 요약하는 숫자입니다.
성공, 리다이렉트, 클라이언트 오류, 서버 오류를 빠르게 구분할 때 사용합니다.
200 OK / 404 Not Found / 500 Internal Server Error이 HTTP 상태 코드가 무엇을 의미하는지 설명해줘.
웹 요청
Header
Content-Type: application/jsonHTTP 요청이나 응답과 함께 보내는 부가 정보입니다.
헤더는 콘텐츠 타입, 인증, 쿠키, 캐시 규칙, CORS 설정을 전달합니다.
Content-Type: application/json이 응답에서 중요한 헤더를 설명해줘.
웹 요청
Body
{"name":"demo"}HTTP 요청이나 응답에서 실제 데이터가 들어가는 본문입니다.
POST와 PUT 요청은 본문에 JSON 데이터를 보내는 경우가 많습니다.
{"name":"demo"}이 요청 본문이 어떤 데이터를 보내는지 설명해줘.
브라우저 보안
Origin
http://192.168.1.25:3000프로토콜, 호스트, 포트를 합친 출처 정보입니다.
CORS, 쿠키, 브라우저 보안 규칙을 이해할 때 사용합니다.
포트만 달라도 다른 origin으로 취급됩니다.
http://192.168.1.25:3000이 URL의 origin이 무엇인지 찾아줘.
브라우저 보안
Same-origin policy
https://app.example.com cannot freely read https://api.example.com웹페이지가 다른 origin의 데이터를 마음대로 읽지 못하게 제한하는 브라우저 규칙입니다.
서버는 reachable인데 브라우저 API 요청이 실패하는 이유를 이해할 때 사용합니다.
https://app.example.com cannot freely read https://api.example.com이 문제가 동일 출처 정책 때문인지 설명해줘.
브라우저 보안
CORS
Access-Control-Allow-Origin: https://app.example.com브라우저가 다른 origin의 응답을 사용할 수 있도록 서버가 허용하는 규칙입니다.
프론트엔드 앱이 다른 origin의 API를 호출할 때 사용합니다.
CORS는 응답을 보내는 서버가 허용해야 합니다.
Access-Control-Allow-Origin: https://app.example.com이 CORS 오류가 프론트 코드와 서버 설정 중 어디서 고쳐야 하는지 알려줘.
브라우저 보안
Cookie
Set-Cookie: session=abc; HttpOnly브라우저가 저장했다가 조건이 맞는 사이트에 다시 보내는 작은 데이터입니다.
쿠키는 세션, 사용자 설정, 인증 상태에 자주 사용됩니다.
Set-Cookie: session=abc; HttpOnly이 로그인 상태가 쿠키에 저장되는지 설명해줘.
브라우저 보안
Session
session_id=abc123여러 요청 사이에서 사용자 상태를 기억하는 방식입니다.
로그인 상태나 임시 서버 측 사용자 데이터를 유지할 때 사용합니다.
session_id=abc123이 앱이 사용자 세션을 어떻게 유지하는지 설명해줘.
브라우저 보안
Token
Authorization: Bearer <token>신원이나 권한을 증명하기 위해 사용하는 문자열입니다.
API 인증, 임시 접근, 서비스 간 요청에 사용합니다.
토큰은 접근 권한을 줄 수 있으므로 공개 코드나 로그에 노출하면 안 됩니다.
Authorization: Bearer <token>이 토큰이 브라우저에 노출되는지 확인해줘.
브라우저 보안
TLS certificate
Let's Encrypt certificateHTTPS에서 사이트 신원을 증명하고 트래픽을 암호화하는 데 쓰는 인증서입니다.
프로덕션 사이트를 HTTPS로 제공할 때 사용합니다.
Let's Encrypt certificate브라우저가 인증서가 유효하지 않다고 말하는 이유를 설명해줘.
로컬 개발
Local network
Laptop and phone on the same Wi-Fi같은 Wi-Fi처럼 주변 기기들이 서로 통신할 수 있는 사설 네트워크입니다.
휴대폰이나 태블릿에서 로컬 개발 서버를 테스트할 때 사용합니다.
Laptop and phone on the same Wi-Fi이 기기들이 같은 로컬 네트워크에 있는지 설명해줘.
로컬 개발
LAN IP
192.168.1.25로컬 네트워크 안에서 사용하는 IP 주소입니다.
같은 네트워크의 다른 기기에서 개발 컴퓨터에 접속할 때 사용합니다.
192.168.1.25localhost와 LAN IP의 차이를 설명해줘.
로컬 개발
Network URL
http://192.168.1.25:3000같은 네트워크의 다른 기기가 로컬 서버에 접속할 때 사용하는 URL입니다.
휴대폰이나 태블릿에서 반응형 페이지를 테스트할 때 사용합니다.
개발 서버가 0.0.0.0에서 listen해야 하거나 origin 허용 설정이 필요할 수 있습니다.
http://192.168.1.25:3000이 개발 서버를 휴대폰에서 여는 방법을 설명해줘.
로컬 개발
Dev server
npm run dev앱을 개발하고 테스트하는 동안 사용하는 로컬 서버입니다.
빠른 새로고침, 로컬 미리보기, 프로덕션 빌드 전 디버깅에 사용합니다.
npm run dev이 개발 서버가 제공하는 Local URL과 Network URL을 설명해줘.
로컬 개발
HMR
/_next/webpack-hmr코드 변경을 브라우저에 빠르게 반영하는 개발 기능입니다.
UI 코드를 수정하면서 브라우저 상태를 유지하고 빠르게 확인할 때 사용합니다.
/_next/webpack-hmr이 차단된 요청이 HMR과 관련 있는지 설명해줘.
서버와 Docker
Proxy
Browser -> proxy -> API클라이언트를 대신해 요청을 전달하는 서버입니다.
요청을 우회 전달하거나 백엔드 세부 정보를 숨기거나 개발 중 직접 API 호출을 피할 때 사용합니다.
Browser -> proxy -> API이 API 요청이 프록시를 거치는지 설명해줘.
서버와 Docker
Reverse proxy
Nginx -> app:3000외부 요청을 받아 내부 서비스로 전달하는 서버입니다.
HTTPS 처리, 라우팅, 압축, 캐싱, 앱 서버 전달에 사용합니다.
Nginx -> app:3000이 리버스 프록시가 트래픽을 앱으로 어떻게 전달하는지 설명해줘.
서버와 Docker
Docker port mapping
3000:3000호스트 포트를 컨테이너 내부 포트에 연결하는 설정입니다.
호스트 브라우저가 컨테이너 안의 웹앱에 접속할 수 있게 할 때 사용합니다.
Docker ports에서는 왼쪽이 호스트 포트, 오른쪽이 컨테이너 포트입니다.
3000:3000이 Docker 포트 매핑에서 브라우저 URL을 설명해줘.
서버와 Docker
host.docker.internal
http://host.docker.internal:3000여러 Docker Desktop 환경에서 컨테이너가 호스트 컴퓨터에 접근할 때 쓰는 특수 호스트명입니다.
컨테이너가 호스트 컴퓨터에서 실행 중인 서비스에 요청해야 할 때 사용합니다.
http://host.docker.internal:3000이 컨테이너가 host.docker.internal을 써야 하는지 설명해줘.
서버와 Docker
Service name
postgres://db:5432/appDocker Compose에서 서비스들은 보통 서비스 이름으로 서로 접근할 수 있습니다.
컨테이너끼리 통신할 때 localhost 대신 db, api, redis 같은 compose 서비스 이름을 사용합니다.
postgres://db:5432/app이 컨테이너가 localhost 대신 db 서비스 이름을 써야 하는 이유를 설명해줘.
서버와 Docker
Load balancer
Client -> load balancer -> app servers들어오는 트래픽을 여러 서버로 분산하는 시스템입니다.
앱 인스턴스를 여러 개 실행해 확장성이나 안정성을 높일 때 사용합니다.
Client -> load balancer -> app servers이 배포 구조에서 로드 밸런서가 어디에 들어가는지 설명해줘.
서버와 Docker
CDN
Static assets served from an edge cache사용자와 가까운 위치에서 콘텐츠를 제공하는 분산 네트워크입니다.
정적 asset, 이미지, 스크립트, 스타일, 캐시된 페이지를 빠르게 제공할 때 사용합니다.
Static assets served from an edge cache이 정적 사이트가 CDN의 이점을 얻는지 설명해줘.
서버와 Docker
Cache
Cache-Control: max-age=3600다음 요청을 더 빠르게 처리하기 위해 저장해두는 데이터나 응답입니다.
정적 파일, API 응답, 페이지, CDN edge 콘텐츠에 사용합니다.
오래된 캐시 때문에 수정된 버그가 아직 안 고쳐진 것처럼 보일 수 있습니다.
Cache-Control: max-age=3600이 문제가 캐시 때문에 생겼을 수 있는지 설명해줘.