HTTP는 클라이언트와 서버 간의 통신을 위해 사용되는 프로토콜이다. 클라이언트가 브라우저를 통해 URI를 통해 특정 요청(Request)을 보내면, 서버는 해당 요청을 받아 처리하여 클라이언트에게 응답(Response)을 하는 형태로 동작한다.
Method | 설명 |
---|---|
GET | URI가 가진 정보를 검색하기 위해 요청하는 메소드 |
HEAD | GET 메소드와 동일하지만, 응답에 BODY가 없고 응답 코드와 헤더만 응답하는데 사용되는 메소드 |
POST | 요청된 자원을 생성하기 위한 메소드 |
PUT | 요청된 자원을 수정할 때 사용하며, 자원 전체를 갱신하는 데 사용되는 메소드 |
PATCH | PUT 메소드와 유사하지만, 자원의 일부를 수정하는 데 사용되는 메소드 |
DELETE | 요청된 자원을 삭제하기 위한 메소드 |
CONNECT | 동적으로 터널 모드를 교환하고 프록시 기능을 요청할 때 사용하는 메소드 |
TRACE | 원격 서버에 루프백 메시지를 호출하기 위해 테스트 용도로 사용하는 메소드 |
OPTIONS | 웹 서버에서 지원하는 메소드의 종류를 확인할 때 사용하는 메소드 |
서버가 요청을 클라이언트에서 성공적으로 수신하였고 서버에서 처리 중인 정보를 보낸다.
Status Code | 설명 |
---|---|
100 | Continue |
101 | Switching Protocols |
서버가 요청을 성공적으로 받았음을 알려준다.
Status Code | 설명 |
---|---|
200 | OK |
201 | Created |
202 | Accepted |
203 | Non-Authoritative Information |
204 | No Content |
캐싱된 파일을 새로 고침하여 확인하면 3xx대 코드를 받을 수 있다.
Status Code | 설명 |
---|---|
301 | Moved Permanently |
302 | Found |
303 | See Other |
클라이언트에서 서버에 잘못된 요청을 보내 서버가 요청을 해결할 수 없을 때 발생하는 코드이며, 클라이언트 측에서 발생하는 코드이다.
Status Code | 설명 |
---|---|
400 | Bad Request |
401 | Unauthorized |
402 | Payment Required |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
407 | Proxy Authentication Required |
408 | Request Timeout |
410 | Gone |
412 | Precondition Failed |
414 | URI Too Long |
클라이언트의 요청을 받고 서버에서 처리하지 못할 때 발생하는 코드이며, 서버 측에서 발생하는 코드이다.
Status Code | 설명 |
---|---|
500 | Internal Server Error |
501 | Not Implemented |
503 | Service Unavailable |
504 | Gateway Timeout |
505 | HTTP Version Not Supported |
사용자가 브라우저에 https://www.example.com을 입력하면:
1. 브라우저는 DNS 서버에 www.example.com의 IP 주소를 조회한다.
2. IP 주소를 얻으면 브라우저는 해당 IP 주소로 TCP 연결을 설정한다.
3. TCP 연결이 설정되면 브라우저는 HTTP GET 요청을 서버에 보낸다.
4. 서버는 요청을 처리하고, HTTP 200 OK 응답과 함께 HTML 데이터를 브라우저에 보낸다.
5. 브라우저는 받은 HTML 데이터를 해석하여 사용자에게 웹 페이지를 표시한다.
HTTP는 클라이언트와 서버 간의 통신을 위한 핵심 프로토콜이다. 요청과 응답 방식으로 동작하며, 다양한 HTTP 메소드와 상태 코드를 통해 웹 통신을 관리한다. HTTP의 비연결성 특성으로 인해 연결을 유지하지 않지만, 이를 통해 더 효율적인 통신이 가능하다. 이러한 HTTP의 작동 방식을 이해하면, 웹 개발과 네트워크 프로그래밍에서 더 나은 성능과 효율성을 달성할 수 있다.