HTTP (Hypertext Transfer Protocol) #2

filoscoder·2019년 12월 5일
0

Basic Web-Architecture

목록 보기
2/2
post-thumbnail

HTTP(Hypertext Transfer Protocol)는 분산되고 협업적인 하이퍼미디어 정보 시스템을 위한 애플리케이션 프로토콜이다. HTTP는 월드 와이드 웹(World Wide Web - WWW)을 위한 데이터 통신의 기반으로서, 이미지, 사운드, 비디오 및 기타 파일을 전송하기 위한 규약이다. 웹 사용자가 웹 브라우저를 열자마자 사용자는 간접적으로 HTTP를 이용하고 있다. HTTP는 TCP/IP 프로토콜 모음(인터넷의 기본 프로토콜) 위에서 실행되는 애플리케이션 계층(Application Layer)의 프로토콜이다.

🔗 참고: 웹과 네트워크의 기본(TCP/IP) 🔌

무상태 프로토콜 (Stateless Protocol) 🤦‍♂️

HTTP는 각 명령이 그 앞에 온 명령어를 전혀 알지 못하고 독립적으로 실행되기 때문에 무상태 프로토콜이라고 불린다. 무상태 프로토콜은 여러 요청이 있는 동안 HTTP 서버가 각 사용자에 대한 정보나 상태를 보유하도록 요구하지 않는다. 그러나 일부 웹 애플리케이션은 예를 들어 HTTP 쿠키 (Cookie) 또는 웹 양식 내의 숨겨진 변수를 사용하여 상태 또는 서버 측 세션(Session)을 구현하여 상태가 지속적인것처럼 보이게 구현한다.

HTTP / HTTPS? 🔐

HTTPSHyper Text Transfer Protocol Secure를 의미한다. 기본적으로 HTTP의 보안을 강화한 버전이다. 브라우저와 웹 사이트 간의 통신은 TLS(Transport Layer Security) 또는 이전 버전의 SSL(Secure Sockets Layer)에 의해 암호화된다.

HTTP 메시지 포맷 📨

HTTP 프로토콜에서는 클라이언트 측에서 요청을 하기 위한 메시지를 서버로 보내고, 서버 측에서는 응답을 하기 위한 메시지를 클라이언트로 보낸다.

▶ 요청 방법 (Request methods)

HTTP는 특정 리소스에 대해 수행하고자 하는 작업을 나타내는 요청 방법을 정의한다. 영어의 명사의 형태이지만, 이러한 요청 방법을 HTTP 동사라고 부르기도 한다.

GET
방법은 URL(URI)에 지정한 값 활용하여 서버에서 정보를 검색할 때 사용한다. 요청시 URL 주소창에 display 된다.

HEAD
방법은 GET 요청과 동일하지만 응답 본체(BODY)가 없는 응답을 요구한다. 빠르게 사이트가 활성화 되어있는 여부를 확인할 때 유용하다.

POST
방법은 특정 정보를 제출하기 위해 사용되며, 종종 상태 또는 서버의 여러 변화를 야기한다. 요청시 URL 주소창에 보이지 않다. 로그인 할 때 필요한 정보를 제출할때 주로 사용된다.

PUT
방법은 POST와 유사한 전송 구조를 가지기 때문에 헤더 이외에 메시지(데이터)가 함께 전송된다. 서버에 지정한 콘텐츠를 저장하기 위해 사용되며 홈페이지 변조에 많이 악용되고 있다.

DELETE
방법은 지정된 리소스를 삭제한다. PUT과 반대 개념의 메소드이다.

CONNECT
방법은 대상 리소스로 식별된 서버에 대한 터널을 설정한다. 웹 서버에 프락시 기능을 요청할 때 사용된다.

OPTIONS
방법은 대상 시스템에 통신 메소드 방법을 확인하는 데 사용된다.

TRACE
TRACE 방법은 대상 리소스의 경로를 따라 메시지 루프백(Loopback) 테스트를 수행한다.

PATCH
방법은 리소스에 부분 수정 사항을 적용하는 데 사용된다.

Request method summary 🔗 참조

◀ 응답 방법 (Response methods)

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다:
1. 정보를 제공하는 응답
2. 성공적인 응답
3. 리다이렉트
4. 클라이언트 에러
5. 서버 에러

Response method

응답 코드설명
Information responses
100Continue (클라이언트로 부터 일부 요청을 받았으며 나머지 정보를 계속 요청함)
101Switching protocols
Successful responses
200OK(요청이 성공적으로 수행되었음)
201Created (PUT 메소드에 의해 원격지 서버에 파일 생성됨)
202Accepted(웹 서버가 명령 수신함)
203Non-authoritative information (서버가 클라이언트 요구 중 일부만 전송)
204No content, (사용자 요구 처리하였으나 전송할 데이터가 없음)
Redirects
301Moved permanently (요구한 데이터를 변경된 타 URL에 요청함)
302Not temporarily
304Not modified (컴퓨터 로컬의 캐시 정보를 이용함, 대개 gif 등은 웹 서버에 요청하지 않음)
Client errors
400Bad request (사용자의 잘못된 요청을 처리할 수 없음)
401Unauthorized (인증이 필요한 페이지를 요청한 경우)
402Payment required(예약됨)
403Forbidden (접근 금지, 디렉터리 리스팅 요청 및 관리자 페이지 접근 등을 차단)
404Not found, (요청한 페이지 없음)
405Method not allowed (혀용되지 않는 http method 사용함)
407Proxy authentication required (프락시 인증 요구됨)
408Request timeout (요청 시간 초과)
410Gone (영구적으로 사용 금지)
412Precondition failed (전체 조건 실패)
414Request-URI too long (요청 URL 길이가 긴 경우임)
Server errors
500Internal server error (내부 서버 오류)
501Not implemented (웹 서버가 처리할 수 없음)
503Service unnailable (서비스 제공 불가)
504Gateway timeout (게이트웨이 시간 초과)
505HTTP version not supported (해당 http 버전 지원되지 않음)
profile
Keep thinking code should be altruistic

0개의 댓글