네트워크 - application layer(2)

2020. 2. 5. 15:06Security/네트워크

* web and HTTP

- web page는 object로 구성된다. 
- Object는 HTML 파일, 음성 파일, JPEG 파일, java applet 등이다. 
- Web page는 여러 object 로 구성된 HTML 파일과 여러 참조 개체로 구성 
- 각각의 object는 URL이라는 주소를 가진다. 
- www.someschool.edu/some/pic.gif에서서 edu까지는 hostname 그 이후는 path name

 

HTTP(hyper text transfer protocol) 

h

- client/server model 
- client는 browser라는 웹용 client app으로 질의를 전달하고 요구한 web page를 보여주는 기능을 담당 
- server는 web server라는 서버로 client의 질의에 응답하고 여러 web object를 client에 전송. 

using TCP 
- client가 먼저 서버에 80번 포트로 TCP 연결을 시작.(creates socket) 
- 서버가 client의 접속을 승낙하면 접속이 이루어진다. 
- 접속 이후에는 client와 server는 socket inteface를 통해 TCP와 연결된다. (message를 주고 받음.)

 

stateless protocol(무상태 프로토콜)

- 어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜

- https는 무상태 프로토콜  이다. server는 client에 대한 어떠한 상태정보도 저장하지 않고, 질의만 수행

 

RTT(Round Trip Time)

 

- 패킷이 클라이언트로부터 서버까지, 다시 클라이언트로 되돌아오는 데 걸리는 시간을 의미

- 첫 번째 RTT는 TCP connection을 위한 세팅까지 걸리는 시간 
- 두 2번째 RTT는 하나의 파일에 대해서 서버가 클라이언트에게 요청을 받고 보내는고 받는데 걸리는 시간
- TR은 파일 전송시간 

 

비지속연결(non-persistent)

- 각각의 object마다 하나의 TCP connection을 이용. 
- HTTP1.0에서 이용.

- object를 하나 받을때마다 연결이 끊어지고 받을때마다 연결해야 함.

- non persistent http의 전송시간은 파일마다 2RTT + file trans time

 

non-persistent의 통신 과정

1. HTTP 클라이언트는 HTTP의 기본 포트 번호 80을 통해 서버로 TCP 연결을 시도.

2. HTTP 클라이언트는 1단계에서 설정된 TCP 연결 소켓을 통해 서버로 HTTP 요청 메시지를 보낸다. 

3. HTTP 서버는 1단계에서 설정된 연결 소켓을 통하여 요청 메시지를 받는다. 저장장치로부터 객체를 추출하고 HTTP 응답 메시지에 그 객체를 캡슐화한다. 그리고 응답 메시지를 소켓을 통해 클라이언트로 보낸다.

4.  HTTP 서버는 TCP에게 TCP 연결을 끊으라고 한다.(실제로는 TCP 클라이언트가 응답 메시지를 올바로 받을때 까지 연결을 끊지 않는다.)

5. HTTP 클라이언트가 응답 메시지를 받으면, TCP 연결이 중단된다. 

6. 그 이후에 참조되는 모든 객체에 대하여 처음 4단계를 위 과정 반복.

 

지속연결(persistent) 
- client server간에 하나의 TCP connection을 이용 여러 개의 object를 전송.

- Server는 응답을 보낸후 TCP연결을 유지.

- 동일 client/server의 요청/응답 message는 같은 connection을 이용.

- client는 response을 수신해야 새로운 request를 송신. 
- 객체를 수신하는데 1RTT만 사용.

- persistent의 파일 전송 시간은 첫 파일은 2RTT+TR(파일 전송 시간), 그 다음 파일부터는 1RTT+TR
- HTTP1.1에서 이용. default로 설정 되어 있다.

 

* 쿠키 

- 쿠키는 브라우저에 존재하는 임시 저장 창고

- 세션은 정보를 서버에 저장하지만 쿠키는 자신의 브라우저에 저장 

- 특정 페이지에 쿠키를 요청하는 프로그램이 깔려있을 경우 id, 비밀번호등이 유출될 위험성 존재

- 이러한 공격에 대비해  id와 비밀번호가 아닌 세션(SID)을 만들어서 확인.

 

프록시 서버

- client가 origin server에 접속하고 싶은데 접속할 수 없는 경우, proxy server를 통해 접속할 수 있음.

- 프록시 서버를 사용하면 상황에 따라 client가 더 빠르게 이용 가능