
| 키워드 | 설명 | 예시 |
|---|---|---|
| HTTP | HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 통신 규약 | |
| HTTP Message | 클라이언트와 서버 간에 통신 기본 단위 | HTTP Request Message, HTTP Response Message |
| HTTP Message Header | 요청 or 응답으로 부가적인 정보 전송에 사용 | HOST, User-Agent |
| HTTP Request Method | 서버에게 원하는 작업을 알려주는 방식을 정의한 규칙 | GET, POST, PATCH, DELETE |
| HTTP Status Code | HTTP의 진행 상황을 나타내는 코드 → 성공, 실패(문법 오류, 서버 오류) etc.. | 200번대, 300번대, 400번대, 500번대 |
| HTTP URL | 리소스의 위치와 종류를 나타내는 주소 | |
| HTTP 쿠키 | 서버가 클라이언트에게 전송하는 데이터 조각 → 상태 정보 기억하게 도와줌 | |
| OSI 7 Layer | - 서로 다른 컴퓨터들끼리 통신할 수 있도록 만든 표준 - 통신에 대해서 계층으로 나누어 설명한 모델 | Application Layer, Presentation Layer, Session Layer, Transport Layer, Network Layer, Data Link Layer, Physical Layer |
HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 통신 규약
| 측면 | 설명 |
|---|---|
| 간단함 | 사람이 읽을 수 있을 정도로 간단함 |
| 확장 가능 (extensible) | HTTP 헤더는 확장 가능함. → 새로운 기능을 추가할 수 있음 |
| 상태 X, 세션 존재 (stateless) | 상태를 저장 X → 요청 사이에 연관이 없음 HTTP 쿠키가 세션을 만들도록 함 → 각각의 요청들에 세션이 존재 |
| 연결 | 신뢰할 수 있는 TCP에 연결 의존 |
클라이언트와 서버 간에 통신 기본 단위
| HTTP Message | HTTP Request/response |
|---|---|
![]() | ![]() |
HTTP 메시지 구조
| HTTP Message | HTTP Request/response |
|---|---|
![]() | ![]() |
| 헤더 유형 | 요청 or 응답 | 포함되는 것 |
|---|---|---|
| Request headers | 요청에서 사용되는 헤더 | 요청의 성격 + 목적 + 부가적인 정보 |
| Response headers | 응답에서 사용되는 헤더 | ? |
| General headers | 요청과 응답 모두에서 사용되는 일반적인 헤더 | 메시지 전체에 대한 정보 + (캐시, 연결 유지 등과 관련된 설정) |
| Representation headers | 응답 메시지의 본문 데이터와 관련된 헤더 | 데이터의 형식 + 언어 + 압축 |
| 헤더 이름 | 설명 | 예시 | 예시 설명 |
|---|---|---|---|
| Host | 요청하려는 서버 호스트의 이름, 포트번호 | Host: http://www.example.com/ | 해당 주소인 서버에게 요청을 보낼 것이다 |
| User-Agent | 클라이언트 프로그램 정보 (브라우저) | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 | 방문자가 사용하는 브라우저 종류 파악 |
| Accept | 클라이언트가 이해 가능한 컨텐츠 타입 | Accept: text/html, application/xhtml+xml, application/xml;q=0.9 | 텍스트, HTML, 또는 XML 형식의 문서를 보낼 수 있음 |
| Accept-Language | 클라이언트가 처리 가능한 언어 | Accept-Language: en-US,en;q=0.9 | 영어(미국)를 주 언어로 사용 그 다음으로 영어 |
| Accept-Encoding | 클라이언트가 서버로부터 응답을 받을 때의 데이터 압축 방법 | Accept-Encoding: gzip, deflate | gzip 또는 deflate 압축 방식 지원 |
| Connection | 클라이언트와 서버 간의 TCP 연결 관리 | Connection: keep-alive | 웹 페이지를 받은 후에도 연결 계속 유지 |
| Content-Type | 본문(body)의 데이터 유형 | Content-Type: application/json | 데이터의 형식: JSON 형식 |
| Server | 서버 소프트웨어와 버전 정보 | Server: Apache/2.4.29 (Ubuntu) | 서버 소프트웨어 버전 정보 → 우분투, Apache/2,4,29 |
| Age | 캐싱된 응답의 수명(단위: 초) | Age: 3600 | 3600초 |
| X-Cache-Info | 캐싱 프록시 서버가 요청에 대해 수행한 동 | X-Cache-Info: cache-hit | cache에 있음 (hit) |
웹 서버에게 원하는 작업을 알려주는 방식을 정의하는 규칙
HTTP Request Method 종류
| 함수 이름 | 설명 |
|---|---|
| GET | 데이터 조회 |
| PUT | 데이터를 전송, 리소스 생성 or 업데이트 |
| POST | 데이터를 전송, 리소스 전체 업데이트 |
| PATCH | 데이터를 전송, 리소스 부분 업데이트 |
| DELETE | 리소스 삭제 |
HTTP의 진행 상황을 나타내는 코드
| 범위 | 설명 |
|---|---|
| 100번대 | 정보 |
| 200번대 | 성공 |
| 300번대 | 리다이렉션 |
| 400번대 | 클라이언트 오류 |
| 500번대 | 서버 오류 |
주로 사용되는 Status Code
| Status Code | 설명 | 예시 |
|---|---|---|
| 200 | 요청 성공 | 게시글 조회 |
| 201 | 요청 성공, 새로운 리소스 생성 | 게시글 추가 |
| 202 | 요청 수신 but 처리 불가 (처리하는데 시간이 걸릴 때) | 게시글 추가 but 너무 많은 데이터로 인해 시간 소요 |
| 204 | 헤더 유효 but 요청에 대해 보내줄 수 있는 내용 X | 게시글 수정 |
| 400 | 클라이언트 코드 잘못 (잘못된 문법) 서버가 요청을 이해할 수 X | 게시글 작성 but 서버로 전달 X |
| 401 | 인증되지 않음 | 로그인 안함 |
| 403 | 인가되지 않음 | 접근 권한이 없음 |
| 404 | 요청받은 리소스를 찾을 수 X | 게시글 조회 but 조회하고 싶은 게시글이 존재 X |
| 429 | 너무 많은 요청을 보냄 | 과도한 클릭 |
| 500 | 서버 잘못 서버가 처리 방법을 알 수 X | 서버에서 처리 오류 |
| 501 | 요청 방법이 서버에서 지원 X | 지원하지 않는 HTTP 메서드로 요청이 왔을 때 |
| 503 | 서버가 요청을 처리할 준비 X (일시적) | 서버에 많은 트래픽이 몰림 서버 유지보수 상황 |
리소스의 위치와 종류를 나타내는 주소

[ 참고 자료 ]