HTTP 프로토콜 동작 이해

고라니·2021년 8월 15일
0

boostcourse

목록 보기
1/4

인터넷 : TCP/IP 기반의 네트워크들의 결합체를 말한다.

웹(www) 은 인터넷 기반의 대표 서비스중 하나다.
(그 외 : Email(SMTP/POP3/IMAP) / FTP(파일전송) 등등)

http

웹에서는 서로 통신하기 위한 수단으로 http를 사용한다.
(HTTP: 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜이다.)
http는 image, video, text documents 등 종류를 가리지 않고 전송 할 수 있다.
최초 버전 : HTTP v0.9(1991년) , 현재 가장 많이 사용되는 버전 : http v1.1

http 작동방식

server/client 모델을 따른다.(client가 먼저 server에게 요청을 보내면 server가 client에 응답을 보낸다.)

그러나 서로 요청 응답을 보내기 위해 연결을 먼저 한 후, server는 client에게 받은 요청을 응답 결과로 만들어 응답을 하고 나면 바로 client와의 연결을 끊어버린다.

이것을 'stateless(무상태)방식' 이라고 한다.

stateless의 장점
  • 불특정 다수를 대상으로 하는 서비스에 적합하다.
  • 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에 클라이언트와 서버 간의 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있기 때문.
stateless의단점
  • 연결을 바로 끊어버리기 때문에, 클라이언트의 이전 상황을 알 수 없다.
  • 이러한 http의 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하게 되었다.

http 세부 작동 방식

client가 server에 요청을 보내고 응답을 받을 때 data들의 정해진 규칙이 있는데, 이것이 요청 및 응답 데이터 포맷이다.

요청/응답 데이터 포맷은 헤더 부분/ 빈 줄 부분(to separate) /바디부분 세 부분으로 나뉘게 된다.

요청 헤더

첫 번째 줄
  • 요청 메서드 : GET, PUT, POST, PUSH, OPTIONS 등의 요청 방식이 온다.
  • 요청 URI : 요청하는 자원의 위치를 명시한다.
  • HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전
  • 첫번째 줄의 요청메소드는 서버에게 요청의 종류를 알려주기 위해서 사용된다.
두 번째 줄부터는

여러 줄의 헤더 정보가 나오며, 각각의 줄은 헤더 명과 헤더 값이 콜론(:)으로 구분되어 있고,
각 줄은 라인피드와 캐리지 리턴으로 구분된다.

요청 바디

GET 방식일 경우 없고, POST, PUT을 사용할 시 추가로 들어오게 됨.

요청 메소드 종류(참고로 최초의 웹 서버는 GET방식만 지원했다.)

GET : 정보를 요청하기 위해서 사용한다. (SELECT)
POST : 정보를 밀어넣기 위해서 사용한다. (INSERT)
PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE)
DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE)
HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.

응답 헤더

첫 번째 줄

응답 HTTP 프로토콜의 버전 / 응답 코드 / 응답 메세지 등

그 이후 줄

날짜, 웹 서버 이름&버전, Content-Type, Content-Length, 캐시 제어 방식 등

응답 바디

실제 응답 리소스 데이터가 나오게 된다.

응답(상태) 코드
  1. 200 ok : 요청이 성공되었고, 정보가 응답으로 보내졌다.
  2. 301 Moved Permanently : 요청 객체가 영원히 이동되었다.
  3. 400 Bad Request : 서버가 요청을 이해할 수 없다는 일반 오류 코드
  4. 404 Not Found : 요청 문서가 서버에 존재하지 않는다.
  5. 505 HTTP Version Not Supported : 요청 HTTP 프로토콜 버전을 서버가 지원하지 않는다.

URL (Uniform Resource Locator)

  • 인터넷 상의 자원의 위치를 나타내기 위해 사용한다.
  • 특정 웹 서버의 특정 파일에 접근하기 위한 경로 혹은 주소를 말한다.

URL은 크게 세 부분으로 나누어지는데,
프로토콜 / 자원이 있는 서버의 IP 주소 혹은 도메인 주소, 포트 번호 / 자원의 위치
를 나타내게 된다.

하나의 물리적 컴퓨터에는(IP) 여러 개의 소프트웨어 서버가 동작할 수 있는데, 이 서버는 포트 값이 다르게 동작해야 된다.

profile
공부를 열심히 하는 학부생

0개의 댓글