
1. HTTP란
❓ HyperText Transfer Protocol
- 웹상에서 데이터를 주고 받기 위한 Server/Client 모델을 따르는 전송 프로토콜
TCP/IP
기반
- 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)
2. 통신 방식

❓
- HTTP는
request/response 구조
로 되어 있다.
- Client가 HTTP request를 Server로 보내면 Server는 HTTP reponse를 보내는 구조
💡 Stateless
- 요청을 하면 응답을 받을 뿐, 요청/응답 끼리
연결되어 있지 않다.
재 요청
을 할 시 전의 요청/응답
에 대해서는 알지 못한다.
💡 Kepp Alive
- HTTP 1.1 부터 지원
- HTTP는
하나의 연결
에 하나의 요청
을 하는 것을 기준으로 설계가 되어, 문서에 20여개의 파일이 있다면 계속 연결하고 다운하고 연결을 끊어야한다. TCP통신 과정에서 비용이 많이 소모함. 따라서 Keep Alive 기능 등장
지정된 시간
동안 연결을 끊지 않고
요청을 계속
해서 보낼 수 있다.
3. HTTP 구조

❓ 전체 HTTP 구조
1. start line / status line
- 요청이나 응답의 상태를 나타낸다.
- start line (Request)
POST / HTTP/1.1
- Methos^요청 경로^HTTP Version
- status line (Response)
HTTP/1.1 [상태코드] OK
- HTTP Version^상태 코드^상태 메세지
Key-Value
구조
request
Header
- Accept : 클라이언트가 받을 수 있는 컨텐츠
- Cookie : 쿠키
- Content-Type : 메세지 바디 종류
- Content-Length : 메세지 바디 길이
- Connection : Keep Alive 기능 여부
- If-Modified-Since : 특정 날짜 이후에 변경됐을 때 만
response
Header
- Content-Type : 바디 데이터의 타입
- Content-Length : 바디 데이터 크기
- Set-Cookie : 쿠키 설정
- ETag : 엔티티 태그
3. empty line
- Header와 Body를
구분
하기 위한 빈 한줄
4. body
- 요청과 관련된 데이터나 응답과 관련된
데이터
또는 문서
를 포함
- 요청과 응답의 유형에 따라 선택적으로 사용
4. 대표 HTTP Mehods
❓ GET
- Server에 있는 데이터를
받기만 할 때
주로 사용하는 메소드
- 데이터 생성/수정/삭제 없이 받아오기만 할 때 사용
- 주로 데이터를 받아올때 사용되기 때문에 request에 body를 안 보내는 경우가 많다.
❓ POST
- 데이터를
생성/수정/삭제
할때 주로 사용되는 메소드
- 데이터를 생성 및 수정 할때 많이 사용하기 때문에 대부분의 경우 request body가 포함되서 보내짐
📌 여담
📚 참고