* 이 글에 관련된 모든 내용은 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 : 요청된 문서는 서버에 없다. (잘못된 주소를 입력하면 보는 에러)
'컴퓨터 네트워크 > Computer Networking 정리' 카테고리의 다른 글
CH2 : Application Layer (4) (0) | 2021.10.16 |
---|---|
CH2 : Application Layer (3) (0) | 2021.10.16 |
CH2 : Application Layer (1) (0) | 2021.10.16 |
CH1 : Computer Networks and the Internet (4) (0) | 2021.10.16 |
CH1 : Computer Networks and the Internet (3) (0) | 2021.10.15 |