Application Layer
Process : Program running within a host
Client-Server 구조
- 항상 동작하고 있는 서버가 존재하고, 클라이언트라는 다른 호스트들로부터 서비스 요청을 받는다.
- 클라이언트는 서로 직접적으로 통신하지 않는다
- 서버는 잘 알려진 고정 IP 주소를 갖는다.
- 서버가 클라이언트로부터 오는 모든 요청에 더 응답하는 것이 불가능할 때, 많은 수의 호스트를 갖춘 데이터 센터가 강력한 가상의 서버를 생성하는 역할로 사용된다.
Client process : process that initiates connection 통신을 초기화하는 프로세스
Server process : process that waits to be connected 세션을 시작하기 위해 접속을 기다리는 프로세스
P2P 구조
- 항상 켜져있는 인프라 스트럭쳐 서버에 최소로 의존한다.
- 애플리케이션은 peer라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하게 한다.
- 자가 확장성을 가진다.
- 데이터 센터 등이 필요 없으므로 비용 효율적이다.
클라이언트도 서버 프로세스가 될 수 있고, 서버도 클라이언트 프로세스가 될 수 있다.
Addressing
프로세스가 다른 수행되고 있는 다른 패킷으로 프로세스를 보내기 위해서는 수신 프로세스가 주소르르 갖고 있어야한다.
수신 프로세스를 식별하기 위해서는 두 가지 정보가 필요하다
- 호스트의 주소 / IP 주소가 필요하다
- 호스트 내의 수신 프로세스를 명시하는 식별자 / Port 번호가 필요하다
HTTP ( Hyper Text Transfer Protocol )
웹 페이지 : 객체로 구성된 페이지
- 객체는 단순히 단일 URL로 지정할 수 있는 하나의 파일이다.
- URL 은 객체를 갖고 있는 서버의 호스트의 이름과 객체의 경로 이름을 가지고 있어 이를 통해 구성한다
HTTP : 웹 애플리케이션 계층 프로토콜
- 메시지 구조 및 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대해 정의하고 있다.
- Base HTML 파일이 다른 객체들의 주소를 포함하고 있다 (index.html)
- TCP를 전송 프로토콜로 사용함 (reliable)
- 비상태(stateless) 프로토콜이다 : 클라이언트에 대한 정보를 유지하지 않는다.
모든 클라이언트의 요청과 응답은 완전히 새롭고 독립적인 사건 > 세션을 통해 로그인 이후의 요청 추적 - 평문 기반 프로토콜 : 보안 및 프라이버시에 대한 보호 조치 없음
HTTPS : HTTP + SSL/TLS의 TLS
- 웹 어플리케이션과 통신 채널을 암호화
- 중간자 공격 및 도청 공격 방어
- 웹 어플리케이션에서 수행되는 공격은 피할 수 없음
Non-persistent HTTP (1.0) | 비지속 연결
At most, one object per TCP connection
클라이언트 - 서버 상호작용이 TCP 상에서 발생할 때 각 요청 / 응답 쌍이 분리된 TCP 연결을 통해 보내진다
한 객체 당 하나의 TCP 연결로 이루어진다.
연결 과정 예시
http://localhost:~ 에서 연결될 때 Contains text + 6 Objects
- Client initiates TCP connection at some host on port 80 (80번 포트는 HTTP에게 할당된 포트)
- Server accept connection
- Client sends HTTP request for index.html
- Server response containing requested object
- Server closes TCP connection after sending each object
- Client receives index.html finds the address of the 6 objects
- Step 3~6 repeated for each object
해당 과정을 통해 브라우저는 여러 개의 TCP 연결을 설정하며 다중 연결상에서 웹페이지의 각기 다른 원하는 부분을 요청할 수 있다.
RTT ( Round Trip Time)
Time required for a small packet to travel from client to werver and back
패킷이 클라이언트로부터 서버까지 가고, 다시 클라이언트로 돌아오는데 걸리는 시간
RTT는 propagation delay, transmission delay, process delay, queuing delay를 포함한다.
3-way handshake 과정을 포함하여 소통이 이루어진다.
요청도 1RTT가 소요되고, 응답도 1RTT가 소요되면서, 한번의 요청 / 응답 과정은 총 2RTT가 필요하다.
총 응답 요청 시간은 2RTT + 파일 전송 시간
\[ Delay = 2RTT + transmission time \]
index file은 각 object들의 address 만큼 담고 있으므로, index file을 제일 먼저 가져와야하고, 그 뒤에 object 파일들을 가져올 수 잇다.
Q) 6개의 object를 가진 파일의 Delay는?
A)
\(t_0\) : transmission time for the index file
\(t_i\) : transmission time for object i
Delay (index file + 6objects) \( = 2RTT + t_0 + \sum_{i=1}^{6} (2RTT+t_i) = 14RTT + \sum_{i=1}^6 t_i\)
모든 index file, object file은 전부 TCP 연결을 항상 새롭게 갱신해줘야 하므로, 매번 RTT를 필요로 한다.
Persistent HTTP (1.1) | 지속 연결
서버는 응답을 보낸 후에 TCP 연결을 그대로 유지한다.
Multiple objects can be sent over a single TCP connection
Delay (index file + 6objects) \( = 2RTT + t_0 + \sum_{i=1}^6(RTT + t_i) = 8RTT + \sum_{i=1}^6 t_i\)
index file을 받을 때 설정된 TCP 연결을 계속 유지하여 활용하기 때문에 그 뒤 object를 보내는 과정에서는 1RTT이다.
piplining
HTTP 1.1 with pipelining : new request only when previous response is received \((2RTT + t) +(RTT + 6t)\)
> 6개의 object를 한번에 보낼 수 있음
HTTP 1.1 without piplining : client sends request as soons as it encounters a referenced object
HTTP 1.0 with piplining : \(2RTT + t_0 + \frac{object}{pipeline} \times 2RTT + \sum^{object}_{k=0}t_i\)
Web caches
- 브라우저는 웹 캐시와 TCP 연결을 설정하고 웹 캐시에 있는 객체에 대한 HTTP 요청을 보낸다
- 웹 캐시는 객체의 사본이 저장되어있는지 확인한다.
- 저장되어 있다면, 클라이언트 브라우저로 HTTP 응답 메세지와 함께 객체를 전송한다
저장되어있지 않다면, 기점 서버로 TCP 연결을 설정한다. (이후 객체를 주고받고, 객체를 웹캐시에 저장한다.)
캐시는 요청과 응답을 모두 하는 클라이언트이면서 서버이다.
사용 이유
- 클리이언트 요구에 대한 응답시간을 줄일 수 있다 (병목 현상도 줄일 수 있다)
if cache is close to client > smaller response time and decrease load on distant server - 웹 캐시는 한 기관에서 인터넷으로 접속하는 링크 상의 웹 트래픽을 줄일 수 있다
- 인터넷 전체의 웹 트래픽을 실질적으로 줄여주어 모든 애프리케이션의 성능이 좋아진다.
'CS > Computer Network' 카테고리의 다른 글
DNS (Domain Name System) (1) | 2024.10.15 |
---|---|
SMTP & FTP (1) | 2024.10.15 |
Packet Switching Network Delay | 패킷 교환 네트워크에서의 지연 (5) | 2024.10.09 |
Sharing the Links | 네트워크의 링크 공유 (3) | 2024.10.09 |
Network | 네트워크 (용어 및 동작) (0) | 2024.09.28 |