반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 도커
- 쿠버네티스
- k8s
- devops
- centOS7
- Swift
- ios
- C++
- 운영체제
- Python
- 프로세스
- 부스트코스
- 도커 명령어
- 클라우드
- docker
- 컨테이너
- 도커 이미지
- 도커 컨테이너
- NGINX
- 인프라
- linux
- kubernetes
- 데브옵스
- 네트워크
- 리눅스
- AWS
- centOS
- os
- boj
- swift 클로저
Archives
- Today
- Total
귀염둥이의 메모
[Network] HTTP 프로토콜, 요청, 응답, GET, POST ... 본문
반응형
HTTP (HyperText Transfer Protocol)
- 클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어진다
- HTTP/1.1 버전을 가장 많이 쓰고 있음 (Persistent HTTP, Keep-Alive 지원)
- TCP 기반 (HTTP/3 : 구글이 만든 UDP 기반)
- 80번 포트를 주로 사용
- 클라이언트가 Request, 서버가 Response 형식으로 동작
- Stateless
Stateless
- 서버에 연결하고 요청해서 응답을 받으면 연결을 끊는 방식
- 말 그대로 상태를 저장하지 않는다
- 클라이언트의 이전 상태를 알 수 없음
- 로그인 정보 유지 불가
- 이를 해결하기 위해 쿠키, 세션 등을 이용
Keep-Alive (Persistent HTTP connection)
HTTP는 하나의 연결에 하나의 요청을 하는 것을 기준으로 설계가 되었다.
문서에 5개의 파일이 있다면 연결 후 다운로드하고 연결을 끊는 과정을 5번 반복한다.
그러면 TCP 통신 과정에서 많은 비용이 소모된다. 이를 해결하기 위해 Keep-Alive (Persistent HTTP connection) 기능이 등장했다
HTTP 주요 메서드
- GET ⭐️ : 서버로부터 데이터를 받아올 때 주로 사용
- 파라미터를 URI에 포함해서 요청
- 파라미터의 길이 제한이 있음
- POST⭐️ : 데이터를 생성/수정/삭제할 때 주로 사용
- 파라미터를 HTTP Body에 포함해서 요청
- HEAD : HTTPD Header만 응답 요청
- PUT : 데이터를 생성할 때 사용
- DELETE : 데이터를 서버에서 삭제할 때 사용
- OPTIONS : 요청 URI에서 사용할 수 있는 메서드 정보 요청
- ...
HTTP Request
- Request Line : ex) GET / HTTP/1.1
- 요청 메서드 : GET, POST,...
- 요청 URI
- HTTP 버전
- Request Header : key : value 형식
- Accept : 클라이언트가 받을 수 있는 데이터 타입
- Cookie : 쿠키
- Content-Type : 메시지 바디 데이터 타입 ex) JSON
- Content-Length : 메시지 바디 길이
- Body
HTTP Response
- Response Line : ex) HTTP/1.1 200 OK
- HTTP 버전
- 상태 코드
- 상태 메시지
- Response Header
- Content-Type : 메시지 바디 데이터 타입 ex) JSON
- Set-Cookie : 쿠키 설정
- ETag : 엔티;티 태그
- Reponse Body
- Content-Type에 따른 바디
- ex) { name : '홍길동, age : 20 ,... } => JSON
- 응답 코드
- 1xx : 단순 정보
- 2xx : 클라이언트 요청 성공
- 200 : OK
- 201 : Created
- 202 : Accepted
- 204 : 성공했으나 돌려줄 게 없음
- 3xx : 리다이렉션
- 300 : Multiple choices, 여러 리소스에 대한 결과 목록
- 301, 302, 303 : 리소스 위치가 변경된 상태
- 304 : 리소스가 수정되지 않았음
- 4xx : 클라이언트 요청 오류
- 400 : Bad Request, 요청 오류
- 401 : Unauthorized, 권한 없음
- 403 : Forbidden, 요청 거부
- 404 : Not Found, 리소스가 없음
- 5xx : 서버 오류
- 500 : Internal ServerError
- 501 : Not Implemented
- 503 : Service Unavailable
반응형
'CS > 네트워크' 카테고리의 다른 글
[Network] 프록시 서버(Proxy Server), Forward Proxy, Reverse Proxy (0) | 2021.08.30 |
---|---|
[Network] HTTP vs HTTPS, SSL/TLS, SSL/TLS handshake (0) | 2021.08.27 |
[Network] 대칭키 vs 공개키(비대칭키) 암호화 (1) | 2021.08.27 |
[Network] URI, URL, URN (0) | 2021.08.27 |
[Network] DHCP프로토콜 (0) | 2021.08.27 |
Comments