서적  'HTTP 완벽 가이드 - 웹은 어떻게 동작하는가'를 요약 정리한 내용입니다.

 

1HTTP 개관

 

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

 

1.2 웹 클라이언트와 서버

클라이언트(웹 브라우저)는 서버에게 HTTP 요청을 보내고 서버는 요청된 데이터를 HTTP 응답으로 돌려준다.

 

1.3 리소스

리소스는 웹에 콘텐츠를 제공하는 모든 것들을 말한다.

예시) 텍스트 파일, HTML 파일, 워드 파일, 이미지 파일 등 정적 파일과 웹 캠, 주식 거래, 전자상거래 게이트웨이 등 동적 파일

 

1.3.1 미디어 타입

웹 서버는 모든 HTTP 객체 데이터에 MIME 타입을 붙인다. 웹 브라우저는 서버로부터 객체를 돌려받을 때, 다룰 수 있는 객체인지 MIME 타입을 통해 확인한다. MIME 타입은 주 타입과 부 타입으로 이루어진 문자열 라벨이다.

예시) HTML text/html, plain ASCII-text/plain, JPEG-image/jpeg

 

1.3.2 URI

웹 서버 리소스는 각자 이름을 갖고 있는데 이를 통합 자원 식별자, URI(unifrm resource identifier)라 한다. URI의 종류에는 URNURL이 있다.

 

1.3.3 URL

통합 자원 지시자(Uniform resource locator, URL)는 리소스 식별자의 가장 흔한 형태로, 특정 서버의 한 리소스에 대한 구체적인 위치를 서술하며 어떻게 접근할 수 있는지도 나타낸다.

예시) (https://) + (postfiles.pstatic.net) + (/MjAyMjAxMjJfMjAw)

첫 번째 부분은 스킴이라고 하는데, 리소스에 접근하기 위해 사용되는 프로토콜을 서술한다.

두 번째 부분은 서버의 인터넷 주소를 제공한다.

마지막은 웹 서버의 리소스를 가리킨다.

 

1.3.4 URN

유니폼 리소스 이름(Uniform Resource Name, URN)은 콘텐츠를 이루는 한 리소스에 대해 그 리소스의 위치에 영향 받지 않는 이름 역할을 한다. URN은 위치 독립적이어서 이름을 변하지 않게 유지하는 한, 리소스를 여기저기로 옮기더라도 문제없이 동작하며 여러 종류의 네트워크 접속 프로토콜로 접근해도 문제없다.

 

1.4 트랜잭션

HTTP 트랜잭션은 클라이언트가 서버로 보내는 요청 명령과 서버가 클라이언트에게 돌려주는 응답 결과로 구성되어 있다.

 

1.4.1 메서드 (요청 명령)

HTTPHTTP 메서드라고 불리는 여러 가지 종류의 요청 명령을 지원한다. 모든 HTTP 요청 메시지는 한 개의 메서드를 갖는다. 메서드는 서버에게 어떤 동작이 취해져야 하는지 말해준다.

예시)

GET-서버에서 클라이언트로 지정한 리소스를 보내라

PUT-클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라

DELETE-지정한 리소스를 서버에서 삭제하라

POST-클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라

HEAD-지정한 리소스에 대한 응답에서 HTTP 헤더 부분만 보내라

 

1.4.2 상태 코드 (응답 결과)

모든 HTTP 응답 메시지는 상태 코드와 함께 반환된다. 상태 코드는 클라리언트에게 요청이 성공했는지 추가 조치가 필요한지 알려주며, 숫자 상태 코드에 더해 텍스트로 된 사유 구절도 함께 보낸다.

 

1.4.3 웹페이지는 여러 객체로 이루어질 수 있다.

하나의 작업을 수행하기 위해서는 여러 HTTP 트랜잭션을 수행한다. 예를 들어 페이지 레이아웃을 서술하는 HTML 뼈대를 한 번의 트랜잭션으로 가져온 뒤 이미지, 그래픽 등을 가져오는 HTTP 트랜잭션을 추가로 수행한다.

 

1.5 메시지

HTTP 요청 및 응답 메시지는 시작줄, 헤더, 본문으로 이루어진다.

시작줄 요청은 무엇을 해야 하는지, 응답은 무슨 일이 일어났는지 나타낸다. 상태코드와 사유 구절, HTTP 버전 등이 여기에 포함된다.

헤더 요청의 경우 호스트 정보와 무엇을 받아올 것인지, 응답의 경우 서버 정보와 내용의 길이와 타입 등이 해당된다.

본문 데이터를 실어 보내거나 반환한다.

 

1.6 TCP 커넥션

TCP란 전송 제어 프로토콜 (Transmissoin Control Protocol)을 의미한다.

 

1.6.1 TCP/IP

HTTP는 애플리케이션 계층 프로토콜로, 네트워크 통신의 핵심적인 세부사항은 신경 쓰지 않으며 이를 TCP/IP에게 맡긴다. TCP/IPTCPIP가 층을 이루는 패킷 교환 네트워크 프로토콜의 집합이다. 이는 각 네트워크와 하드웨어의 특성을 숨기고 어떤 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해준다. TCP 커넥션이 맺어지면 클라이언트와 서버 컴퓨터 간 교환되는 메시지가 없어지거나, 손상 되거나, 순서가 뒤바뀌어 수신되는 일은 결코 없다.

 

1.6.2 접속, IP주소, 포트번호

TCP/IP 커넥션을 맺기 위해서는 IP 주소와 포트번호를 이용해 클라이언트와 서버 사이에 커넥션을 맺어야 한다. IP주소와 포트번호는 URL을 이용하여 알 수 있다. URL에는 IP주소와 포트번호가 있으며, IP 주소는 문자로 된 도메인 이름으로 대체하여 사용하기도 한다. (일종의 별명)

 

1.7 프로토콜 버전

HTTP 0.9, HTTP 1.0, HTTP 1.1, HTTP 2.0

 

1.8 웹의 구성요소

인터넷과 상호작용 할 수 있는 웹 애플리케이션은 많다.

(예시) 프락시, 캐시, 게이트웨이, 터널

 

1.8.1 프락시

프락시는 클라이언트와 서버 사이에 위치한 HTTP 중개자이다. 클라이언트의 HTTP 요청을 수정하고 서버에 전달하며, 바이러스를 검출하거나 성인 콘텐츠를 차단하는 등 요청과 응답을 필터링한다.

 

1.8.2 캐시

캐시는 많이 찾는 웹페이지를 클라이언트 가까이에 보관하는 HTTP 창고이다. 웹캐시와 캐시 프락시는 자신을 거쳐가는 문서들 중 자주 찾는 것의 사본을 저장하는 HTTP 프락시 서버이다. 클라이언트는 웹 서버보다 근처의 캐시에서 훨신 더 빨리 문서를 다운 받을 수 있다.

 

1.8.3. 게이트웨이

게이트웨이는 다른 애플리케이션과 연결된 특별한 웹서버이다. 게이트웨이는 다른 서버들의 중개자로 동작하는데, 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용된다. 예컨대 HTTP/FTP 게이트웨이는 FTP URI에 대한 HTTP 요청을 받아들인 뒤, FRP 프로토콜을 이용해 문서를 가져온다.

 

1.8.4. 터널

터널은 단순히 HTTP 통신을 전달하기만 하는 프락시이다. 터널은 두 커넥션 사이에서 날 데이터를 열어보지 않고 그대로 전달한다. HTTP 터널은 주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해줄 때 사용한다.

 

1.8.5 에이전트

사용자 에이전트는 사용자를 위해 HTTP 요청을 만들어주는 클라이언트 프로그램이다. HTTP 요청을 만들어주는 클라이언트 프로그램은 모두 HTTP 에이전트이며 웹 브라우저도 여기에 속한다.

 

+ Recent posts