본문 바로가기
source-code/software

HTTP 완벽 가이드 _ 1장

by mattew4483 2021. 2. 18.
728x90
반응형

1장. HTTP 개관

1. 웹 클라이언트와 서버

World Wide Web의 기본 요소!

"클라이언트가 HTTP 요청을 보내면, 서버는 HTTP 응답을 보낸다" 

 

2. 리소스

이러한 웹 서버는 웹 리소스를 관리하고 제공.

웹 리소스? -> 텍스트, HTML, 이미지 등등등 모든 종류의 콘텐츠. 웹 서버 내부에 보관됨.

2-1) URL

웹 서버 리소스는 각자 이름을 갖고 있음 -> 클라이언트는 특정 리소스를 지목할 수 있음 = URL!

 

URL은 특정 서버의 한 리소스에 대한 구체적인 위치와 접근 방법 서술

 

3. 트랜젝션

HTTP 트랜잭션 = 요청 메시지(클라이언트->서버) & 응답 메시지(서버->클라이언트)

 

요청 메시지는 명령과 URL을 포함 / 응답 메시지는 트랜잭션의 결과를 포함

 

웹페이지는 보통 첨부된 리소스에 대해 각각 별개의 HTTP 트랜잭션을 수행(각 리소스마다 각 HTTP 트랜잭션 이뤄짐!)

3-1) 메서드

HTTP는 HTTP 메서드라고 불리는 여러 종류의 요청 명령을 지원.

모든 HTTP 요청 메시지는 한 개의 메서드를 가짐 -> 서버에게 어떤 동작 취해야 하는지 말해줌!

대표적인 것이 GET, POST, PUT, DELEATE, HEAD 등.

3-2) 상태 코드

모든 HTTP 응답 메시지는 상태 코드와 함께 반환.

-> 클라이언트에게 요청이 성공했는지, 추가 조치가 필요한지 알려주는 세 자리 숫자.

대표적인 것이 200, 302, 404 등.

 

4. 메시지

HTTP 요청/응답 메시지 -> 단순한 줄 단위 문자열(요청-응답 두 개의 HTTP메시지만 존재)

 

메시지

= 시작줄(무슨 일 하는지/무슨 일 했는지)

+ 헤서(쉬운 구문 분석을 위해 : 으로 구분되어 있는 하나의 이름과 하나의 값으로 구성

+ 본문(어떤 종류의 데이터도 들어올 수 o, 데이터를 실어 보내거나/데이터를 반환)

 

5. TCP 커넥션

TCP = Transmisiion Control Protocol , 전송 제어 프로토콜.

이를 통해 HTTP 메시지가 한 곳에서 다른 곳으로 이동.

5-1) TCP/IP

HTTP -> 네트워크 통신의 핵심적인 세부사항에는 신경 x

대신 대중적, 신뢰할만한 인터넷 전송 프로토콜인 TCP/IP에 맡김

 

TCP -> 오류 없는 데이터 전송/순서에 맞는 전달/조각나지 않는 데이터 스크림

(TCP 커넥션이 맺어지면 메시지는 결코 없어지거나, 손상되거나, 순서 바뀌지 않음)

5-2) 접속, IP주소, 포트 번호

HTTP 클라이언트-서버 간 메시지 전송이 가능해지기 전에,

인터넷 프로토콜(IP) 주소와 포트번호를 사용해 클라이언트-서버 사이 TCP/IP 커넥션을 맺어야 함

 

즉 웹브라우저 연결의 기본적인 절차는...

(a) 웹브라우저는 서버의 URL에서 호스트 명 추출(호스트 명은 DNS를 통해 쉽게 IP로 변환 o)

(b) 웹브라우저는 서버의 호스트 명을 IP로 변환

(c) 웹브라우저는 URL에서 포트번호를 추출(URL에 포트번호가 없다면 기본값 80으로 가정)

(d) 웹브라우저는 웹 서버와 TCP 커넥션을 맺음

(e) 웹브라우저는 서버에 HTTP 요청을 보냄

(f) 서버는 웹브라우저에 HTTP 응답을 돌려줌

(g) 커넥션이 닫히면, 웹브라우저는 문서를 보여줌

 

6. 웹 구성요소

6-1) 프락시 서버

: 클라이언트와 서버 사이에 위치한 HTTP 중개자

-> 웹 보안, 애플리케이션 통합, 성능 최적화를 위한 중요 요소. 

클라이언트의 모든 HTTP 요청을 받아 사용자를 대신해 서버에 전달.

6-2) 캐시

: 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고

-> 캐시 프락시는 성능 향상을 위해 자주 찾는 문서의 사본을 저장

HTTP는 캐시 효율적 동장, 콘텐츠 최신 버전 유지, 프라이버시 보호 위해 많은 기능 정의

6-3) 게이트웨이

: 다른 애플리케이션과 연결된 특별한 웹 서버

-> 다른 서버들의 중개자로 동작. HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용.

언제나 스스로가 리소스를 가진 진짜 서버인 것처럼 요청 다룸 - 클라이언트는 게이트웨이와 통신 중임을 모름!

6-4) 터널

: 단순히 HTTP 통신을 전달하기만 하는 특별한 프락시

-> 두 커넥션 사이에서 원래 데이터를 열어보지 않고, 그대로 전달.

주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용됨.

6-5) 에이전트

: 자동화된 HTTP 요청을 만드는 준지능적 웹 클라이언트

728x90
반응형

'source-code > software' 카테고리의 다른 글

GitHub 오류 모음  (1) 2021.02.21
GitHub 기본 명령어 익히기  (0) 2021.02.20
HTTP 완벽 가이드 _ 3장  (0) 2021.02.19
HTTP 완벽 가이드 _ 2장  (0) 2021.02.18
AWS _ Route53 알아보기  (0) 2021.01.09