[HTTP] 웹 기초

2021. 9. 3. 15:36

[TOC]

HTTP : 웹의 기초

 

 

01. HTTP 개관

  • HTTP에 대한 개략적인 이야기를 담은 챕터
  • 주요 포인트
    • 얼마나 많은 클라이언트와 서버가 통신하는가
    • 리소스가 어디서 오는가
    • 웹 트랜잭션의 작동방식
    • HTTP 통신을 위해 사용하는 메시지 형식
    • HTTP 기저의 TCP 네트워크 전송
    • 여러 종류의 HTTP 프로토콜
    • 인터넷 곳곳에 설치된 다양한 HTTP 구성요소

 

 

1.1 HTTP: 인터넷의 멀티미디어 배달부

  • HTTP(Hypertext Transfer Protocol)
  • HTTP는 신뢰성 있는 데이터 전송 프로토콜을 사용하기 때문에 데이터가 손상되거나 꼬이지 않음을 보장
  • 개발자는 인터넷의 결함이나 약점에 대한 걱정 없이 애플리케이션 고유의 기느을 구현하는데 집중할 수 있음

 

 

1.2 웹 클라이언트와 서버

  • 서버는 HTTP 프로토콜로 소통하기 때문에 HTTP 서버라고 불림
    • 클라이언트가 요청한 데이터를 제공함
  • 가장 흔한 클라이언트는 인터넷 익스플로러나 크롬
  • 서버는 클라이언트의 요청을 받은 객체를 찾고 성공했다면 그것의 타입, 길이 등의 정보와 함께 HTTP 응답에 실어서 클라이언트에 보냄

 

 

1.3 리소스

  • 웹 서버가 웹 리소스를 관리하고 제공함
    • 가장 단순한 웹 리소스는 웹 서버 파일 시스템의 정적파일(text, html, jpeg, avi 등)
    • 동적 컨텐츠는 사용자가 누구인지, 어떤걸 요청했는지에 따라 결과물이 달라진다.
  • 미디어타입
    • HTTP는 웹에서 전송되는 객체 각각에 신중하게 MIME 타입이라는 데이터 포맷 라벨을 붙임
      • MIME = Multipurpose Internet Mail Extensions, 다목적 인터넷 메일 확장
      • EMAIL 시스템에서 사용하다가 HTTp에서 멀티미디어 콘텐츠를 기술하고 라벨을 붙이기 위해 채택됨
  • 웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다.
  • 웹 브라우저는 MIME 타입을 통해 다룰 수 있는 객체인지 확인한다.
  • 종류 (Content-type : 주타입/부타입)
    • HTML -> text/html
    • plain ASCII -> text/plain
    • JPEG -> image/jpeg
    • GIF -> image/gif
    • 애플 퀵타입 동영상 -> video/quicktime
    • MS ppt -> application/vnd.ms-powerpoint

 

  •  URI
    • 웹 서버 리소스는 각자 이름을 갖고 있기 때문에 식별자를 사용한다
    • URI = Uniform Resource Identifier, 통합 자원 식별자
    • 식별자는 URL과 URN이 있음

 

  • URL
    • URL = Uniform Resource Locator, 통합 자원 지시자
    • URL은 특정 서버의 한 리소스에 대한 구체적인 위치를 서술함

 

  • URN
    • URN = Uniform Resource Name, 유니폼 리소스 이름
    • 콘텐츠를 이루는 한 리소스에 대해, 그 리소스의 위치에 영향 받지 않는 유일무이한 이름 역할을 함
    • urn:ietf:rfc:2141 --> 'RFC 2141'이 어디에 있든 지칭하는 URN임

 

 

1.4 트랜잭션

  • HTTP 트랜잭션은 요청 명령(Request)과 응답 결과(Response)로 구성되어 있음
    • 이 상호작용은 HTTP 메시지라고 불리는 정형화된 데이터 덩어리를 통해 이뤄짐

 

  • 메소드
    • HTTP는 HTTP메소드라고 불리는 여러 가지 종류의 요청 명령을 지원
    • 모든 HTTP 요청 메시지는 한개의 메소드를 갖는다.

 

HTTP 메소드 설명
GET 서버에서 클라이언트로 지정한 리소스를 보내라
PUT 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라
DELETE 지정한 리소스를 서버에서 삭제하라
POST 클라이언트 데이터를 서버 게이트웨이 어플리케이션으로 보내라
HEAD 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라

 

 

  •  상태코드
    • 모든 HTTP 응답 메시지는 상태 코드와 함께 반환됨
HTTP 상태 코드 설명
200 좋다. 문서가 바르게 반환되었다.
302 다시 보내라, 다른 곳에 가서 리소스를 가져가라
404 없음 리소스를 찾을 수 없다

 

  • 웹 페이지는 여러 객체로 이루어질 수 있다.
    • 한 페이지 내에서 여러가지 HTTP 트랜잭션이 수행 될 수 있다는 말이다.

 

 

1.5 메시지

  • HTTP 메시지는 단순한 줄 단위의 문자열이다.
  • 웹 클라이언트에서 웹 서버로 보낸 HTTP 메시지를 요청 메시지라고 부른다.
  • 서버에서 클라이언트로 가는 메시지는 응답 메시지라고 부른다.

 

 

  • 요청 메시지
GET /test/hi-there.txt HTTP/1.0   시작줄
---------------------------------
Accept: text/*                    헤더
Accept-Language: en, fr

 

  • 응답 메시지
HTTP/1.0 200 OK                   시작줄
---------------------------------
Content-type: text/plain          헤더
Content-length: 19

---------------------------------
Hi! I'm a Message                 본문
  • 시작줄
    • 메시지의 첫줄
    • 요청 -> 무엇을 해야하는지 표현
    • 응답 -> 무슨일이 일어났는지 표현
  • 헤더
    • 시작줄 다음으론 0개 이상의 헤더가 이어짐
    • 구문분석을 위해 콜론(:)으로 구분됨
    • 헤더는 빈 줄로 끝남
  • 본문
    • 헤더에서 끝난 빈 줄 다음에는 어떤 종류의 데이터는 들어갈 수 있는 메시지 본문이 필요에 따라 온다.
    • 요청의 본문은 웹 서버로 보낼 데이터를 담음
    • 응답의 본문은 웹 클라이언트로 데이터를 반환
    • 문자열이며 임의의 이진 데이터를 포함할 수 있음(이미지, 비디오 오디오 트랙 등)

 

 

1.6 TCP 커넥션

  • TCP : Transmission Control Protocol, 전송 제어 프로토콜
  • TCP / IP
    • HTTP는 어플리케이션 계층 프로토콜이다.
    • HTTP는 네트워크 통신의 핵심적인 세부사항은 신경쓰지 않는다.
    • TCP /IP에게 맡긴다.
      • 오류 없는 데이터 전송
      • 순서에 맞는 전달 (데이터는 보낸 순서대로 도착)
      • 조각나지 않는 데이터 스트림 (언제는 어떤 크기로 보낼 수 있음)
  • TCP / IP는 TCP와 IP가 층을 이루는, 패킷 교환 네트워크 프로토콜의 집합이다.
    • 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해준다.
    • 일단 TCP 커넥션이 맺어지면, 클라이언트와 서버 컴퓨터 간에 교환되는 메시지가 없어지거나, 손상되거나, 순서가 뒤바뀌어 수신된느 일은 결코 없다.
  • 접속, IP 주소 그리고 포트번호
    • HTTP 클라이언트가 서버에 메시지를 전송할 수 있게 되기전에 IP주소와 포트번호를 사용해 TCP / IP 커넥션을 맺어야 함
    • TCP는 서버 컴퓨터에 대한 IP 주소와 그 서버에서 실행 중인 프로그램이 사용 중인 포트번호가 필요함
    • 앞서 말한 URL로 주소를 알아낼 수 있음
http://207.200.83.29:80/index.html
:    IP주소 207.200.83.29
    port번호 80

http://www.netscape.com:80/index.html
:    도메인 이름 or 호스트명 www.netscape.com --> DNS를 통해 IP로 변환 가능
    port 번호 80

http://www.netscape.com/index.html
:    도메인 이름 or 호스트명 www.netscape.com
    port번호가 생략되면 default가 80이다.
통신 순서
1. 웹브라우저는 서버의 URL에서 호스트 명 추출
2. 웹브라우저는 서버의 호스트명을 IP로 반환 (DNS)
3. 웹브라우저는 URL 포트번호(있다면) 추출
4. 웹브라우저는 웹 서버와 TCP 커넥션 맺음
5. 웹브라우저는 서버에 HTTP 요청 보냄
6. 서버는 웹브라우저에 HTTP 응답 리턴
7. 커넥션이 닫히면 웹브라우저는 문서를 보여줌

 

 

1.7 프로토콜 버전

  • HTTP/0.9
    • 1991년에 잠깐 사용
    • GET메소드만 지원, HTTP 헤더 X
  • HTTP/1.0
    • 버전 번호, HTTP 헤더, 추가 메소드, 멀티미디어 객체 처리 추가됨
  • HTTP/1.1
    • 가장 많이 사용됨
    • HTTP 설계의 구조적 결함 교정, 두드러진 성능 최저고하, 잘못된 기능제거에 집중

@@ 1.0 vs 1.1 https://it-mesung.tistory.com/146

  • HTTP/2.0
    • HTTP/1.1 성능 문제를 개선하기 위해 구글의 SPDY 프로토콜을 기반으로 설계 진행

 

 

1.8 웹의 구성요소

  • 프록시 (proxy)
    • 프록시서버는 웹 보안, 어플리케이션 통합, 성능 최적화를 위한 중요한 구성요소
    • 클라이언트와 서버 사이에 위치하여 클라이언트의 모든 HTTP 요청을 받아 서버에 전달
    • 주로 보안을 위해 사용, 신뢰 할 만한 중개자 역할
    • 모든 요청과 응답을 필터링(바이러스 검출 및 콘텐츠 차단 기능)
  • 캐시(cache)
    • 자주 찾는 문서의 사본을 저장해두는 일종의 프록시 서버
    • 클라이언트가 같은 문서를 요청하면 캐시에서 사본을 보냄
    • 서버까지 요청이 안가도 되서 응답이 빠름
  • 게이트웨이
    • 다른 서버들의 중개자로 동작하는 특별한 서버
    • HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용
    • HTTP/FTP 게이트웨이는 FTP URI에 대한 HTTP 요청을 받아 FTP 프로토콜을 이용해 문서를 받아옴
  • 터널
    • 터널은 두 커넥션 사이에서 raw 데이터를 열어보지 않고 그대로 전달해주는 HTTP 어플리케이션
    • HTTP 터널은 주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용
    • 대표적인 예시는 암호화된 SSL 트래픽을 HTTP 커넥션으로 전송하여 방화벽을 통과시킴
  • 에이전트
    • 사용자 에이전트는 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램

 

 

 

reference : HTTP 완벽 가이드

'CS > 네트워크' 카테고리의 다른 글

[HTTP] 커넥션 관리  (0) 2021.09.17
[HTTP] HTTP 메시지 (메소드, 상태코드, 헤더)  (0) 2021.09.12
[HTTP] URL과 리소스 정리  (0) 2021.09.05
[HTTP] GET,POST 정리 및 차이점  (0) 2021.07.13
[네트워크] OAuth 2.0이란?  (0) 2021.04.17

+ Recent posts