[TIL. 16] HTTP

신지원·2021년 3월 14일
0
post-thumbnail

HTTP는 Hyper Text Transfer Protocol의 약자이다.
인터넷에서 데이터를 주고받을 수 있는 프로토콜(=규칙)이다.

1. HTTP란?

웹서버와 클라이언트가 통신을 하기 위한 통신 규약이다. HTTP는 웹에서만 사용하는 포로토콜로 TCP/IP 기반으로 한 지점에서 다른 지점(서버와 클라이언트)으로 요청과 응답을 전송한다.

2. HTTP 동작 원리


클라이언트가 서버에서 요청을 한다. 그럼 이때 요청을 받은 서버는 다시 클라이언트에게 응답을 보내야 한다.

3. Cookie, Session

HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다. 이러한 단점을 해결하기 위해 cookie, session이 존재한다.

쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
쿠키에는 이름, 값, 만료날짜(쿠키 저장기간), 경로 정보가 들어있으며 일정시간동안 데이터를 저장할 수 있다. 이는 주로 로그인 상태 유지에 활용한다.
쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.

- 쿠키 프로세스
1. 브라우저에서 웹페이지 접속
2. 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트 로컬(하드)에 저장
3. 클라이언트가 재 요청시 웹페이지 요청과 함께 쿠키값도 전송
4. 지속적으로 로그인 정보를 가지고 있는 것처럼 사용

3-2. Session

일정 시간동안 같은 브라우저로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술이다. 즉, 웹 브라우저를 통해 웹 서버에 접속한 이후로 브라우저를 종료할 때 까지 유지되는 상태이다.

클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는 데 이것이 세션ID다.

- 세션 프로세스

  1. 클라이언트가 서버에 접속시 세션 ID를 발급
  2. 서버에서는 클라이언트로 발급해준 세션 ID를 쿠키를 사용해 저장 (JSESSIONID)
  3. 클라이언트는 다시 접속할 때, 이 쿠키(JSESSIONID)를 이용해서 세션ID값을 서버에 전달
  • 저장위치: 쿠키는 클라이언트에 파일로 저장되고, 세션은 서버에 저장된다.

  • 보안: 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스나이핑 당할 우려가 있어서 보안에 취약하지만 세션은 쿠키를 이용해서 sessionid 만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋다.

  • 속도: 쿠키에 정보가 있기 때문에 서버에 요청시 속도가 빠르고 세션은 정보가 서버에 있기 때문에 처리가 요구되어 비교적 느린 속도를 낸다.

  • 쿠키를 사용하는 이유는?
    세션은 서버의 자원을 사용하기 떄문에 무문별하게 만들다보면 서버의 메모리가 감당할 수 없어지고 속도가 느려질 수 있기 때문이다.

4. HHTP Method

  • GET
    요청받은 URL의 정보를 검색하여 응답한다.

  • POST
    요청 URL에 폼 입력을 처리하기 위해 구성한 서버 측 스크립트(ASP, PHP, JSP 등) 혹은 CGI 프로그램으로 구성되고 Form Action과 함께 전송되는데, 이때 헤더 정보에 포함되지 않고 데이터 부분에 요청 정보가 들어가게 된다.

  • PUT
    POST와 유사한 전송 구조를 가지기 떄문에 헤더 이외에 메시지가 함께 전송된다. 요청된 자원을 수정한다.

  • PATCH
    PUT과 유사하게 요청된 자원을 수정할때 사용한다. PUT의 경우 자원 전체를 갱신하는 의미지만, PATCH는 해당자원의 일부를 교체하는 의미로 사용한다.

  • DELETE
    웹 서버에 파일을 삭제하기 위해 사용된다. (PUT과 반대 개념 메소드이다.)

0개의 댓글