티스토리 뷰
HTTP(Hypertext Transfer Protocol)
- 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜
- 프로토콜: 통신을 하기 위한 규약 ex) HTTP, FTP, SMTP, POP 등
- 클라이언트인 웹브라우저가 HTTP를 통하여 서버로부터 웹페이지나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달한다.
HTTP 통신방식
- 요청(Request)와 응답(Response)
- stateless
- 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에, 클라이언트와 서버 간의 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있다
- 연결을 끊어버리기 때문에, 클라이언트의 이전 처리 상황을 알 수가 없다. 그저 요청에 대해 독립적으로 응답만 보내줌
- 항상 필요한 데이터를 포함시켜서 보내야 하는 문제를 해결하기 위해, 쿠키(cookie)나 세션(session)등을 사용해서 필요한 진행과정, 데이터를 저장한다
HTTP 요청 구조
- Method
- HTTP 요청이 의도하는 액션을 정의하는 부분
- GET, POST, PUT, DELETE 등
- Path
- HTTP 요청의 목표 주소
- Header
- HTTP 요청 그 자체에 대한 정보를 담고 있는 부분
- KEY: VALUE
- Host: localhost:8080 (필수)
- User-Agent: Mozila/5.0 (요청을 보내는 클라이언트의 정보, 예를 들면 웹브라우저)
- Accept-Language: fr
- Content-length: 1434
- Body
- HTTP 요청이 전송하는 데이터를 담고 있는 부분
- 전송하는 데이터가 없으면 (like GET, HEAD, DELETE) Body는 비어있음
HTTP 응답 구조
- Status code, Status message
- HTTP 응답 매시지 상태를 요약해주는 부분
- HTTP 상태 코드
- Header
- request header와 동일
- 단, HTTP response 시에만 사용되는 헤더: User-Agent 대신 Server 헤더 사용
- Content-Type: text/html
- Server: Apache
- Body
- request body와 동일
- 전송하는 데이터가 없으면 비어있음
주요 HTTP 메소드
- GET : 서버로부터 정보를 요청할 때 사용 (SELECT)
- 데이터의 생성, 수정, 삭제 등의 변경사항 없이 단순히 데이터를 받아오는 경우 사용
- 데이터를 받아올 때 사용되어서 HTTP response의 body가 비어있는 경우가 많음
- 최초의 웹서버는 GET 방식만 지원했었음
- POST : 정보를 밀어넣을 때 사용 (INSERT)
- 데이터를 생성, 수정, 삭제 요청을 할 때 사용
- PUT : 정보를 업데이트할 때 사용 (UPDATE)
- DELETE : 정보를 삭제할 때 사용 (DELETE)
- HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용
- OPTIONS : 웹서버가 지원하는 메소드들이 무엇이 있는지 알고자 할 때 사용
- TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용