HTTP

이지훈·2021년 6월 17일
0

TIL

목록 보기
26/33
post-thumbnail

1. HTTP


HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다.

이때 TCP/IP 계층의 순서로 네트워크에 접근하게 되는데
HTTP 프로토콜은 4계층(Application)에 속해 있습니다.

4계층에서 정보를 만들어 전달하면 3계층(Transport)에서 통신 노드를 연결하고
2계층(Internet)에서 통신노드간 패킷을 전송과 라우팅하고
1계층(Network Interface)에서 전기적 신호로 변환하여 실제로 전달한다.

받는 쪽에서는 1->2->3->4 순서로 해석합니다.

2. HTTP

  • HyperText : 문서와 문서가 링크로 연결되어있음
  • Transfer : html로 만든 웹페이지 문서를 보냄
  • Protocol : 어떻게 html파일을 주고 받을지에 대한 소통 방식 또는 약속
  • http 의 사이클 : 요청과 응답이 한 쌍으로 이루어져있습니다. (요청이 2개면 응답도 2개)

3. response / request 구조

3-1. request

Start line :
-http method:요청이 의도한 액션을 정의

  • Request target:요청이 전송되는 목표 url
  • http version : 버전
  • 예시 : get / login http/1.1

Header : 요청의 메타데이터를 담고있음 {key:value}

Body : 요청의 실제 내용

  • 요청 메소드에 따라 비워있을 수도 있음

3-2. response

Start line에서
Status code : 응답 상태 코드 (request와 차이점)
Status text : 응답의 상태 설명

  • 예시 : http/1.1 404 not found

4. 토큰

4-1. 토큰 특징

stateless 방식

  • 상태유지를 하지 않는다는 것
  • http 개별 통신은 모두 독립이라 과거의 통신 결과 상태를 보존하지않음
  • 유저의 인증 정보를 서버나 세션을 담아두지 않음
  • 세션이 존재하지않으니 사용자들이 신경쓰지않고 사용함
  • 토큰을 만들때 토큰 안에 유저정보가 담겨져 있기 때문에 ip를 매칭할 필요없습니다.

토큰 발행 과정

  1. 토큰발행시점 : 로그인 성공했을 때,
  2. 로그인 수행시 받는 데이터 : email, pwd 등
  3. 데이터로 유저 정보 조회
  4. 가지고 온 유저 정보로 토큰 생성
  5. 토큰 전달
  6. 토큰을 들고있는 동안 로그인이 유지되거나 토큰에 시간을 지정(은행 어플리케이션 같은 경우에는 15분정도 후에 자동으로 로그아웃됨)

토큰 저장 장소

  • 서버가 응답(response)으로 토큰에 로그인 정보를 담아서 보내줌(백앤드 담당)
  • 토큰을 쿠키나 세션에 저장하는 것은 클라이언트(프론트 담당)
  • 토큰을 사용자에게 주지는 않고 프론트가 토큰을 가지고 있는 것입니다.

5. HTTP Request Methods

메서드
Get

  • 이름 그대로 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드
  • 데이터를 받아오기만 할 때 사용된다.
  • 가장 간단하고 많이 사용되는 HTTP 메소드 (사실 우리가 웹페이지를 띄울 때 필요한 정보들을 모두 GET메소드로 요청을 보내서 받아온 응답을 화면에 띄우는 것이다)

Post

  • 생성, 수정, 삭제 할 때 사용하는 메소드인데, 메소드를 보기만해도 코드를 이해하기 위해 역할을 나눠두고 사용해서 생성, 수정 때 사용함.
  • 메소드의 이름에서 유추 가능하듯, 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드
  • 프론트가 작성하고, 백은 바디를 작성안할 수도 있는데 작성한다면 명시해서 프론트에 전송

Delete

  • 메소드의 이름에서 유추 가능하듯, 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드
  • body를 적지않음 어차피 크롬에서 막음, 주소 자체에 명시해서 보냄

참고자료

TCP/IP 참고 블로그

profile
꾸준하게 🐌

0개의 댓글