▶ Web Server와 HTTP

HyperText, Hypermedia, Hyperlink

 

- Hypermedia는 Hypertext와 music, picture 등등을 합쳐 놓은 것을 보고 Hypermedia라고 한다. 또, Hypertext는 보여지고 있는 아스키가 아닌 그 안에 여러 데이터가 내포된 것을 Hypertext라고 하며, Hyperlink는 Hypertext를 클릭하였을 때 데이터가 있는 위치로 이동 할 수 있도록 해주는 포인터이다.

 

URL

- 위 그림은 URL의 구조를 보여주고 있다. URL이란 Uniform Resource Locator의 약자로 위의 그림과 같이 Protocol와 위치(Web server의 Ip 또는 Domain Name 과 port number)가 들어가며 마지막으로 페이지의 이름이 들어간다.

 

Web Browser Server 동작

 

- Web Browser Server의 동작과정은 Client가 웹 서버에게 접속하기 위해서는 DNS로 Domain Name에 해당하는 Ip주소를 얻어 온다. 그 후, 웹 서버와 TCP연결을 한 후 HTTP를 이용하여 웹 서버와 연결을 한다.

 

HTML

- HTML은 Hyper Text Markup Language의 약자로 웹 서버의 각 페이지가 각각의 HTML을 가지고 있는데 클라이언트는 HTML의 한줄 씩 web server에게 요청을 하여 data를 받아온다.

 

- HTTP 동작

① Persistent case

 

- Persistent 동작 방식은 client가 web server로 접속을 하기 위해 TCP연결을 한 후 client가 web server에게 접속을 요청 하면 web server는 client에게 접속하려는 페이지에 해당하는 html을 전송해준다. 그럼 client는 web server가 전송한 html의 값들을 보고 web server에 접속을 할 수 있는데 이 때, html에 아스키 코드로 된 라인과 data(그림, 음성 등)로 되어 있는 라인이 있으면 아스키 코드로 된 라인은 그냥 web browser에 보이지만 data로 된 라인은 client가 web server에게 해당 data를 요청해서 TCP를 통하여 데이터를 받아 온 후 web browser에 보이게 할 수 있다.

 

- Persistent 동작은 client가 web server에게 접속하기 위해 3 hand shaking(TCP연결)을 하고 난 뒤에 client가 web server에게 페이지에 관한 data들을 주고 받은 후 Keepalive타임 안에 새로고침을 누르면 client는 web server에게 web page가 변했는 가를 물어본다.(이 때. 기준이 되는 시간도 함께 전송) web page가 변하지 않았다면 Not Modified 라고 알려주고 변한게 있다면 새롭게 변한 data들을 함께 전송해 준다. 또, Keepalive타임 동안 패킷 전송이 있지 않으면 4 hand shaking 또는 Reset Message를 전송하여 TCP연결을 종료하게 된다. 연결이 종료 된 후 새로고침을 누르면 다시 TCP연결을 하고 web page가 변한게 있으면 새로운 data를 주고 변한게 없으면 Not Modified라고 다시 알려 준다.

 

② Non-Persistent

 

- Non-Persistent방식은 하나의 요청이 올 때 TCP연결을 하고 하나의 답변을 하면 TCP연결이 종료가 된다. 위 그림에 대해서 설명해보면 client가 web server에게 접속을 요청하면 TCP연결이 되고 web server는 web page에 해당하는 html을 전송해 준다. 그 후 접속이 종료가 된다. 그 후 client는 수신 한 html을 보고 받아와야 할 data가 있으면 web server와 다시 TCP연결을 하고 그 뒤에 data에 대해 요청을 한다. 그럼 web server는 client에게 데이터를 전송 해주고 연결을 종료 한다.

 

 Proxy Server

 

- Proxy란 남이 해야 할 일을 대신 하는 것이라는 뜻을 내포하고 있다. 여기서 web proxy server는 web server가 하는 일을 대신 하는 server이다. client는 web server로 접속 하려고 한다. 하지만 client는 web proxy server와 TCP연결을 한 후 web server의 정보를 web proy server에게 요청을 한다. 그럼 web proxy server는 web server와 TCP 연결을 하고 client에게 받은 요청을 web server에게 요청을 한다. 이 때, web proxy server는 자신이 거쳐서 전달 했다는 것을 web server에게 via명령어를 통해 알려준다. 그럼 web server는 web proxy server에게 response하고 연결을 종료 하고 web proxy server는 web server에게 받은 response를 client에게 전달을 한다. 전달을 web proxy server에서 전달했다는 것을 via명령어를 통해 알려주고 TCP연결을 종료 한다.

 

→ web proxy server를 사용하는 이유는 web server에게 오는 request를 분산시키기 위해 사용한다. 또 보안이 우수하다. 외부에서 패킷을 캡쳐해보면 client의 ip는 보이지 않고 web proxy server의 ip만 보이게 된다. 또, web proxy serveer는 특정 web에 연결을 시도하려고 하는 client의 요청을 막을 수도 있다. 만약 client가 특정 web에 연결을 시도하려고 하였는데 요청이 막혀 접속이 안되서 web proxy server를 거치지 않고 web에 접속하려고 하면 TCP연결에서 막혀버린다.(방화벽 때문에 client에 해당하는 ip에서 TCP연결을 할 때 SYN이 올 경우 연결을 해주지 않음) 이렇게 보안과 request의 분산이 있어 web proxy server를 사용한다.

 

Cache Server

- 위 그림은 chche server의 동작과정 중 한 가지를 나타낸 그림이다. cache server도 proxy server와 마찬가지로 client가 web server에게 연결을 요청하려고 할 때 우선 cache server와 TCP연결을 하고 web server에 접속요청을 하면 cache server는 web server와 TCP연결을 하고 web server에 요청을 한다 이 때에도 via를 통해 자신이 전달하는 것을 알린다. 그럼 web server는 response해주고 TCP연결을 끊는다. 그 후 cache server는 response를 client에게 전달을 한다. 이때에도 via를 통해 자신이 전달하는 것을 알린다. 그 후 client와 TCP연결을 종료 한다. 여기 까지는 위에서 말했다시피 proxy server와 같은 동작을 보인다. 하지만 여기서 그치지 않고 cache server는 web server에 대한 정보를 자신이 가지고 있게 된다. 만약 client2에서 client1이 접속한 web server에 대해 연결 요청을 하면 cache server는 다시 web server에게 전달하는 것이 아니라 web server대신 cache server가 대신 request에 대한 response를 client2에게 한다. 여기서 중요 한 것이 있는데 web server가 바뀌었을 수도 있기 때문에 cache server는 web server가 바꼇는지 안바꼇는지 물어본 후 바 안 바뀌었을 때는 위에서 말했다 시피 자신이 가지고 있는 web server에 대한 정보를 알려주고 만약 바뀌었을 때는 처음 과 같이 request를 전달하여 response를 받아 response를 전달한다.

 

- 위에서 설명한 것을 위 그림을 보면 정확히 알 수 있다. 만약 web server의 만기 시간이 지나 만기 되었더라도 cache server의 memory가 부족하지 않다면 계속 web server에 대한 정보를 보관 할 수 있기 때문에 client2로부터 request가 오면 web server에 대해 바뀌었는지 안바뀌었는지만 확인 한 후 response를 한다.

 

 

1. Linux 컴퓨터에 web server 설치 와 index.html 파일 수정 및 web server에 접속 실습

 

⦁ yum intstall –y httpd

⦁ 방화벽 설정

⦁ index.html 파일 수정

(1) 터미널에서 yum install –y httpd 명령어를 통해 http server를 설치 한 후, 외부에서 접속 할 수 있도록 방화벽을 설정하고 난 뒤 vi /var/www/html/index.html 명령어를 통해 index.html 파일을 위와 같이 설정 한다.

 

web server의 설정이 완료 된 후 접속을 하였을 때 수집되는 패킷은 우선 client가 web server에게 접속을 하려고 요청을 하면 web server는 해당 web page의 html을 보낸다. 그 후 web browser에 뛰워지게 된다. 하지만 그림 파일이 내포되어 있기 때문에 그림을 뛰우기 위해 다시 web server에게 그림에 대한 data를 요청하면 TCP를 통해 data가 전송이 된다. 그럼 web browser에 web server가 설정한 html에 대한 정보가 web browser에 뛰워지게 된다. 5번째와 6번째 패킷은 favicon에 관한 패킷인데 favicon은 위의 그림에서 파란색으로 표시한 그림을 favicon이라고 한다. web server에서 favicon에 관한 설정을 하지 않아 client가 favicon에 대해 request를 하였지만 web server는 favicon에 관한 정보는 없다고 response한 것을 알 수 있다.

+ Recent posts