728x90
개요
CS 스터디에서 1주차 진행 내용으로 HTTP 프로토콜의 특징과 상태코드를 이야기하게 되었습니다. 제가 공부했던 내용을 한번 정리해 봤습니다 !
본론
HTTP란?
Hypertext Transfer Protocol의 약자로 번역하면 하이퍼텍스트를 기반으로 데이터를 전송하는 프로토콜을 말한다. 월드와이드웹(WWW)에 내장되어있고, 인터넷 상에서 문서(이미지, 영상, 오디오, html문서, 텍스트 등 어떤 종류의 데이터든 가능)를 주고받기 위해 사용된다.
HTML의 특징
1. Server-Client Model (클라이언트-서버 모델)
: 클라이언트가 서버로 요청을 하면 서버가 클라이언트로 응답하는 구조
- 서버 : 클라이언트의 요청을 받아서 해석하고 응답하는 SW가 설치된 컴퓨터(ex. Apache, nginx)
- 클라이언트 : 서버에 요청하는 클라이언트 SW(ex. Chrome, safari)가 설치된 컴퓨터
2. Stateless (무상태 프로토콜)
: 서버가 클라이언트의 상태를 보존하지 않는다.
- 서버의 확장성이 높아진다
- 꼭 처음에 연결된 서버가 아니더라도 클라이언트를 서브할 수 있다)
- Scale-out(수평적 확장)이 유리하다
- 클라이언트가 주기적으로 데이터를 보내야 한다.
- 지금은 쿠키, 세션, 토큰(Oauth, JWT)를 통해 상태를 기억한다.
- <-> Stateful(상태 유지)
- 항상 서버가 같도록 유지되어야함.
- 장애가 발생했을 때 서버가 바뀌면 상태정보가 날아간다
3. Connectionless (비연결성)
: 클라이언트와 서버가 한 번 연결을 맺은 후, 클 라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버린다.
- 연결을 유지하기 위한 리소스를 줄임으로써 더 많은 연결을 할 수 있다.
- 서버는 클라이언트를 기억하고 있지 않으므로 동일한 클라이언트의 모든 요청에 대해, 매번 새로운 연결을 시도/해제의 과정을 거쳐야한다.
- 3 Way Handshake(정확한 전송을 보장하고자 상대방 컴퓨터와 사전에 세녕르 수립하는 과정) 시간이 추가된다.
- 트래픽이 많은 큰 규모의 서비스일수록 한계를 보인다.
- KeepAlive
- 지정된 시간동안 서버와 클라이언트 사이에서 패킷 교환이 없을 경우 상대방의 안부를 붇기 위해 패킷을 주기적으로 보내고 패킷에 반응이 없을 시 접속을 끊어내는 KeepAlive 속성을 통해 한계를 극복할 수 있다.
- <-> Connection Oriented (연결지향)
- 클라이언트가 요청을 보내지 않아도 계속 연결을 유지하기 때문에 서버 자원 소모가 더 크다
HTML의 메소드
: 클라이언트가 서버로 요청할 때 사용하는 메소드
대표 메소드
- Get
- 데이터를 읽어올 때 사용 (DB sql문의 Select와 같음)
- Post
- 데이터를 추가할 때 사용 (DB sql문의 insert와 같음)
- Put
- 데이터를 변경할 때 사용 (DB sql문의 update와 같음)
- Delete
- 데이터를 삭제할 때 사용 (DB sql문의 delete와 같음)
HTML의 상태코드
: 서버와 클라이언트 사이의 연결 상태를 코드로 표현한 것.
1. 규칙
- 3자리의 숫자로 만들어져 있다.
- 첫번째 자리는 1~5로 구성되어있다.
- 1xx(정보) : 서버가 요청을 받았고, 프로세스를 계속 진행하라는 의미
- 2xx(성공) : 성공적으로 응답이 완료되었다
- 3xx(리다이렉션) : 요청 완료를 위해 추가 조치(ex. 요청에대한 응답 로케이션이 다르니 개선하라)가 필요하다
- 4xx(클라이언트오류) : 클라이언트 측의 문제(ex. 요청의 문법오류, 요청 처리불가 경우)가 있다.
- 5xx(서버오류) : 서버측에 문제가 있다.
2. 대표 코드
- 1xx
- 100 : Continue
- 현재까지 진행에 문제가 없음을 의미한다.
- 102 : Processing
- 요청 수신했지만 처리중이라 아직 제대로 응답을 알려줄 수 없다
- 100 : Continue
- 2xx
- 200 : OK
- 요청과 응답이 성공적으로 이뤄졌따.
- 201 : Created
- 요청 성공 + 새 리소스 생성
- 202 : Accepted
- 요청 성공. but, 요청에 대한 행동은 불가
- 200 : OK
- 3xx
- 300 : Multiple Choice
- 요청 성공 but, 응답의 경우가 여러개라 응답할 수 없음
- 302 : Found
- 요청한 URI(자원의 위치를 알려주기 위한 프로토콜)이 일시적으로 변동되었다.
- 300 : Multiple Choice
- 4xx
- 403 : Forbidden
- 클라이언트가 해당 주소로 접근할 권한이 없다.
- 404 : Not Found
- 요청한 리소스를 서버에서 찾을 수 없다.
- 403 : Forbidden
- 5xx
- 502 : Bad Gateway
- 게이트웨이로부터 잘못된 응답을 수신했다.
- 503 : Service Unavailable
- 서버가 요청을 처리할 준비가 되지 않았다.
- 502 : Bad Gateway
마무리
이번주에 공부한 내용은 여기까지 입니다! 급하게 oneNote에 적어서 그런지 사진 캡쳐가.. 잘 안나오네요..!
'개발지식 > [하루한개념]' 카테고리의 다른 글
[하루한개념] 비트와 비트마스킹 (0) | 2022.05.11 |
---|---|
[하루한개념] npm vs. yarn (npm, yarn, 차이점과 명령어) (0) | 2022.03.31 |
[하루한개념] 4 Way Handshake (0) | 2022.03.21 |
[하루한개념] CSR, SSR로 알아보는 nextJS (0) | 2022.03.19 |
[하루한개념] DDD (Domain Driven Design) 정리 (0) | 2022.03.08 |