[HTTP] HTTP 이해하기 (1)
서버 개발자에서 웹 기술 개발자가 되기 위한 스텝. HTTP 이해하기 (1)
HTTP?
- Hypertext Transfer Protocol의 약자
- 서버와 클라이언트 사이에서 데이터를 주고 받기 위한 통신 규약정도로 정리 가능
- TCP/IP상에서 동작(OSI 7계층에서 어플리케이션 레벨)
- 다양한 형식의 데이터(텍스트, 사진, ... )를 주고 받을 수 있음
동작 방식
- 클라이언트/서버 모델
Client : URI를 기반으로 Request를 Server에 보냄
Server : Client으로 받은 Request를 처리하여 Response를 Client로 보냄
메시지 구조
- 아래와 같은 형태로
Start Line |
Header |
Blank Line |
Body |
Start Line : 요청라인 or 상태라인
- Request의 경우 (Method, Path, Version)
- Response의 경우 (Version, Status Code, Status Message)
Header : 추가로 서버쪽으로 전달하고자 하는 내용, 줄바꿈 문자로 Header를 구분
Blank Line : Header와 Body를 구분하기 위한 빈 라인
Body : 서버쪽으로 전달하고자 하는 내용 (생략 가능)
요청 예시)
GET /TEST HTTP/1.1 <--- Start Line
Host : www.exmaple.com:80 <--- Header
응답 예시)
HTTP/1.1 200 OK <--- Start Line
Content-Type : text/html <--- Header
<--- Blnak Line
<html> <--- Body
...
</html>
Method
- HTTP는 Method를 요청에 대한 의도를 명확히 할 수 있음
GET : 정보를 조회하기 위한 요청
POST : 정보를 삽입하기 위한 요청
PUT : 정보를 수정하기 위한 요청
DELETE : 정보를 삭제하기 위한 요청
특징
Connectless : 클라이언트는 요청에대해 응답을 받으면 연결을 끊음
Stateless : 서버/클라이언트 간 통신이 끝나면 상태를 저장하지 않음
- 많은 요청을 처리할 수 있지만, 클라이언트의 이전 상태를 알고 다음 요청을 처리가 힘듦
- Keep-alive, Session, Cookies !