HTTP 동작 방식
- 사용자가 웹 브라우저에 URL 입력
- 브라우저가 DNS를 통해 도메인 이름을 IP 주소로 변환
- TCP 연결을 통해 HTTP 요청 전송
- 서버가 요청을 처리하고 HTTP 응답 반환
- 브라우저가 응답을 렌더링
1. 클라이언트(브라우저)가 URL 입력
예 : https://www.example.com/index.html
- https: 프로토콜 (HTTP or HTTPS)
- www.example.com: 호스트명 (도메인)
- /index.html: 요청 리소스 경로
2. DNS 조회
- 브라우저는 도메인(www.example.com)을 IP 주소로 변환하기 위해 DNS 서버에 질의
- 응답으로 서버의 IP 주소를 받습니다. (예: 93.184.216.34)
3. TCP 연결 (3-way Handshake)
- 클라이언트와 서버 간에 TCP 연결을 생성합니다. (보통 포트 80(HTTP), 443(HTTPS))
- 이 과정은 3-way handshake로 이루어집니다:
-
nginx
SYN → SYN-ACK → ACK
4. HTTP 요청 전송
- 브라우저는 TCP 연결 위에서 HTTP Request를 서버에 보냅니다.
💡 예시: GET 요청
- GET: 메서드 (GET, POST, PUT, DELETE 등)
- Host: 요청 대상 서버
- User-Agent: 클라이언트 정보
- Accept: 클라이언트가 받을 수 있는 응답 형식
5. 서버가 요청 처리
- 서버는 요청한 리소스(/index.html)를 찾아서,
- 해당하는 HTTP Response를 보냅니다.
💡 예시: 200 OK 응답
- 상태 코드: 200 (정상), 404 (Not Found), 500 (서버 에러) 등
- 본문(Body)에 실제 웹 페이지 내용 포함
6. 브라우저가 응답을 렌더링
- 받은 HTML을 파싱해 DOM 트리를 만들고,
- CSS, JavaScript, 이미지 등 추가 리소스를 요청하며
- 최종적으로 사용자에게 화면을 보여줍니다.
✅ 특징 요약
특징설명
비연결성 |
요청-응답이 끝나면 연결 종료 (HTTP/1.1은 keep-alive로 유지 가능) |
무상태 |
각 요청 간의 상태 정보를 저장하지 않음 (쿠키/세션으로 상태 유지 가능) |
확장성 |
다양한 메서드, 헤더를 통해 확장 가능 |
텍스트 기반 |
요청과 응답 모두 사람이 읽을 수 있는 텍스트 형식 |
🔐 HTTPS는 어떻게 다를까?
- **HTTP + TLS(SSL)**로 보안 기능이 추가된 버전
- 암호화, 무결성, 인증 기능 포함
- TCP 연결 후 TLS 핸드셰이크가 먼저 수행됨
📚 참고 메서드 요약
메서드설명
GET |
리소스 조회 |
POST |
리소스 생성 (폼 제출 등) |
PUT |
리소스 전체 수정 |
PATCH |
리소스 일부 수정 |
DELETE |
리소스 삭제 |