HTTP; Hypertext Transfer Protocol
- 웹에서 다양한 형태의 데이터를 주고 받을 수 있는 프로토콜이다
- 클라이언트-서버 구조로, 데이터를 주고받을 때 지켜야하는 규칙이다
HTTP 특징
클라이언트-서버 구조
- 클라이언트가 서버에 요청(Request)을 보내면, 서버가 적절한 응답(Response)을 보내는 구조이다
Stateless; 무상태성
- HTTP는 클라이언트나 서버의 상태를 저장하지 않기 때문에 응답과 요청이 독립적이다
- 응답 서버를 쉽게 바꿀 수 있어서 서버 확장성이 높지만, 클라이언트가 추가 데이터를 전송해야 한다
- 로그인과 같이 유저의 상태를 유지해야 하는 경우에는 클라이언트의 쿠키, 서버의 세션 또는 토큰을 이용해 상태를 유지해야 한다
Connectionless; 비연결성
- HTTP는 실제로 요청을 주고받을 때만 연결을 유지하므로, 응답을 주고나면 TCP/IP 연결을 끊어서 최소한의 자원으로 서버를 유지할 수 있다
- HTTP 1.0을 기준으로 HTTP는 연결을 유지하지 않는 모델인데, 트래픽이 많거나 큰 규모의 서비스를 운영할 때 비연결성이 한계를 보인다
한계
- 새로운 요청이 올 때마다 TCP/IP 연결을 새로 맺어야 하기 때문에 3 way handshake 시간이 소요된다
- 웹 브라우저로 사이트를 요청하면 HTML, CSS, JavaScript, 이미지 등 수많은 자원이 함께 다운로드 되는데, 자원을 각각 보낼 때마다 연결을 끊었다 연결하는 것을 반복해야 한다
Persistant Connections; 지속 연결
- HTTP 1.1에서 HTTP 지속 연결이 가능하게 되어 위의 한계점이 해결되었다
- 연결이 이루어지고 난 뒤 각각의 자원을 요청하고, 모든 자원에 대한 응답에 돌아온 후에 연결을 종료한다
HTTP Messages
HTTP의 요청과 응답은 Messages의 양식에 맞게 전달된다
| start line | 요청/응답의 상태 |
| headers | 전송에 필요한 모든 부가 정보 |
| empty line | 헤더와 본문을 구분하는 빈 줄 |
| body | payload, 요청/응답과 관련된 데이터 또는 문서 |
HTTP Requests

요청 Method
- GET : 서버로부터 리소스를 가져온다
- POST : 서버로 리소스를 전송한다
- PUT : 서버로 리소스를 전송해 기존 리소스를 변경(전체)한다
- PATCH : 서버로 리소스를 전송해 기존 리소스를 변경(일부)한다
- DELETE : 서버에서 리소스를 삭제한다
- HEAD : GET 메소드와 유사하지만, body를 제외하고 가져온다
- CONNECT : 클라이언트가 프록시를 통해 서버와 SSL 통신할 때 사용한다
- OPTIONS : 어떤 HTTP 메소드에 응답해줄 수 있는지 물을 때 사용한다
- TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 할 때 사용한다
HTTP Response

상태 코드
- 1xx: 정보, 요청을 받았으며 프로세스를 계속 처리중임
- 2xx: 성공, 요청을 성공적으로 처리함
- 3xx: 리다이렉트, 요청을 완료하기 위해 웹 브라우저에서 추가 작업이 필요함
- 4xx: 클라이언트 오류, 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
- 5xx: 서버 오류, 서버가 정상 요청을 처리하지 못함
'웹 개발' 카테고리의 다른 글
| TCP와 UDP (0) | 2024.05.22 |
|---|---|
| HTTP와 TCP/IP (0) | 2024.05.22 |
| DNS (0) | 2024.05.22 |
| 웹의 작동 원리 (0) | 2024.05.22 |
| 인터넷의 작동 원리 (0) | 2024.05.21 |