개발자를 위한 HTTP 웹 기본 지식
2025. 2. 22. 06:26ㆍ코딩 도구/기술 & 정보 글 (Tech & Knowledge)
반응형
개발자를 위한 HTTP 웹 기본 지식
김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 수강하고 정리했습니다.
인터넷 네트워크
1. 클라이언트-서버 모델
웹은 기본적으로 클라이언트-서버 모델을 기반으로 동작한다. 클라이언트(웹 브라우저, 모바일 앱)는 HTTP 요청을 보내고, 서버는 응답을 돌려준다. 이 과정에서 인터넷 네트워크가 핵심 역할을 한다. 서버는 사용자의 요청을 받아 데이터를 제공하는 역할을 하며, 클라이언트는 이 데이터를 처리하여 사용자에게 표시한다.
2. 인터넷 프로토콜 (IP, TCP, UDP)
- IP(Internet Protocol): 데이터를 목적지까지 전달하는 역할을 한다. 모든 장치는 고유한 IP 주소를 가지며, 이를 통해 통신한다.
- TCP(Transmission Control Protocol): 신뢰성 있는 데이터 전송을 보장한다. 패킷 손실 시 재전송하며, 데이터의 순서를 보장하여 안정적인 통신이 가능하다.
- UDP(User Datagram Protocol): TCP보다 빠르지만 신뢰성이 낮다. 연결을 유지하지 않기 때문에 속도가 빠르며, 주로 스트리밍 서비스나 온라인 게임에서 사용된다.
3. DNS와 포트
- DNS(Domain Name System): 사람이 이해할 수 있는 도메인 네임을 IP 주소로 변환한다. 예를 들어, www.google.com을 입력하면 DNS가 이를 실제 IP 주소로 변환하여 연결을 수행한다.
- PORT: 하나의 서버에서 여러 개의 서비스를 운영할 수 있도록 구분하는 역할을 한다. (예: HTTP는 80번, HTTPS는 443번, FTP는 21번)
URI와 웹 브라우저 요청 흐름
1. URI(Uniform Resource Identifier)
웹에서 리소스를 식별하는 방법은 URI를 통해 이루어진다. URI는 크게 두 가지로 나뉜다.
- URL (Uniform Resource Locator): 리소스의 위치를 의미한다. (예: https://example.com/index.html)
- URN (Uniform Resource Name): 변하지 않는 리소스의 고유 식별자이다.
2. 웹 브라우저의 요청 흐름
- DNS 조회: 브라우저가 입력된 도메인의 IP 주소를 찾는다.
- TCP 연결: 클라이언트와 서버 간 TCP 3-way handshake가 이루어진다.
- HTTP 요청 전송: 브라우저가 서버에 HTTP 요청을 보낸다.
- 서버의 HTTP 응답: 서버가 클라이언트에 응답을 보낸다.
- 브라우저 렌더링: 브라우저가 HTML, CSS, JavaScript를 해석하여 화면을 구성한다.
HTTP 기본 개념
1. HTTP의 특징
- 무상태성(Stateless): HTTP는 기본적으로 클라이언트의 요청 상태를 기억하지 않는다. 따라서 요청마다 필요한 정보를 포함해야 한다.
- 비연결성(Connectionless): 요청과 응답 후 연결을 끊는다. 이를 통해 서버의 자원을 효율적으로 관리할 수 있다. 요청이 완료된 후에도 연결을 유지하는 방식은 keep-alive 설정을 통해 가능하다.
2. HTTP 메시지 구조
- 요청(Request): 메서드, 경로, 헤더, 본문으로 구성된다.
- 응답(Response): 상태 코드, 헤더, 본문으로 구성된다.
- 헤더(Header): 추가적인 메타정보를 포함하며, 요청과 응답에 대한 부가적인 정보를 제공한다.
HTTP 메서드
1. 주요 HTTP 메서드
메서드 : 설명
GET | 리소스 조회 (쿼리 파라미터 사용 가능) |
POST | 리소스 생성 및 데이터 전송 |
PUT | 리소스를 대체 (전체 업데이트) |
PATCH | 리소스 일부 수정 |
DELETE | 리소스 삭제 |
HEAD | GET과 동일하지만 본문 제외 |
OPTIONS | 서버가 지원하는 메서드 조회 |
2. POST 메서드 활용
- 새로운 리소스 생성: 서버가 아직 식별하지 않은 새로운 리소스를 생성한다.
- 프로세스 처리: 단순한 데이터 저장이 아니라, 특정 프로세스를 실행할 때 사용한다.
- 다른 메서드로 처리하기 애매한 경우: GET 요청에 JSON 데이터를 전달해야 할 때 POST를 활용할 수 있다.
HTTP 상태 코드
상태 코드 | 설명 |
200 OK | 정상 응답 |
201 Created | 리소스 생성 성공 |
204 No Content | 응답 본문 없음 |
301 Moved Permanently | 영구적으로 URL 변경 |
302 Found | 임시적으로 URL 변경 (GET 요청으로 변환 가능) |
307 Temporary Redirect | 메서드를 변경하지 않고 리디렉션 |
404 Not Found | 리소스를 찾을 수 없음 |
500 Internal Server Error | 서버 내부 오류 |
503 Service Unavailable | 서버가 처리 불가 |
HTTP 헤더 1 - 일반 헤더
- Host: 요청이 향하는 서버 도메인
- User-Agent: 클라이언트의 정보 (브라우저, OS)
- Referer: 현재 요청이 발생한 이전 웹 페이지의 URL
- Authorization: 인증 정보 (Bearer {token} 형식)
HTTP 헤더 2 - 캐시와 조건부 요청
1. 캐시 관련 헤더
- Cache-Control: no-cache, max-age=3600 등 캐시 정책 설정
- ETag: 캐시 검증을 위한 해시 값
- If-Modified-Since: 변경되지 않았다면 304 응답
- If-None-Match: ETag 값이 같으면 304 응답
2. 쿠키와 세션
- 쿠키(Cookie): 클라이언트가 서버에서 받은 데이터를 저장하고 다시 요청 시 전송한다.
- 세션(Session): 서버가 상태를 유지할 수 있도록 하는 기술.
- Set-Cookie: sessionId=abc123; Path=/; Secure 형식으로 서버에서 클라이언트에게 전달한다.
반응형
'코딩 도구 > 기술 & 정보 글 (Tech & Knowledge)' 카테고리의 다른 글
C++에서 endl vs \n 성능 차이 알아보기 (0) | 2025.02.12 |
---|---|
[코딩테스트] BFS에서 배열 크기를 +@로 설정하는 이유 (0) | 2025.02.09 |
이스케이프 문자 캐리지 리턴(Carriage Return, \r): 개념과 활용 (0) | 2025.01.23 |
청년 창업과 정부 과제 및 청년지원사업 (1) | 2024.12.30 |
나에게 소프트웨어란: 세상을 변화시키는 도구 (2) | 2024.09.13 |