프론트엔드 개발자가 알아야 할 네트워크 기초 개념 정리
google.com 입력
→ DNS가 IP 주소로 변환
→ TCP로 서버랑 연결
→ HTTP 요청 전송
→ (프록시 거칠 수도 있음)
→ (CORS 확인)
→ 서버가 HTTP 응답
→ 브라우저가 화면 렌더링
google.com → DNS 조회 → 142.250.xxx.xxx
나 연결할게 → 어 받아 → 확인
브라우저와 서버가 데이터를 주고받는 대화 규칙 (편지)
주소창에 URL을 치는 순간, 브라우저가 자동으로 GET 요청(편지)을 보내는 것!
https://www.google.com/search?q=안녕
↑ ↑ ↑
프로토콜 도메인(IP이름표) 경로
(편지규칙)
| 구성요소 | 설명 | 예시 |
|---|---|---|
| Method | 뭘 하고 싶은지 | GET, POST, PUT, DELETE |
| URL | 어디에 요청하는지 | https://api.example.com/users |
| Header | 요청의 부가 정보 | Content-Type, Authorization |
| Body | 실제 보내는 데이터 | { "email": "...", "password": "..." } |
fetch('https://api.example.com/users', {
method: 'POST', // 편지 종류
headers: { 'Content-Type': 'application/json' }, // 봉투에 적는 부가 정보
body: JSON.stringify({ name: '홍길동' }) // 편지 내용
})
| Status Code | 의미 |
|---|---|
| 200 | 성공 |
| 201 | 생성 성공 (POST 후) |
| 400 | 내 요청이 잘못됨 |
| 401 | 로그인 안 했음 (토큰 없음) |
| 403 | 권한 없음 |
| 404 | 그런 거 없음 |
| 500 | 서버가 터짐 |
브라우저가 출처(도메인)가 다른 곳에 요청할 때 서버한테 허락을 구하는 것
내 사이트: https://mysite.com
API 서버: https://api.other.com ← 출처가 다름!
브라우저가 본 요청 전에 preflight 요청을 먼저 보냄
→ 서버가 Access-Control-Allow-Origin 헤더로 허락해줘야 통과
CORS 에러 = 서버가 "이 출처는 허락 안 해" 한 것
브라우저가 직접 서버에 요청하지 않고 중간에서 대신 전달해주는 것
브라우저 → 프록시 서버 → 실제 서버
rewrites가 바로 프록시 역할내 코드를 인터넷 어디서든 접근 가능한 서버에 올리는 것
로컬 개발 → 내 컴퓨터에서만 돌아감
배포 → 전 세계 누구나 HTTP 요청 가능
"API 전송할 때 http로 붙여서 보내는 게 서버에 보내는 편지구나"
"http는 사이트 주소인 줄 알았는데, 주소창에 http 주소 쓸 때 편지 자체인 거였구나. 도메인이 사이트 이름이고 http는 편지 규칙이었던 것"
https://www.google.com/search?q=안녕
↑ ↑ ↑
프로토콜 도메인(IP이름표) 경로
(편지규칙)
https:// → "나 HTTP 규칙으로 편지 보낼게" 선언www.google.com → 편지 받을 주소 (도메인)/search?q=안녕 → "search 페이지에 있는 거 줘, 검색어는 안녕"즉 주소창에 URL 치는 순간 브라우저가 자동으로 GET 요청 편지를 보내는 거예요. 우리가 fetch() 코드 안 써도 브라우저가 알아서 하는 거고요.