1. HTTP(HyperText Transfer Protocol)
1) HTTP 개요
- 웹 상에서 정보를 주고 받을 수 있는 프로토콜
- 주로 HTML 문서를 주고 받음
- 서버와 클라이언트 사이에 요청과 응답을 주고 받는 프로토콜
- 클라이언트/서버 프로토콜
- = Request/Response 프로토콜
- 클라이언트와 서버는 개별 메세지를 교환하여 통신
- Request는 클라이언트가 보낸 메세지, Response는 서버가 클라이언트 요청에 대한 응답 메세지
- Request는 수신자(ex. 웹 브라우저)에 의해 시작
- = Request/Response 프로토콜
- TCP를 사용하며 80번 포트 이용하는 L7 애플리케이션 계층 프로토콜

2. HTTP 시스템 구성요소

- 클라이언트
- 사용자를 대신하여 작동하는 모든 도구로 주로 웹 브러우저에 의해 수행
- 웹 브라우저
- 항상 요청을 시작하는 개체
- 웹 페이지를 표시하기 위해 브라우저는 페이지를 나타내는 HTML 문서를 가져오라는 요청을 보냄
- 웹 서버
- 클라이언트의 요청에 따라 문서를 제공하는 서버
- 프록시
- 클라이언트와 서버 사이에 위치하여 내용을 전달하는 중개자 역할을 하는 컴퓨터
- 캐시 기능(데이터 임시 저장)
- 보안 기능(바이러스 검출, 부정 침입 방지, 유해 사이트 차단)
- 클라이언트와 서버 사이에 위치하여 내용을 전달하는 중개자 역할을 하는 컴퓨터
2. 요청(Request) / 응답(Response)
1) 요청(Request)
- 클라이언트가 서버에 보내는 메세지
Request | |
시작 줄(Start-line) | HTTP 메서드, 요청 URL, HTTP 버전 |
HTTP 헤더(Header) | Request 헤더, General 헤더, Entity 헤더 |
공백(empty line) | 메타 데이터 전송이 끝났음을 알리는 공백 |
바디(Body) | 서버에 전송할 데이터 |
2) 응답(Response)
- 클라이언트의 요청을 서버가 응답
Response | |
시작 줄(Start-line) | HTTP 버전, 상태 코드, 상태 텍스트 |
HTTP 헤더(Header) | Response 헤더, General 헤더, Entity 헤더 |
공백(empty line) | 메타 데이터 전송이 끝났음을 알리는 공백 |
바디(Body) | 클라이언트에 전달하는 데이터 |
3) HTTP 메서드
- 클라이언트가 서버에 요청의 목적 및 종류를 알리는 수단
- 메세지 Start-line에 표시
Method | 설명 |
GET | 리소스 요청 |
POST | 서버에 내용(파일 포함) 전송 |
HEAD | 메세지 헤더(문서 정보) 요청 |
PUT | 리소스 전체 수정 요청 |
DELETE | 리소스 제거 요청 |
OPTIONS | 서버에서 제공하는 메서드 목록 요청 |
TRACE | 요청 리소스가 수신되는 경로를 보여줌 |
CONNECT | 프록시 서버와 같은 중간 서버 경유 |
PATCH | 리소스 부분 수정 요청 |
4) HTTP 헤더
- key : value 방식으로 표기
- Request 헤더
헤더 명 | 설명 |
Host | 요청하는 호스트에 대한 호스트 명 및 포트번호 |
User-Agent | 클라이언트 소프트웨어(웹 브라우저, 모바일)의 이름과 버전 등의 정보 |
Accept | 클라이언트가 원하는 미디어 타입 및 우선순위 |
Accept-Language | 클라이언트가 원하는 가능한 언어 |
Accept-Encoding | 클라이언트가 원하는 문자 인코딩 방식 |
If-Modified-Since | 제시한 일시 이후로 변경된 리소스 요청 |
Cookie | 서버에 의해 Set-Cookie로 클라이언트에 설정된 쿠키 정보 |
Referer | 특정 페이지에서 링크를 클릭하여 요청할 때, 직전에 머물렀던 링크 주소 |
- Response 헤더
헤더 명 | 설명 |
Server | 서버 소프트웨어 정보 |
Access-Control-Allow-Origin | 요청을 보내는 프론트 주소와 백엔드 주소가 다르면 CORS 에러 발생 |
Set-Cookie | 서버에서 클라이언트로 쿠키 생성 |
Etag | HTTP 컨텐츠가 바뀌었는지 검사하는 태그 |
Allow | 서버에서 지원가능한 HTTP 메소드 리스트 |
- General 헤더
헤더 명 | 설명 |
Date | HTTP 메세지 생성 일시 |
Connection | 커넥션 정보(Keep-Alive, Token List) |
Cache-Control | 캐싱 관련 옵션 |
- Entity 헤더
헤더 명 | 설명 |
Content-Type | 미디어 타입 정보 |
5) HTTP 상태 코드
- 응답 메세지 중 Start-Line에 표기
- Request에 대한 처리 결과를 알려줌
- 1XX : 정보성
- 2XX : 성공
- 3XX : 리다이렉션
- 4XX : 클라이언트 오류
- 5XX : 서버 오류
'Network > HTTP' 카테고리의 다른 글
GET & POST (0) | 2024.06.27 |
---|