[네트워킹] HTTP Protocol

Chloe Choi·2021년 3월 23일
0

네트워킹

목록 보기
7/11

HTTP Protocol

Hypertext Transfer Protocol, 서버와 클라이언트가 인터넷 상에서 데이터를 주고 받기 위한 프로토콜
클라이언트가 서버로부터 정보를 Pull 해 오는 방식임

Background
URI(Uniform Resource Identifier)
: 인터넷에 있는 자원을 나타내는 유일한 주소, 자원의 식별자
URL(Uniform Resource Locator)
: 인터넷에 있는 자원의 위치를 나타내는 것, 웹 자원에 대한 참조

https://www.dongguk.edu:3000/main?id=2016
✔️ https://www.dongguk.edu:3000/main: URL, URI
✔️ https://www.dongguk.edu:3000/main?id=2016: URI
ㅤㅤid=2016 👉 위치가 아니고 id=2016라는 걸 식별

HTTP Method

클라이언트가 서버에 보낸 요청의 목적/종류를 알리는 수단

GET

SELECT, 정보 요청

POST

INSERT, 정보 등록(생성, 수정, 삭제 모두 가능함)

PUT

UPDATE, 정보 갱신(생성도 가능함)

DELETE

DELETE, 정보 삭제

HTTP 헤더 정보만 요청
-> 해당 정보가 존재하는지, 서버에 문제가 없는지 확인 시 사용

OPTIONS

웹 서버가 지원하는 method 종류 요청

TRACE

클라이언트 요청을 그대로 반환
-> echo 서비스로, 서버 상태 확인 시 사용

✔️

Data를 보내는 방식

  • GET: 요청 시 필요한 데이터를 query string을 통해 전송
    ex. www.example.com/resource?name=value
  • POST: 전송해야 하는 데이터를 HTTP 메세지의 body에 넣어 전송
    따라서, 대용량 데이터를 보낼 수 있음.
    보안적으로 좋다? NO❗️ 들여다보려면 다 볼 수 있음 👉 암호화 필요

POST vs. PUT

  • POST
POST /board
{
    // request message 👉 이를 이용해 새로운 자원 생성
}
  • PUT
POST /board/2 👉 식별자의 자원 생성
{
    // request message
}
구분POSTPUT
중복요청독립적최초 한 번만 자원 생성
멱등성 만족XO

멱등성: 1 .. n번 실행 시 결과가 같은지

👉 데이터 생성 시 둘 중 뭘 써야해?
둘 다 쓸 수 있음 근데 다음 사항들을 고려해서 맞는 Method를 선택해야함!

  • 클라에서 생성될 데이터의 정확한 URI를 알고 있는지? -> PUT을 써도 됨
    URI는 서버에서 결정한다? -> POST를 사용
  • PUT은 멱등성을 만족함. 따라서 여러번 생성해도 영향이 없어서 여러번 생성할 수도 있는 가능성이 있으면 PUT이 좋아요

동작

  1. 클라이언트가 원하는 서버에 접속
  2. 클라이언트가 서버에 요청
    with. HTTP Request Message
  • Request Line
    [request-method-name][request-URI][HTTP-version]
    ex. GET /test.html HTTP/1.0
  • Request Headers
    [request-header-name]:[request-header-value1], [request-header-value2]
    ex. ection: Keep-Alive
  1. 요청에 대한 응답결과를 클라이언트에 전달
    with. HTTP Response Message
  • Status Line
    [HTTP-version][status-code][reason-phrase]
    ex. HTTP/1.1 403 Forbidden
profile
똑딱똑딱

1개의 댓글

comment-user-thumbnail
2021년 5월 13일
답글 달기