HTTP 개념정리

김상혁·2021년 3월 18일
0

개념정리

목록 보기
3/13

1. HTTP 란?

HTTP(HyperTexT Protocol)이란 인터넷상에서 데이터를 주고받는 프로토콜이다.

1-1. HyperText

검색을 위한 비선형 구조로 클라이언트가 한 문서에서 다른 문서로 접근할 수 있게 해준다. 하이퍼텍스트는 하이퍼링크를 포함한다.

  • 비선형구조?
    하나의 문서을 읽을 때 첫 페이지부터 끝 페이지까지 순서대로 읽는 것을 선형적 구조라고 한다. 즉 비선형 구조는 순서대로 읽지 않고 원하는 페이지를 찾아가는 것이다. 문서를 처음부터 끝까지 읽을 땐 좋지 않지만, 검색처럼 원하는 페이지를 찾을 때 유용하다.

  • 하이퍼링크?
    하이퍼링크는 다른 문서에 대한 참조 정보가 들어가있는 것이다.(출처 : 네이버블로그_장구리)

1-2. Protocol

프로토콜은 컴퓨터 사이에서 원활한 통신을 위해 만든 약속이다.
-> ex) 나는 이렇게 데이터를 줄게! 너가 주는 건 이렇게 받을게!
-> HTTP : 인터넷에서 데이터를 어떻게 주고받을지 미리 정한 약속

2. HTTP 구성

HTTP는 요청(Request)응답(Response)로 구성되어있다. 주로 요청하는 쪽을 클라이언트(Client)라고하고 응답하는 쪽을 서버(Server)라고 한다.

2-1. 요청 (Request)

HTTP 요청은 서버의 자원 위치를 나타내는 URL(Uniform Resource Locators)과 어떤 요청인지 구분하기 위한 요청 메서드로 구성되어있다. 주로 URL을 명사, 메서드를 동사의 의미를 가지고있기에 URL에는 주로 명사를, Method는 동사를 사용한다.

GET http://duckchan.com/names

메서드 : GET
URL : http://duckchan.com/resources/users/name?id=aa
HTTP Request : id가 aa인 resources/users/name을 가져오는 요청

2-1-1. URL
URL은 서버에 있는 자원의 위치를 나타낸다. 주로 scheme(Protocol)://host:port/path?query로 구성되어있다.

  • scheme : 어떤 프로토콜을 사용할지 명시
  • host : 요청을 받는 서버의 주소
  • path : 호스트에서 요청하는 자원의 위치를 명시
  • query : 요청이 원하는 자원을 표현으로 key=value 형태로 작성 (코드 상에서 파라미터와 비슷한 의미)
http://www.duckchan.com:8808/users/name?id=aa

protocol : http
host : www.duckchan.com
port : 8808
resource : users/name
query : id = aa

2-1-2. HTTP 요청 메소드

  • POST : 자원 생성(Create)
  • GET : 자원 요청(Read)
  • PUT : 자원 변경(Update)
  • DELETE : 자원 삭제(Delete)

2-2. 응답 (Response)

HTTP 요청에 대한 응답은 요청 결과(Body)HTTP 상태코드로 이루어져있다.

요청 결과(Body)는 말 그대로 클라이언트가 원하는 자원을 뜻하고 상태코드는 통신이 성공했는지 혹은 실패했는지 실패했다면 이유는 무엇인지에 대한 정보이다.

HTTP 상태코드 정리 (위키백과)

3. HTTP 특징

3-1. Stateless

HTTP는 Stateless(무상태) 프로토콜이다.

▶ Stateless
각각의 데이터 요청이 독립적으로 관리되어 서로 관련이 없는 것

Stateless의 정의는 위와 같다. 쉽게 말하면 요청과 응답을 하는 동안 누구의 요청이었는지, 어떤 요청이었는지, 어떤 응답을 했는지 등을 메모리를 저장하지 않는 것이다.

▶ 쿠키, 세션, 캐시

서버를 구축하다보면 클라이언트가 요청 지역, 요청 언어와 같이 요청에 대한 데이터를 저장해야할 때가 있다. 하지만 HTTP 통신은 Stateless 방식이기 때문에 데이터를 저장할 수 없다.

이런 기능을 위해 클라이언트는 서버에 요청할 때 URL, Method 외에도 쿠키, 캐시, 세션을 사용한다.

쿠키, 캐시, 세션이란?

3-2. Connectionless

웹 사이트는 항상 유저와 연결되어있는 것이 아니다. 클라이언트가 웹사이트에 요청을 했을 때 연결을 시작하고 응답을 하는 순간 연결을 종료한다. 즉 웹사이트는 HTML을 응답해준 뒤엔 클라이언트를 신경쓰지 않는다.

이렇게 요청에 대한 응답을 한 후 클라이언트와 연결을 끊는 방식을 Connectionless라고 한다.

4. HTTP와 HTTPS

HTTP는 주고받는 데이터가 암호화되지 않아 보안이 취약하다. 그래서 HTTP에 보안(Secure)을 위해 SSL을 추가한 것이 HTTPS이다.

▶ SSL(Secure Sockets Layer, 보안 소켓 계층)
데이터를 암호화하여 보안을 유지하는 기술

기존에 클라이언트가 (id = duck / pw = chan11) 로그인 요청을 한다고 할 때, http 요청이라면 id와 pw를 duck, chan11 그대로 서버에 전달하였기 때문에 보안이 취약했지만 https 요청을 할 땐 id, pw를 암호화하여 전달하기에 보안이 한층 강화된다.



최종 수정 : 2021-03-29


0개의 댓글