이번 포스팅에서는 HTTP와 관련된 내용을 알아보겠다.
1. HTTP 요청/응답 구조
HTTP는 클라이언트(보통 브라우저)가 서버에 요청을 보내고, 서버가 응답하는 Request/Response 구조를 따른다.
요청(Request) 구성
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
- 요청 라인: GET /index.html HTTP/1.1
- 요청 헤더: 부가 정보 (예: Host, User-Agent, Accept)
- 본문(Body): POST, PUT 등일 때 데이터가 포함됨
응답(Response) 구성
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
<html>...</html>
- 상태 라인: HTTP/1.1 200 OK
- 응답 헤더: 부가 정보 (예: Content-Type, Content-Length)
- 본문(Body): 실제 콘텐츠 데이터
2. HTTP 헤더(Header)
헤더는 요청/응답 메시지에 부가 정보를 담는 필드이다.
종류는 다음과 같다:
종류 | 예시 | 설명 |
일반 헤더 | Date, Connection | 요청과 응답 공통 |
요청 헤더 | Host, User-Agent, Accept | 요청 보낼 때 브라우저 정보 등 |
응답 헤더 | Server, Set-Cookie | 서버의 정보 및 추가 명령 |
엔티티 헤더 | Content-Type, Content-Length | 본문에 대한 정보 |
3. HTTP 메소드(Method)
클라이언트가 서버에 어떤 작업을 요청하는지 나타냄:
메소드 | 설명 |
GET | 자원을 조회 (본문 없음) |
POST | 자원을 생성, 서버에 데이터 전송 |
PUT | 자원을 대체 (업데이트) |
DELETE | 자원 삭제 |
HEAD | GET과 유사하지만 본문 없이 헤더만 요청 |
OPTIONS | 지원 메소드 확인 |
PATCH | 자원의 일부를 수정 |
4. HTTP 상태 코드(Status Code)
서버가 클라이언트의 요청에 대해 응답한 처리 결과를 숫자로 표시한다.
범위 | 의미 | 예시 |
1xx | 정보 (Processing 중) | 100 Continue |
2xx | 성공 | 200 OK, 201 Created |
3xx | 리다이렉션 필요 | 301 Moved Permanently, 302 Found |
4xx | 클라이언트 오류 | 400 Bad Request, 404 Not Found |
5xx | 서버 오류 | 500 Internal Server Error, 503 Service Unavailable |
5. HEAD 메소드
- GET 요청과 같은 응답 헤더를 받되, 본문(Body)은 포함하지 않음
- 용도:
- 파일 크기(Content-Length) 확인
- 링크 유효성 검사
- 서버 상태 점검 등
HEAD /image.png HTTP/1.1
Host: example.com
응답:
HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 20480
'Deep Dive > CS' 카테고리의 다른 글
[CS] 파일 디스크립터 (file descriptor) (0) | 2025.05.06 |
---|---|
[CS] 프록시(Proxy) (0) | 2025.05.06 |
[CS] OSI 7계층 모델 (0) | 2025.05.04 |
[Deep Dive] 쓰레드와 병렬 프로그래밍 - 4탄 동기화 기법 : 읽기/쓰기 락 (Read-Write Lock) (1) | 2025.05.03 |
[Deep Dive] 쓰레드와 병렬 프로그래밍 - 3탄 동기화 기법 조건 변수 (Condition Variable) (0) | 2025.05.03 |