728x90
반응형
SMALL
# HTTP
HyperText Transfer Protocol
HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.
HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, Client-Server 간 데이터 통신을 위한 프로토콜이다.
## 특징
- TCP/IP를 이용하는 응용 프로토콜이다.
- TCP/IP : 컴퓨터 사이의 통신 표준 및 네트워크 라우팅, 상호 연결에 대한 규칙을 지정한 프로토콜
- TCP : 전송 계층
- IP : 인터넷 계층
- TCP/IP : 컴퓨터 사이의 통신 표준 및 네트워크 라우팅, 상호 연결에 대한 규칙을 지정한 프로토콜
- 연결을 유지 하지 않고 요청/응답 방식으로 동작하는 무상태 프로토콜이다.
- 쿠키 및 세션으로 보완
## 장점
- 불특정 다수를 대상으로 하는 서비스에 유리하다.
- Cilent <-> Server 간 연결을 유지하지 않기에 최대 연결수보다 더 많은 요청과 응답 처리가 가능하다.
## 단점
- 연결을 끊기 때문에 클라이언트의 이전 상황을 알 수 없다.
## Method
- GET (= READ)
- RequestBody가 아닌, Header 영역에 QueryString이 포함되어 전달된다.
- 즉, URL 뒤에 QueryString 정보가 노출되며, Header이기에 데이터 양에 한계가 있다.
- POST (= CREATE)
- RequestBody에 정보를 저장하여 전달한다.
- Header 영역에는 Body 영역에 저장된 데이터 타입(content-type)을 명시해야 한다.
- PUT (= UPDATE)
- 정보 전체 수정
- DELETE (=DELETE)
- PATCH (=UPDATE)
- 정보 일부 수정
- HEADER
- Header Read
## 데이터 포맷
- Request
- Header : Request Method, Resuest URL, HTTP 버전, 그 외 Header 정보
- Body : 전달할 Data (GET 방식은 URL에 자원을 전달하는 방식이라 Body가 없다)
- Response
- Header : HTTP 버전, Response Status Code, Response 메시지, 그 외 날짜 및 콘텐츠 타입 정보
- Body : HTML과 같은 본문 정보
### Status Code
- 1xx (조건부 응답) : 요청을 받았으며 계속 작업을 진행한다.
- 2xx (성공) : Client가 요청한 동작을 수신하여 성공적으로 수행했다.
- 200 - OK
- 3xx (리다이렉션 완료) : Client는 요청을 마치기 위해 추가 동작을 취해야한다.
- 302 - Found : 다른 페이지 이동
- 304 - Not Modified : 수정되지 않음
- 4xx (Client 오류) : Client 요청에 오류가 있다.
- 400 - Bad Request : 잘못된 요청
- 403 - Forbidden : 접근 권한 없음
- 404 - Not Found : 해당 페이지 없음
- 5xx (Server 오류) : Server가 유효한 Client 요청을 제대로 수행하지 못했다.
- 500 - Internal Service Error
## Version
- HTTP/1.0
- GET, POST, HEAD 지원
- 각 요청마다 연결을 맺고 끊는 비효율적인 비 연결 지향 방식의 문제점 존재
- HTTP/1.0+
- Keep-Alive 커넥션을 지원함으로써 매번 연결을 맺는 설계상의 문제 해결
- HTTP/1.1
- OPTION, PUT, DELETE 추가 지원
- Keep-Alive 기본 지원 (Header : Connection:Keep-Alive)
- 1회의 3-way hanshaking 과정으로 여러 요청/응답 처리 가능
- 가장 많이 사용
- HTTP/2.0
- 멀티플렉싱 스트림, 헤더 압축, 서버 푸시 등의 성능 향상에 초점을 맞춘 기능 추가
참고
728x90
반응형
LIST
'Develope > ETC' 카테고리의 다른 글
[RESTful] REST API (0) | 2022.08.12 |
---|---|
[Computer Science] URL vs URI (0) | 2022.08.12 |
[객체 지향] SOLID 법칙 - 객체 지향 설계 5대 원리 (0) | 2022.08.12 |
[Computer Science] 운영체제 (0) | 2022.08.09 |
[Deploy] Deploy & CI & CD 배포 관련 용어 정리 (0) | 2021.01.31 |