본문 바로가기

컴퓨터 네트워크/Computer Networking 정리

CH2 : Application Layer (2)

* 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. *

 

Web and HTTP


웹페이지는 objects(HTML file, JPEG image, Java applet, audio file etc)로 이루어져있다.

또한 웹페이즈는 여러 refrenced objects를 포함하는 base HTML-file로 이루어져 있는데, 이 오브젝트들은 각각 Uniform Resource Locator에 의해 addressed 되어있다. 

이를 줄이면 URL, 우리가 아는 그 URL이다.

 

- Hypertet/Hypermeida system : 정보들은 objects의 셋으로 organization되어있다.

 

HTTP(Hyper Text Transfer Protocol) OVERVIEW


웹은 application layer의 프로토콜이다.

이 프로토콜은 웹클라이언트가 웹서버에게 어떻게 요청하는가, 그리고 서버가 클라이언트에게 어떻게 페이지를 전송하는가를 규정한다.

 

이때, 

클라이언트는 HTTP 프로토콜을 통해 요청하고, 받고 그 웹 objects를 보여주는 브라우저를 의미한다.

서버는 HTTP 프로토콜을 통해 응답으로 ojbects를 보내주는 웹 서버를 의미한다. 

 

서버는 동일한 클라이언트에 대한 이전 요청 정보를 유지하지 않는다. 이를 stateless하다고 표현한다.

또한 HTTP는 TCP를 사용하고, well-known 포트넘버는 80이다. 때문에 우리는 http를 사용할때 뒤에 :80을 붙이지 않아도 80이라는 포트넘버가 기본값으로 설정되어 있다.

 

Persitent vs non-Persitent


 

> non-Persistent

 - HTTP/1.0

 - 최대 하나의 object만 TCP connection을 통해 보내질 수 있다.

 - 브라우저는 종종 referenced objects를 가져오기 위해 parallel한 TCP connection을 만든다.

 

 

 

> Persistent 

 - HTTP/1.1

 - 여러개의 object들이 하나의 TCP connection을 통해 보내질 수 있다.

 - 서버는 응답을 보낸 후에 connection을 유지한다.

 - 서버와 클라이언트 사이에 연속적인 HTTP 메시지가 있다면 같은 connection을 통해 보내진다.

 

 

 

Pipelining vs non-Pipelining


Persistent한 HTTP 프로토콜 환경에서 파이프라이닝은 다음과 같은 역할을 한다.

 

 

 

> non-Pipelining

 - client는 이전 요청에 대한 응답이 온 이후에 다음 요청을 보낸다.

 - RTT는 각 referenced object에 대한 시간이다.

 

 

 

 

 

> Pipelining (default in HTTP/1.1)

 - 클라이언트는 이전 요청을 보낸 직후에 새로운 요청을 보낸다.

 - RTT는 전체 referenced objects에 대한 시간이다.

 

 

 

 

 

 

HTTP Message


HTTP 메시지에는 두가지 타입이 있다.

 1. request

 2. response

 

 

 

> Request

 - 기본적인 구조는 다음과 같다.

 - 아스키코드 (human-readable)의 형식을 가진다.

 

 

 

 

 

 

 

 

 

 

 

Uploading 형식에는 두가지 방식이 있다.

 - 1. POST method : Input은 entity body를 통해 업로드 된다.

 - 2. GET method : Input은 URL field에 업로드 된다. 때문에 URL을 보고도 무엇을 요청하는지 알 수 있다. (보안 취약)

 

 

> Response

 - 기본적인 구조는 다음과 같다.

 - 아스키코드 (human-readable)의 형식을 가진다.

 

 

 

 

 

 

 

 

 

 

 

이 응답은 status code을 통해 현재 상황에 대해 응답해주는데 종류는 다음과 같다.

 

- 200 OK : 요청이 성공적으로 왔고, 정보를 성공적으로 반환

- 301 Moved Permanetly : 요청된 object가 moved되었고, 새로운 location을 다음메시지에 표시한다.

- 400 Bad Request : 요청에 문제가 있다. (Synatx Error)

- 404 Not Found : 요청된 문서는 서버에 없다. (잘못된 주소를 입력하면 보는 에러)