서버/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.0 통신 흐름

 

HTTP 1.1 통신 흐름

: 연결이 지속적으로 유지된다.

HTTP 1.1  통신 흐름