06. HTTP 프로토콜
[HTTP 프로토콜 특징]
- HyperText Transfer Protocol 하이퍼텍스트 전송 프로토콜
- www에서 쓰이는 핵심 프로토콜
- 오늘날 다양한 종류의 데이터를 MIME으로 정의해 전송하며 많은 웹 애플리케이션에서 사용
- 클라이언트/서버모델로 Request/Response 동작에 기반한 서비스 제공
- 불특정 다수를 대상으로 하는 서비스에 적합
- Connectionless (비연결성) 요청-응답 후 연결을 끊음. 연결을 유지하느라 트래픽을 점유하지 않음.
- Stateless(무상태) 이전 상태를 유지하지 않음. 전 정보를 유지하기 위해 쿠키, 세션 등과 같은 기술이 필요
[HTTP 1.1발전과정]
- HTTP 1.0 의 통신부하 문제를 보완한 버전. 기존 TCP연결을 끊지 않음. (connection : Keep-Alive 필드 사용)
※ 통신부하문제?
HTTP 1.0의 경우 TCP연결까지 끊어 연결수립, 동작, 연결해제의 과정을 반복함.
요청 후 응답을 받으면 연결을 해제하기 때문에 이어지는 통신에서도 연결수립과정이 계속 들어감
* Keep-Alive 헤더를 이해하지 못하는 멍청한 프록시 문제
[통신과정]
[요청 프로토콜]
- 클라이언트의 정보를 담음
Request Line
요청타입 | 공백 | URI | 공백 | HTTP 버전 |
요청타입
- GET : 클라이언트가 서버에게 정보 요청 GET /category/game HTTP/1.1
- POST : 클라이언트가 서버에게 정보 전송 POST /user/login HTTP/1.1
PUT 방식은 일반적으로 사용하는 업로드가 아님!
URI
- 넷 상에서 특정 자원을 나타내는 유일한 주소
- 형식 scheme://host[:port][/path][?query]
- scheme : 요청형식 지정 (7계층 프로토콜의 종류를 지정해줌 ftp, http, https...)
- host : 일반 사용자는 [도메인 주소] 입력 > DNS > [IP주소] 변환
- port : 일반 사용자가 따로 입력하지 않아도 웹브라우저가 80이나 443으로 알아서 붙여줌
- query : 클라이언트 쪽에서 전달하는 데이터. ?로 시작하고 &로 연결
[응답 프로토콜]
- 웹페이지의 정보를 담음
Status Line
HTTP 버전 | 공백 | 상태코드 | 공백 | 상태문구 |
상태코드 종류
- 200~299 : 클라이언트 요청 정상처리
- 400~499 : [에러] 클라이언트의 요청이 불완전
- 500~599 : [에러] 서버쪽 오류
대표적인 상태문구
- 상태코드 : 200 / 상태문구 : OK
- 상태코드 : 403 / 상태문구 : Forbidden
- 상태코드 : 404 / 상태문구 : Not Found
- 상태코드 : 408 / 상태문구 : Request Timeout (클라이언트가 서버에 보내는 데이터 요청시간 초과)
- 상태코드 : 500 / 상태문구 : Internal Server Error
- 상태코드 : 503 / 상태문구 : Service Unavailable (최대 세션 수 초과)
- 상태코드 : 504 / 상태문구 : Gateway Timeout (서버간 데이터 전달 요청시간 초과)
[헤더]
- 이전 패킷의 헤더와 다름. 다양한 옵션정보가 들어감
- 요청 프로토콜 : 일반, 요청, 항목
- 응답 프로토콜 : 일반, 응답, 항목
헤더 종류 | 설명 | ||
일 반 |
일반적인 정보 | Content-Length | 메시지 바디 길이 |
Content-Type | 메시지 바디에 들어있는 컨텐츠 종류(HTML문서는 text/html) | ||
요 청 |
클라이언트 정보 | Cookie | 서버로부터 받은 쿠키를 다시 서버에게 전송 |
Host | 요청된 URL에 나타난 호스트명 상세 표시 | ||
User-Agent | 클라이언트 프로그램 식별 정보 제공 | ||
응 답 |
서버 정보 | Server | 웹서버의 프로그램정보 포함(보안상 밝히지 않을 수도 있음) |
Set-Cookie | 쿠키를 생성하고 브라우저에 전송 |
'개념정리 > 네트워크' 카테고리의 다른 글
[네트워크] 05. NAT와 포트포워딩 (0) | 2020.11.02 |
---|---|
[네트워크] 04-03. TCP 프로토콜 (0) | 2020.10.29 |
[네트워크] 04-2. UDP 프로토콜 (0) | 2020.10.28 |
[네트워크] 04. OSI 7 Layer - 4계층 Transport (0) | 2020.10.22 |
[네트워크] 03-4. ICMP 프로토콜 (0) | 2020.10.20 |