서버/Web
1. HTTP 기본 개념
기로크
2022. 12. 24. 14:37
인터넷에서는 FTP, Telnet, HTTP, SMTP, POP 등의 다양한 프로토콜을 사용 한다.
그 중 가장 많이 사용하는 프로토콜은 HTTP이다.
HTTP는 Hypertext transfer protocol의 약자로 팀 버너스 리가 웹을 만들면서 개발한 프로토콜이다
HTTP 프로토콜 특징
- 문서 간의 상호 연결을 통해 다양한 텍스트, 이미지, 소리 등을 재생할 수 있다
- 0.9 버전 부터 사용 되었으며, HTTP 0.9는 단순 읽기 기능만 제공 하였다
- 1.0 이후 부터 읽기, 쓰기 와 같이 상호작용이 가능해졌다
Request
: 웹 서버에 데이터를 요청하는 패킷이다.
- HTTP 1.0 Request 메소드 : GET , HEAD, POST
- HTTP 1.1 Request 메소드 : GET , HEAD, POST, OPTIONS, PUT, DELETE, TRACE, CONNCECT
Response
: 클라이언트가 보낸 Request의 응답 패킷이다.
- Request 패킷에 담긴 주요 내용은 다음과 같다
- 프로토콜 버전
- HTTP 상태 코드
- 전달 데이터 형식
- 데이터
HTTP 상태 코드
상태 코드 | 함축적 의미 | 설명 |
100번대 | 정보 전송 | |
200번대 | 성공 | 클라이언트의 요청이 성공적으로 수신되어 처리되었음을 의미 |
300번대 | 리다이렉션 | 클라이언트의 요구사항을 처리하려면 다른 곳에 있는 자원이 필요하다는 것을 의미 |
400번대 | 클라이언트 측 에러 | 클라이언트가 서버에 보내는 요구 메시지를 완전히 처리하지 못한 경우, 클라이언트 측에서 오류가 발생한 것 |
500번대 | 서버 측 에러 | 서버 자체에서 생긴 오류 상황이나, 클라이언트의 요구사항을 제대로 처리할 수 없을 때 발생 |
상세 상태 코드
상태 코드 | 의미 | 상태 코드 | 의미 |
100 | Continue | 404 | NotFound |
101 | Switching Protocol | 405 | Method Not allowed |
200 | OK | 406 | Not Acceptable |
201 | Created | 407 | Proxy Authentication Required |
202 | Accepted | 408 | Request Time-Out |
203 | Not-Authorized Information | 409 | Conflict |
204 | No Contect | 410 | Gone |
205 | Reset Contect | 411 | Length Required |
206 | Partial Contect | 412 | Precondition Failed |
300 | Multiple Choices | 413 | Request Entity Too Large |
301 | Moved Permanently | 414 | Request URI Too Large |
302 | Moved Temporarily | 415 | Unsupported Media Type |
303 | See Other | 500 | Internal Server Error |
304 | Not Modified | 501 | Not Implemented |
305 | Use Proxy | 502 | Bad Gateway |
400 | Bad Request | 503 | Service Unavailable |
401 | Unauthorized | 504 | Gateway Time-Out |
402 | Payment Required | 505 | HTTP Version not Supported |
403 | Forbidden |
주요 코드 내용
200 OK | 클라이언트의 요청이 성공 |
201 Created | 클라이언트의 PUT 요청이 성공 |
301 Moved Permanently | 브라우저의 요청을 다른 URL로 항시 전달, Location 헤더에 다른 URL 정보 확인 가능 |
302 Moved Temporarily | 브라우저의 요청을 임시 URL로 변경, Location 헤더에 임시 URL 정보 기록 클라이언트가 다음에 같은 요청을 하게 되면 기존 URL로 돌아감 |
304 Not Modified | 브라우저가 서버에 요청한 자료에 대해 서버는 클라이언트 내에 복사된 캐시를 사용하면 된다는 것을 의미 서버는 If-Modified-Since 와 If-None-Match 요청 헤더를 사용하여 클라이언트가 가장 최근의 자료를 가지고 있는 지를 확인 |
400 Band Request | 클라이언트가 서버에 잘못된 요청을 했다는 것을 나타냄. 예를 들어 클라이언트가 URL 주소 중간에 빈 공간을 넣는 등 부적절한 방법으로 서버에 요청을 한 경우 400 Bad Request 응답 코드를 전달 |
401 Unauthorized | 서버가 클라이언트의 요청에 대해 HTTP 인증 확인을 요구하는 것을 의미 |
403 Forbidden | 클라이언트의 요청에 대해 접근을 차단하는 것을 나타낸다. |
404 Not Found | 클라이언트가 서버에 요청한 자료가 존재하지 않음을 나타냄 |
405 Method Not Allowed | 클라이언트가 요청에 이용한 메소드는 해당 URL에 지원이 불가능하다는 것을 나타냄 |
413 Request Entity Too Large | 클라이언트가 요청한 BODY 가 서버에서 처리하기에는 너무 크다는 것을 타나냄 |
500 Internal Server Error | 서버가 클라이언트의 요청을 실행할 수 없을 때 500 상태코드가 발생 |
HTTP 1.0 통신 흐름
: 추가 데이터를 전송 받기 위해, 새로운 연결을 만들어 낸다.
HTTP 1.1 통신 흐름
: 연결이 지속적으로 유지된다.