[지식창고]/네트워크

[ 컴퓨터 네트워크 ] 2.2 Web and HTTP (1)

개발새발주발 2023. 3. 20. 20:04
728x90
웹은 HTTP로 나타낸다. 

브라우저 주소 입력창에 URL을 입력하면 웹서버로부터 리소스를 얻을 수 있다. 클라이언트는 서버에 요청을 하고 응답을 받는다. 이때 클라이언트에서 서버까지 데이터 이동의 흐름은 HTTP라는 프로토콜에 의해 진행된다 ! 

 

 

1. 웹이란 ?

웹 브라우저 - 클라이언트 / 웹 서버 - 서버

  • 그물과 같은 망 → 네트워크의 링크로 연결되어있다.
  • 웹은 HTML파일 기반의 여러가지 Object들이 참조되어 구성된 페이지이다.

** Object는 HTML 파일 ,JPEG이미지, applet, audio 파일 등이 있다. 그리고 이 오브젝트는 URL이라는 주소를 통해 addressing 될 수 있다.

*** URL (host name : 웹 서버의 도메인 네임 / ip주소 ) + path name (어느 디렉토리의 파일인가)


2. HTTP란? - HTTP Overview

Hypertext Transfer Protocol hypertext(인터넷 상에서 서로 연결될 수 있는 형태를 지닌 문서)를 주고받기 위한 프로토콜

즉, HTTP는 웹에서의 Obj를 주고받는데 사용되는 프로토콜이다 !

HTTP는 주고, 받는데 사용하기때문에 client/server model이 활용된다 .

  • client : HTTP를 이용하여 request(요청), receives(응답받고) and “displays(화면에 출력)” 하는 브라우저
  • server : HTTP를 이용하여 요청에 대한 응답으로 obj를 보내주는 서버

HTTP의 특징

  1. TCP 사용 : 데이터의 신뢰성 있는 사용을 위해 (내용을 손실 없이 전달)
  • 클라이언트는 소켓을 만들고 서버에 TCP 연결을 요청한다 → 서버는 클라이언트로부터 connection을 받는다 → 서버가 TCP connection을 클라이언트로부터 받으면 HTTP 메세지가 connection을 따라 전달된다. (브라우저 ↔ 웹 서버) → TCP connection이 끊긴다 (통신 마무리)
  1. stateless하다. (이전 히스토리를 기억하지 않는다. )
  • 서버는 클라이언트의 정보를 기록하지 않는다 만일 state를 기억한다면 엄청 관리와 유지보수가 복잡해진다 !

3. HTTP Connection

HTTP는 state를 유지하진 않지만 connection은 유지될 수도 있고 아닐 수도 있다 !

 

   non-persistent HTTP : 오브젝트 하나를 가져오면 연결을 끊는다.

  • 최대 하나의 obj가 TCP connection을 통해 전달된 후 connection을 끊는다
  • 여러개의 obj를 전달하는 경우 connection을 여러번 해야한다 = 비효율적임
  • MSC (Message Sequence Chart)

   persistent HTTP : connection을 하고 끊기 전에는 connection이 끊기지 않는다 !

  • 한 번의 TCP connection을 통해 여러개의 obj들이 연결될 수 있다.
  • 현대 대부분의 웹 브라우저들이 사용하고 있는 방식이다.

4.  response time

non - persistent HTTP

** RTT (Route -Trip-Time) : 메세지가 갔다 오는데 걸리는 시간

  • 1 RTT → TCP connection을 시작할 때
  • 1 RTT → HTTP request를 보내고 처음 몇 바이트의 HTTP response가 돌아오는 데 걸림
  • 파일 전송 시간 (file treansmission time)


- 1개의 파일 보낼 때 : 총 response time = 2RTT + 파일 전송 시간

- N개의 파일 보낼 때 : 총 response time = (2RTT + 파일 전송 시간)x N

 

persistent HTTP

  • non-persistent HTTP방식과 다르게 파일을 보낼 때 마다 TCP connnect를 해주지 않아도 된다 !
  • 1RTT → 맨 처음 TCP connection
  • 1 RTT → 요청을 보내고 몇 바이트의 HTTP response가 돌아오는 데 걸리는 시간
  • file 전송 시간 (file transmission time)N개의 파일 보낼 때 : 총 response time = RTT + (RTT + file transmission time)xN
  • 1개의 파일 보낼 때 : 총 response time = 2RTT + 파일 전송 시간

5. HTTP request message

HTTP message의 두가지 타입 : request, response

request - 클라이언트가 만들어서 서버로 보낸다 !

response - 서버가 만들어서 클라이언트로 보낸다 !

 

HTTP request message

  • ASCII 형태로 구성 (사람이 읽을 수 있음 !)

  • body - 진짜 전달하는 내용물
  • header - body를 전달하는 데 필요한 값

 

* Uploading from input

POST method :

  • 웹 페이지는 보통 input을 포함한다 ! → 체크박스 등
  • entire body에 넣어 메세지를 통해 전달한다

URL method :

  • GET method를 사용한다.
  • 클라이언트가 바로 서버로 URL을 통해 값을 전달해준다

*Method type

HTTP / 1.0

GET

POST

HEAD

: →오브젝트 요청 시 response는 오지만 object는 오지 않음 (테스트)

 

HTTP / 1.1

GET, POST, HEAD

PUT : 파일 업로드

DELETE : 파일 삭제

 

* GET

: 클라이언트에서 서버로 데이터를 전달할 때 주소 뒤에 '이름'과 '값'이 결합된 스트링 형태로 전달

웹 브라우저가 웹 서버에 데이터를 요청할 때 사용 

 

* POST 

: 일정 크기 이상의 데이터를 보내야할 때 사용

웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용

 

** HTTP request message  GET vs POST

: HTTP POST request는 클라이언트로부터 서버로 추가적인 데이터를 보내며 input으로 주는 값이 메세지의 body에 들어간다. HTTP GET request는 모든 데이터를 URL에 포함킨다. 

 

 

 

 

HTTP response message 

응답 메세지예시와 상태 코드

 

 

이번 포스팅에서는 HTTP가 웹에서 어떻게 작용하는지에 대해서 

다음 포스팅에서는 웹과 HTTP에서 중요하게 작용하는 '쿠키'와 '캐시'에 대해 설명해보겠다 ! 

 


[참고 및 출처]

https://hudi.blog/http-and-network-basic-1/

https://velog.io/@kms9887/%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-2.-Application-Layer2

한국항공대학교 컴퓨터네트워크 강의자료