HTTP 프로토콜

이고은·2021년 10월 6일
0

네트워크

목록 보기
6/7
post-thumbnail

HTTP 프로토콜의 특징

HyperText Transfer Protocol

HTTP1.0

연결 수립, 동작, 연결 해제의 단순한 프로토콜.
다만 네트워크 부하가 심하다.
3way handshake를 한번하고 HTTP요청을 하고 응답을 받으면 연결을 끊는다. 또 응답을 받고싶으면 3way handshake를 몇번이고 반복해야한다.

HTTP 1.1

3way handshake를 여러번 해야하는 구조를 변경했다.

HTTP1.1 vs HTTP2 vs HTTP3 비교

https://velog.io/@zzzz465/HTTP1.1-2-3-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

HTTP 요청 프로토콜 패킷 구조

Request Line
Header
(공백)
Body

Request Line

요청타입 (공백) URI (공백) HTTP버전

(1) 요청타입
GET: clnt가 serv에서 문서를 읽어오려 할 때 사용
POST: clnt가 serv에게 정보를 보낼 때 사용
PUT: clnt가 serv의 정보를 통째로 수정할 때 사용
PATCH: clnt가 serv의 정보를 살짝 수정할 때 사용
DELETE: clnt가 serv의 정보를 없앨 때 사용

웹 서버에 접속한다고 생각했을 때는 GET, POST만 사용한다.
(웹 개발 시 GET, POST, PUT, PATCH, DELETE)

(2) URI
(1)scheme: //(2)host[:port]/(3)[path](4)[?query]

(1)scheme의 경우 프로토콜을 지정한다.
(2)IP주소:port(도메인주소)
(3)파일이름 or 폴더이름/파일이름(경로)
(4)DB에서 가져올 수 있도록하는 변수 이름 지정

ex) 네이버 일요웹툰 독립일기
(1)https://(2)comic.naver.com(3)/webtoon/list(4)?titleId=748105&weekday=sun

GET vs POST

GET의 경우 URI에 요청 데이터를 명시한다.
POST의 경우 중요한 데이터를 Body에 숨겨서 보낸다.
하지만 이것도 위험하니까 중요한 정보는 HTTPS를 사용한다.

HTTP 응답 프로토콜 패킷 구조

Status Line
Headers
(공백)
Body: 사용자가 요청한 내용

Status Line 상세 구조:

HTTP 응답 상태 코드

상태코드 - 상태문구는 pair!
100~199
200~299: 정상적으로 clnt의 요청 완료되었다.
300~399:
400~499: clnt가 잘못
500~599: serv가 잘못

HTTP 헤더

  1. 일반 헤더
    일반적인 정보를 담고 있다.
    Content-Length: 메시지 Body 길이
    Content-Type: Body에 들어있는 컨텐츠 종류

  2. 요청 헤더
    클라이언트의 정보를 담고 있다.
    Cookie: 서버로부터 받은 쿠키를 다시 서버에게 보내준다.
    Host: 요청 URL에 나타난 호스트명을 상세히 표시
    HTTP1.1 버전에서는 필수로 보내야한다!
    User-Agent: Clinet Program에 대한 식별 가능 정보를 제공한다
    -> pc로 접속했는지, 모바일로 접속했는지.. 등

  3. 응답 헤더
    Server: 웹 서버가 어떤 소프트웨어를 사용하는지
    Set-Cookie: 쿠키를 생성하여 클라이언트에게 보낼 때 사용. 이 쿠기값을 클라이언트가 나중에 다시 서버에게 보내줄 것임

profile
MLOps Engineer가 되고싶은 ML과 DevOps에 관심이 많은 컴공생입니다👩🏻‍💻

0개의 댓글