어제보다 한걸음 더
article thumbnail
반응형

 

HTTP에 관한 짧은 지식들을 공부하게 되는 기회가 있어서 이렇게 블로그에 정리하게 되었습니다.

저는 백엔드 개발자를 지망하지만, 백엔드에 한정되어 공부 하는것보다 전체적인 흐름을 아는 것도 중요하다 생각합니다.


 HTTP란?

  • HTTP (Hyper Text Transfer Protocol)
  • Web에서 Text와 Image들을 전송하는 통신 규약.
웹의 3요소
HTTP (프로토콜), HTML (전송하는 문서), URL (전송하는 문서의 고유 주소)
  • HTTP를 사용하여 WWW (World Wide Web)상에서 데이터를 주고 받을수 있다.
  • 주로 HTML이나 Image, Video 등을 전송하는데 사용한다.
  • TCP와 UDP를 사용하며 80번 Port를 사용한다.
인터넷 (Internet)과 웹 (Web)은 다르다.

 

 HTTP의 특징

  • 간단하다. (가장 큰 특징)
  • 상태가 없다. (Stateless)
상태가 없다? (Stateless)
서버에서 클라이언트의 정보를 저장할수 있는 수단이 없다는 뜻이다.
  • HTTP/1, HTTP/1.1, HTTP/2 와 같이 계속 발전되어왔지만 현재는 HTTP/1.1이 가장 많이 사용된다.

 

파이썬 터미널을 통해 서버를 열어보기

 

▲ 위와 같이 터미널에 입력했을 경우

  • 사진과 같이 출력되었다면 서버가 잘 열렸다는 뜻이다.
  • 종료하려면 ctrl + c를 누르면 된다.

 

HTTP의 동작방식

1. 클라이언트가 URL을 입력하면 브라우저가 HTTP Request를 서버로 전송한다.

2. 서버는 Request를 분석하여 클라이언트가 원하는 HTTP Response를 다시 전송한다.

3. HTTP Response를 전달받은 클라이언트는 이를 바탕으로 원하는 결과물을 출력한다.

 

여기서 클라이언트와 서버가 무엇인지 궁금증이 생겼다.

 

웹 클라이언트 (Web Client) 와 웹 서버 (Web Server)

  • 클라이언트 (Client) - 서비스를 요청하는 쪽.
  • 서버 (Server) - 서비스를 제공하는 쪽.
클라이언트는 주로 웹 브라우저 (Web Browser)이지만, 반드시 웹 브라우저일 필요는 없다!

 

웹 클라이언트와 웹 서버의 통신

  1. 클라이언트는 웹 브라우저를 통해 서버로 URL을 HTTP Request로 요청한다.
  2. 서버는 요청을 받은 뒤 전송할 자료 (HTML, ...)를 결정한다.
  3. 자료(HTML, ...)를 전송할 때 HTTP Response로 응답한다.
클라이언트와 서버 사이에는 프록시 (Froxy)가 위치할 수도 있다.
프록시는 사이에서 다양한 일을 처리하는 역할을 한다.

 

HTTP Request

출처 : https://new93helloworld.tistory.com/25

  • HTTP Request Message두가지로 구성되어있다. (Request Message Header + Request Message Body)
  • Request Message Header두가지로 구성되어있다. (Request Line + Request Header)
  • Request Line - GET (or POST) / 주소 / 프로토콜 (모두 HTTP 필수적 요소)
  • Request Header - Host의 이름 (HTTP 필수적 요소) / Optional (HTTP 선택적 요소 ex.브라우저 종류, Body의 길이 ...)
  • Request Body - Image 업로드나 서버에 전달해야하는 Messages

 

HTTP Response

출처 : https://new93helloworld.tistory.com/25

  • HTTP Response의 구조는 HTTP Requset와 비슷하다.
  • Response Message Header에는 여러가지 메타 데이터가 위치한다.
  • Response Message Body에는 전송되어야할 데이터들이 위치한다.
  • Request Header - Host의 이름 (HTTP 필수적 요소) / Optional (HTTP 선택적 요소 ex.브라우저 종류, Body의 길이 ...)
  • Request Body - Image 업로드나 서버에 전달해야하는 Messages

 

 브라우저의 동작방식 (서버로부터 응답을 받은 경우)

다양한 브라우저의 예시

  1. 최초로 HTML을 불러온다.
  2. HTML의 CSS, JS, Image에 대한 링크 정보를 추출한다.
  3. 추출한 정보의 URL을 통해 새로운 요청을 전송한다.
  4. 모든 웹 자원들을 전달받아서 렌더링을 시작한다.

 

 URL의 구조

  • URL (Uniform Resource Locator)
  • URI의 일종
URI란?
하나의 리소스 (HTTP의 요청대상)을 가르키는 문자열이다.
URI 에는 URL과 URN이 속해 있다.

 

예시를 통한 URL 구조 파악

예시를 위해 임의로 만든 URL

▶ 프로토콜

브라우저가 사용해야하는 프로토콜을 의미한다.

HTTP or HTTPS 두가지중 하나를 보통 사용한다.

 

▶ 도메인

요청중인 웹서버를 나타낸다.

DNS에 의해 변경된 부분이다.

 

▶ 포트

웹서버의 리소스에 접근하는데 사용되는 게이트를 나타낸다.

따로 표시가 되어있지 않으면 기본적으로 HTTP는 80, HTTPS는 443으로 처리된다.

 

▶ 경로

웹서버의 리소스 경로이다.

 

▶ 쿼리

웹서버에 제공되는 추가 파라미터이다.

& 기호로 구분되는 키/값의 목록이다.

리소스를 사용자에게 반환하기 전에 추가적인 작업을 수행 가능하다.

 

▶ 프레그먼트

일종의 북마크이다.

브라우저에게 해당 북마크된 지점으로 콘텐츠를 표시하도록 지정한다.

프레그먼트 식별자 (#) 뒤의 부분은 요청과 함께 서버로 전송되지 않는다.

ex. ) HTML 문서의 경우 해당 지점으로 스크롤이 되고, Video or Audio의 경우 해당 시간대로 이동한다.

 


남은 지식들은 다음편에 정리해도록 하겠습니다.

반응형

'Backend > Network' 카테고리의 다른 글

HTTP 기초 2편 - HTTP 이론 2  (0) 2023.06.23
profile

어제보다 한걸음 더

@mlngwan

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!