1.1 HTTP: 인터넷의 멀티미디어 배달부
HTTP 통신은 신뢰성 있는 정송을 보장한다.
1.2 웹 클라이언트 서버
웹 콘텐츠는 웹서버에 존재한다. 웹 서버는 HTTP 프토로콜로 의사사통하여 HTTP 서버라고 불린다. HTTP 클라이언트가 요청한 웹 콘텐츠를 제공한다. 흔한 HTTP 클라이언트는 웹브라우저이다.
1.3 리소스
웹서버는 웹 리소스를 관리하고, 제공한다. 리소스는 HTML파일과 같은 정적 파일에서 부터, 콘텐츠를 생성하는 프로그
램이 될 수도 있다.
1.3.1 미디어 타입
HTTP는 웹에서 전송되는 객체 각각에 MINE 데이터 포맷 라벨을 붙인다. 이 MINE 타입을 확인함으로 다룰수 있는 객체인지 확인한다. PRIMARY/SPECIFIC 의 형식으로 이루어져있다.
1.3.2 URI
웹 서버 리소스는 각자 이름을 갖고, 그 정보 리소스를 고유하게 식별하는 것이 URI 이다. URI에는 URL 과 URN 이 있다.
1.3.3 URL(uniform ersource locator)
리소스 식별자의 가장 흔한 형태로, 특정 서버의 한 리소스에 대한 구체적 위치를 서술한다.
스킴(schine)://서버주소/웹 서버의 리소스
1.3.4 URN(uniform resource name)
콘텐츠를 이루는 한 리소스에 대해, 위치에 영향을 받지 않는 유일무이한 이름 역할을 한다. 리소스가 이름으 변하지 않게 유지하는 한, 여러 종류의 네트워크, 프로토콜로 접속해도 문제 없다.
1.4 트랜잭션
클라이언트가 웹서버와 리소스를 주고받기 위해 HTTP는 요청명령과 응답 결과를 주고받는다. 이를 통해 메시지라고 불리는 정형화된 데이터 덩어리를 이용해 상호작용을 한다.
1.4.1 메서드
HTTP는 여러 종류의 요청 명령을 지원한다. 한 메시지에는 한 개의 메서드를 갖고, 메서드를 통해 서버의 행동을 지정한다.
EX) GET , PUT , DELETE , POST , HEAD
1.4.2 상태 코드
HTTP 응답 메시지는 상태 코드와 함께 반환된다. 이는 클라이언트에게 요청이 어떻게 처리되었는지 또는 추가 조치가 필요한지를 알려준다.
EX) 200 , 302 , 404
1.4.3 웹페이지는 여러 객체로 이루어질 수 있다.
시각적으로 풍부한 웹페이지를 요청할 때, 대량의 트랜잭션을 수행한다. 페이지 레이아웃 HTML을 가져온뒤, 그에따른 리소스들을 추가로 HTTP트랜잭션을 수행하여 채워넣어 한 웹페이지가 로드된다.
1.5 메시지
HTTP 메시지는 단순한 줄 단위의 TEXT이다. 요청 메시지, 응답 메시지 두가지 종류가 있다.
시작줄 : 요청은 무엇을 해야하는지, 응답은 무슨일이 일어났는지 적혀있다.
헤더 : 0개 이상의 헤더필드가 이어지고, 콜론(:)으로 구분된 여러개의 이름 : 값 쌍이 존재한다. 빈줄로 종료된다.
본문 : 헤더와 달리 어떤 종류의 데이터든 들어갈 수 있다. 요청은 웹서버로, 응답은 웹 클라이언트로 데이터를 전달한다.
1.5.1 간단한 메시지의 예
1.6 TCP(Transmission Control Protocol) 커넥션
1.6.1 TCP/IP
HTTP는 애플리케이션 계층 프로토콜로 네트워크 통신을 TCP/IP 프로토콜에 맡긴다.
TCP는 오류없는 데이터 전송, 순서에 맞는 전달, 데이터 크기에 구애받지 않는다.
TCP/IP는 TCP와 IP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합이다.
HTTP - TCP - IP - DATA LINK - PHYSICAL 의 계층을 띄고 상위계층에서 하위계층으로 , 하위계층에서 상위 계층으로 메시지를 전달한다.
1.6.2 접속, IP 주소 그리고 포트번호
서버에 메시지를 전송하기 위해 IP와 포트번호를 사용해서 클라이언트와 서버 사이에 TCP/IP 커넥션을 맺어야한다.
TCP에서는 서버컴퓨터의 IP와, 포트번호를 알아야 커넥션이 가능하다.
1.6.3 텔넷(Telnet)을 이용한 실제 예제
HTTP는 TCP/IP를 사용하고, 이진형식이 아닌 문자열 기반이므로 웹서버와 직접 대화가 가능하다.
telnet을 통해 직접 요청 메시지를 보내고, 응답 메시지를 확인한다.
보다 유연한 도구로 nc(netcat)도 있다. http://www.bgw,org/tutorials/utilites/nc.php
1.7 프로토콜 버전
1.8 웹의 구성요소
1. 프락시 (proxy) : 클라이언트와 서버 사이에 위치한 http 중개자
2. 캐시(cache) : 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 http 창고
3. 게이트 웨이(gateway) : 다른 어플리케이션과 연결된 특별한 웹 서버
4. 터널 : 단순히 http통신을 전달만 하는 특별한 프락시
5. 에이전트 : 자동화된 http 요청을 만드는 semi-intelligent 웹 클라이언트
1.8.1 프락시(proxy)
웹 보안, 앱 통합, 성능 최적화를 위한 중요한 HTTP 프록시 서버는, 클라이언트의 모든 HTTP 요청을 받아 서버에 전달한다. 사용자를 대신하여 서버에 접근한다.
프록시는 주로 요청과 응답을 필터링하여 보안을 위해 사용된다.
1.8.2 캐시
프록시 캐시는 자주찾는 것의 사본을 저장하여, 다음번 클라이언트가 같은 문서를 요청할 때 캐시의 사본을 받아 더 빠르게 문서를 다운받을 수 있다. HTTP는 캐시를 효율적으로 동작하게 하고, 콘텐츠를 최신으로 유지하면서 프라이버시도 보호하는 많은 기능을 정의한다.
1.8.3 게이트 웨이
게이트웨이는 다른 서버들의 중개자로 동작하는 서버이다. 주로 HTTP 트래픽을 다른 프로콜로 변환하기 위해 사용된다.
게이트웨이는 언제나 리소스를 지닌 서버처럼 요청을 다루고 클라이언트는 이를 알아채지 못한다.
1.8.4 터널
터널은 두 커넥션 사이에서 데이터를 개봉하지 않고, 그대로 전달하는 HTTP 앱이다.
예로, 암호화된 SSL 트래픽을 HTTP 프로토콜로 감싸서 다른 웹 트래픽과 동일하게 여기도록 전송하도록 한다. HTTP 커넥션이후 SSL 커넥션을 통해서 트래픽을 전달한다.
1.9 시작의 끝
1.10 추가정보
HTTP Pocket Reference : http 트랜젝션을 구성하는 각 헤더와 상태 코드에 대한 설명
http://www.w3.org/Protocols/ : Http 에 관한 훌륭한 링크를 포함함
'독서 리마인더 > HTTP 완벽가이드' 카테고리의 다른 글
[HTTP 완벽가이드] 3장 HTTP 메시지 (0) | 2021.05.06 |
---|---|
[HTTP 완벽가이드] 2장 URL과 리소스 (1) | 2021.04.29 |