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
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 |
댓글