Free Lines Arrow
본문 바로가기
Development/WEB

[WEB] HTTP 란?

by skahn1215 2021. 7. 7.
728x90
반응형

HTTP(HyperText Transfer Protocol)

 

  • HTTP(HyperText Transfer Protocol) 는 W3(웹) 상에서 정보(데이터를) 주고 받을수 있는 프로토콜이다.
  • 주로 TCP를 사용하고 HTTP/3 부터는 UDP를 사용하며, 80번 포트를 사용한다.
  • HTTP 는 타입이나 종류에 상관없이 데이터를 주고 받을수 있다.
  • html, 이미지, 동영상, 오디오, 텍스트등

 

 

 

메세지 구조

 

  • 시작줄(start-line): 어떤 메세지 인지 알려준다.
  • 헤더블록(Header): 속성을 나타낸다.
  • 본문(Body): 데이터를 포함한다.

 

 

특징

  • TCP/IP를 이용하는 응용계층 프로토콜이다. socket을 이용해 연결된다.
  • 비연결성 이다.
  • 무상태이다.

 

비연결성

  • 요청을 하고 서버가 응답을 해주면 해당 연결을 끊어버리는 방식이다.

 

  • 장점
    비연결인 이유는 서버에 많은 클라이언트가 연결되면 리소스가 많이 발생하게 된다.
    리소를줄여 더많은 연결을 보장 할 수가 있다.

 

  • 단점
    매번 연결-> 연결시도 -> 해제 과정을 거치기 때문에 오버헤드가 발생한다.

 

무상태 (stateless protocol)

  • 무상태는 사용자와 서버간의 연결 유지가 되지 않기때문에 무상태라고 한다.
  • 앞서 요청한 것과 상관없이 독립적인 트랜잭션으로 취급한다.
  • 사용자가 인증을 해도 상태유지가 안되기 때문에 쿠키 혹은 세션을 이용해 인증을 해결해야한다.

 

  • 장점
    진행중인 송 수신 정보를 처리하기 위해 저장공간을 동적으로 할당할 필요가 없다.
    그렇기 때문에 서버 디자인을 단순하게 할 수 있다.

 

  • 단점
    매 요청마다 추가 정보를 포함할 필요가 있다. 
    해당 부가정보는 서버가 해석해야한다.

 

 

 

 

HTTP 1.0 과 HTTP 1.1의 차이

버전 발표일자 3way-handshaking 횟수 업데이트 내용
HTTP 1.0 1996 매번 연결할때마다 발생  
HTTP 1.1 1999 한번만 발생 Keep-alive 가 추가됨

 

Keep-alive란?

HTTP 헤더의 일종이다.

디바이스간 데이터 링크가 잘 동작 하고 있는지 확인한다.

데이터링크가 끊어지는 것을 방지 하기 위해 디바이스 간에 서로 주고 받는 메시지를 말한다.

 

 

 

 

 

 

동작방식

 

 

Request 메소드의 종류

Method 설명
GET 방식: URL 뒤에 ? 붙여 문자열을 알리고 키=값&키=값 형태로 query string 문을 붙여 보낸다. 
역할: Select, Read 역할을 한다. 데이터 조회
예) /members?name=ASK&email=a@naver.com
POST 방식: HTTP 프로토콜 요청 메시지의 Body에 데이터를 넣어 전달 한다. 
보안이 뛰어나 대량으로 데이터를 보낼때 주로 사용한다.
역할: Create 역할을 한다. 데이터 저장
예) 사용자가 form에 회원가입 목록을 채우고 전송버튼을 눌른다. 
HEAD 방식: Get 메서드와 동일한 요청이지만 응답받을때 head 정보만 받는다.
OPTIONS 방식: 시스템에서 지원하는 메소드 종류를 확인 할 수 있다.
PUT 역할: Update, 데이터를 수정할때 사용한다.
DELETE 역할: Delete 자원을 삭제할때 사용한다.
예) /members/id 해당 id 삭제 DELETE 일 경우
TRACE 방식: 원격지 서버에 루프백 메시지 호출하기 위해 테스트 용으로 사용
CONNECT 방식: 동적으로 터널 모드를 교환, 프락시 기능 요청을 사용

 

 

 

Response 응답의 종류

2XX (성공) 설명
200 성공:
요청을 제대로 처리 했다는 뜻.
203 신뢰할수없는정보:
서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있다.
204 콘텐츠없음:
서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않는다.
205 콘텐츠 재설정:
서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는다.
204 응답과 달리 이 응답은 요청자가 문서 보기를 재설정할 것을 요구한다
(예: 새 입력을 위한 양식 비우기).
206 일부 콘텐츠:
서버가 GET 요청의 일부만 성공적으로 처리했다.

 

3XX (리다이렉션) 설명
301 영구이동:
Moved Permanently 요청한 자원이 새 URL 존재
303 기타 위치 보기:
요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시한다. 
304 수정되지 않음:
마지막 요청 이후 요청한 페이지는 수정되지 않았다.
서버가 이 응답을 표시하면 페이지의 콘텐츠를 표시하지 않는다.
요청자가 마지막으로 페이지를 요청한 후 페이지가 변경되지 않으면
이 응답(If-Modified-Since HTTP 헤더라고 함)을 표시하도록 서버를 구성해야 한다.

 

4XX 설명
400 잘못된 요청:
서버가 요청의 구문을 인식하지 못했다.
401 권한 없음:
이 요청은 인증이 필요하다.
서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다.

403 Forbidden, 금지됨:
서버가 요청을 거부하고 있다.
예를 들자면, 사용자가 리소스에 대한 필요 권한을 갖고 있지 않다

405 허용되지 않는 방법:
요청에 지정된 방법을 사용할 수 없다. 예를 들어 POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우, 또는 읽기 전용 리소스에 PUT 요청을 보내는 경우에 이 코드를 제공한다.
409 충돌:
서버가 요청을 수행하는 중에 충돌이 발생했다.
서버는 응답할 때 충돌에 대한 정보를 포함해야 한다.
서버는 PUT 요청과 충돌하는 PUT 요청에 대한 응답으로 이 코드를 요청 간 차이점 목록과 함께 표시해야 한다.

413 요청 속성이 너무 큼:
요청이 너무 커서 서버가 처리할 수 없다.
422 처리할 수 없는 엔티티

 

5XX  
500 내부 서버 오류:
서버에 오류가 발생하여 요청을 수행할 수 없다.
501 구현되지 않음:
서버에 요청을 수행할 수 있는 기능이 없다.
예를 들어 서버가 요청 메소드를 인식하지 못할 때 이 코드를 표시한다.
502 서비스를 사용할 수 없음:
오버로드되었거나 유지관리를 위해 다운되었기때문에 현재 서버를 사용할 수 없다. 이는 대개 일시적인 상태이다.

 

 

 

 

참고: 위키백과

https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

 

HTTP 상태 코드 - 위키백과, 우리 모두의 백과사전

아래는 HTTP(하이퍼텍스트 전송 프로토콜) 응답 상태 코드의 목록이다. IANA가 현재 공식 HTTP 상태 코드 레지스트리를 관리하고 있다. 모든 HTTP 응답 코드는 5개의 클래스(분류)로 구분된다. 상태 코

ko.wikipedia.org

 

728x90
반응형

'Development > WEB' 카테고리의 다른 글

[WEB] HTTPS  (0) 2021.08.17
[WEB] HTTP 와 HTTPS 의 차이점  (0) 2021.08.17
[WEB] Rest API 와 설계  (0) 2021.08.09
[WEB] JSP 란?  (0) 2021.07.27
[WEB] Servlet 이란?  (0) 2021.07.26

댓글