개발자가 되고 싶은 학생의 정리노트

[WEB] 웹의 동작 (HTTP 프로토콜 이해) 본문

WEB

[WEB] 웹의 동작 (HTTP 프로토콜 이해)

ChloeK 2020. 1. 19. 22:13

[WEB] 웹의 동작 (HTTP 프로토콜 이해)


<목차>

 

1. 인터넷 네트워크 통신의 이해

  • 인터넷과 웹의 정의
  • 인터넷과 HTTP 통신
  • 웹의 클라이언트 서버 모델

2. HTTP

  • HTTP 란?
  • HTTP 작동방식

3. 용어정리

  • URL / URI
  • IP
  • PORT NUMBER

4. 웹의 동작

  • 클라이언트 / 서버 모델 통신

5. HTTP 메세지 형식

  • HTTP 요청 메세지 형식
  • HTTP 응답 메세지 형식

1. 인터넷 네트워크 통신의 이해

▶ 인터넷과 웹의 정의

-인터넷이란 TCP/IP(Transmission Control Protocol/Internet Protocol) 프로토콜을 사용하는 전 세계에서 가장 큰 통신망이다. 즉 수많은 네트워크의 결합체로 네트워크들의 네트워크라고 부른다.

-인터넷과 웹(WWW(world wide web))을 같은 의미라고 알고 있는데, 실제로 인터넷은 통신망이고 웹은 인터넷에서 돌아가는 서비스이다. 

-웹은 인터넷상의 정보를 하이퍼텍스트 방식과 멀티미디어 환경에서 검색할 수 있게 해주는 정보검색 시스템이다. 

 

▶ 인터넷과 HTTP 통신

-인터넷 중 웹에서는 서로 통신하기 위해서 HTTP를 사용한다. (http는 팀 버너스리와 그의 팀이 발명)

-HTTP는 서버와 클라이언트가 인터넷 상에서 데이터를 주고 받기 위한 프로토콜이다. 가장 성공한 인터넷 프로토콜이라고 할 수 있다.

 

▶ 웹의 클라이언트 서버 모델

클라이언트-서버 모델 작용 과정

-웹에서의 클라이언트 서버 모델은 클라이언트가 요청을 서버에게 보내면 서버는 클라이언트에게 응답을 보내게 된다. 클라이언트가 먼저 요청을 보내고 요청을 받아서 서버가 클라이언트에게 응답을 보내는 모델을 말한다.

-클라이언트는 일반적인 웹 사용자의 인터넷이 연결된 장치들을 가리키고 서버는 웹페이지, 사이트, 앱 등을 저장하는 컴퓨터를 가리킨다. 클라이언트가 정보를 요청하면 서버가 웹 브라이저에 보여지기 위한 웹페이지의 사본을 응답한다.


2. HTTP

▶ HTTP 란?

-HTTP란 인터넷 상에서 웹 서버와 클라이언트 간의 문서 전송을 위한 통신 규약으로 인터넷상의 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용된다.

-HTTP는 어떤 종류의 데이터도 전송할 수 있도록 설계되어 있다. 즉 이미지, 동영상, 오디오, 텍스트 문서 등 종류를 가리지 않고 전송할 수 있다. 

-HTTP 1.1 버전을 가장 많이 사용한다.

 

▶ HTTP 작동방식

-HTTP는 서버/클라이언트 모델을 따른다. 즉 클라이언트가 요청을 하고 요청을 받은 서버가 응답을 하는 모델을 따른다.

-HTTP는 무상태 프로토콜이다. 무상태 프로토콜이란 클라이언트가 서버한테 요청하고 서버는 클라이언트 응답 결과를 준 후 바로 클라이언트와의 연결을 끊는 방식이다.

-무상태(Stateless) 프로토콜이기 때문에 클라이언트 이전의 상황을 알 수 없다. 이러한 특징 때문에 정보를 유지하기 위해서 Cookie와 같은 기술이 등장하였다.

-불특정 다수를 대상으로 하는 서비스에 적합하다.

-클라이언트와 서버가 계속 연결된 상태를 유지 하지 않기 때문에 클라이언트 서버 간의 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있다.


3. 용어정리

▶ URL 

URL 이미지

-Uniform Resource Locater 웹 상에서 문서와 다른 자원들의 위치를 나타내기 위해서 사용된다. URL은 세 부분으로 나뉘어진다. 접근 프로토콜/ IP 주소 또는 도메인 이름 포트번호/ 자원의 위치

 

▶ IP

-IP(IP address)는 네트워크에 존재하는 컴퓨터를 유일하게 식별하는 숫자이다. IP 주소는 32비트의 이진수이다. 

 

▶ PORT NUMBER

-인터넷을 통하여 데이터를 보내려면 반드시 어떤 포트를 사용할 것인지를 지정하여야 한다. 따라서 네트워크를 통하여 전달되는 모든 데이터의 주소는 컴퓨터를 가리키는 32비트의 IP주소와 16비트의 포트 번호로 구성된다. 포트 번호는 0에서 65535까지의 정수를 사용하여 표기된다. 

-하나의 물리적 컴퓨터에는 여러개의 소프트웨어 서버가 동작할 수 있는데 서버는 포트값이 다르게 동작해야 한다. HTTP의 기본 포트값은 80이다.

 

유상태(Statefull) / 무상태(Stateless) 통신 방식

-유상태(Statefull)은 서버와 클라이언트가 계속 연결된 형태이기 때문에 지속적으로 데이터를 넘겨받을 수 있다.        (채팅, 온라인게임에 적합), 하지만 서버가 동시에 접속을 유지할 수 있는 수는 정해져 있어서 클라이언트가 많아지면 서버의 수도 많아져야한다.

-무상태(Stateless)는 필요한 경우에만 응답을 받아 빠르게 데이터를 넘겨 받는다. 즉, 하나의 서버가 굉장히 많은 요청을 받을 수 있다.


4. 웹의 동작

HTTP - 부스트코스 강의안

1. 클라이언트 서버 접속

2. 클라이언트 -> 서버에 요청 (요청 메세지 : 요청 헤더 / 빈줄 / 요청 바디) 라인피드와 캐리지리턴으로 구분

3. 서버 -> 클라이언트에 응답 (응답 메세지 : 응답 헤더 / 응답 바디)

4. 응답이 끝나면 서버와 클라이언트 연결은 끊김

 

  • 요청 메서드 : GET, PUT, POST, PUSH, OPTIONS 등
  • 요청 URI : 요청하는 자원의 위치를 명시한다.
  • HTTP 프로토콜 버전 : 웹 브라우저가 사용하는 프로토콜 버전이다.

첫번째 줄의 요청메소드는 서버에게 요청의 종류를 알려주기 위해서 사용된다.

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

5. HTTP 메시지 형식

HTTP Message


HTTP 요청 메시지 형식


HTTP Request Message = Request Header + 빈 줄 + Request Body

Header
-첫 번째 줄 (start-line)
요청 메서드 + 요청 URI + HTTP 프로토콜 버전
GET /background.png HTTP/1.0
POST / HTTP 1.1


-두 번째 줄 ~ (http headers)
Header 정보들 (‘Header Name: Header Value’ 형태)
각 줄은 Line Feed(LF)와 Carriage Return(CR)으로 구분된다.


-빈 줄 (empty-line)
요청에 대한 모든 메타 정보가 전송되었음을 알린다.


Body
-POST, PUT의 경우에만 존재
-요청과 관련된 내용 (HTML 폼 콘텐츠 등)
Ex)


HTTP 응답 메시지 형식


HTTP Response Message = Response Header + 빈 줄 + Response Body

Header
-첫 번째 줄 (status-line)
HTTP 프로토콜 버전 + 응답 코드 + 응답 메시지
HTTP/1.1 404 Not Found.


-두 번째 줄 ~ (http headers)
Header 정보들 (‘Header Name: Header Value’ 형태)
날짜, 웹서버 이름, 웹서버 버전, 콘텐츠 타입, 콘텐츠 길이, 캐시 제어 방식 등
각 줄은 Line Feed(LF)와 Carriage Return(CR)으로 구분된다.


-빈 줄 (empty-line)
요청에 대한 모든 메타 정보가 전송되었음을 알린다.


Body
-실제 응답 리소스 데이터
-201, 204와 같은 상태 코드를 가진 응답에는 보통 body가 존재하지 않는다.
Ex)


출처:

https://www.edwith.org/boostcourse-web/lecture/16661/

 

[LECTURE] 2) 웹의 동작 (HTTP 프로토콜 이해) : edwith

들어가기 전에 사람과 사람이 전화 통화를 하기 위해서도 몇 가지 규약이 필요합니다. 서로 알아들을 수 있는 말을 사용해야 하며, 한쪽이 말할 때 다른 쪽에서는 들어야 합니다. 또한... - 부스트코스

www.edwith.org

http://www.terms.co.kr/clientserver.htm

 

[텀즈] client/server ; 클라이언트/서버

클라이언트/서버는 두 개의 컴퓨터 프로그램 사이에 이루어지는 역할 관계를 나타내는 것이다. 클라이언트는 다른 프로그램에게 서비스를 요청하는 프로그램이며, 서버는 그 요청에 대해 응답을 해주는 프로그램이다. 클라이언트/서버 개념은 단일 컴퓨터 내에서도 적용될 수 있지만, 네트웍 환경에서 더 큰 의미를 가진다. 네트웍 상에서의 클라이언트/서버 모델은 여러 다른 지역에 걸쳐 분산되어 있는 프로그램들을 연결시켜주는 편리한 수단을 제공한다. 클라이언트/서버 모델을

www.terms.co.kr

https://gmlwjd9405.github.io/2019/04/17/what-is-http-protocol.html