Application Layer

미노·2025년 6월 12일

Computer Network

목록 보기
10/23
  • Application : 사람이 사용하는 응용소프트웨어, ex) Web, e-mail, P2P file sharing, etc

Client Server Paradigm

  • Server
    • 항상 켜져있음
    • 영구 IP주소
    • 데이터센터의 확장성을 위해서 사용
  • Clients
    • server에 접속, 연결함
    • 필요할 때만 서버에 접속
    • 동적 IP주소
    • 다른 Clients와 직접 통신하지 않고 server를 통해 통신

⇒ HTTP, IMAP, FTP, etc


P2P (Peer to Peer) Architecture

  • No server
  • 두 노드가 직접 통신 → 클라이언트와 서버의 역할을 동시에 함
  • Self scalability (자체확장성) : 새로운 노드가 추가될 때마다 네트워크도 따라 커짐
  • 노드들은 간헐적으로 연결, IP주소를 바꿈

Process communicating

  • process : 작동중인 프로그램

  • 한 호스트내의 프로세스들은 상호통신함 (OS에 의해), ex) 핸드폰 알림창

  • 서로 다른 호스트의 프로세스들은 메시지를 주고받음

  • Clients process : Server에게 요청

  • Server process : Client의 요청에 응답


Socket

  • Application layer와 Transport layer사이에 위치 → 소켓을 통해 OS와 app이 데이터를 주고받음
  • Application layer내의 process들은 app에서 관리, 소켓을 통해 내보내면 OS가 관리함.

Addressing process

  • app → OS 데이터를 보낼 때 주소를 같이 보내야 함 ← 이 주소를 IP라 함
  • Identifier : IP + Port numbers (Socket)

Application-layer protocol defines

  1. Types of message, ex) request, response
  2. Message of syntax : 메시지의 문법, All protocol, All layers define, 0 or 1로 이루어진 bits
  3. Message semantics : 메시지의 내용, 각 필드가 무엇을 정의하는지
  • RFC : Open protocol(HTTP)이 정의되어 있는 문서, 상호운용성을 위해

What transport services does an app need?

  1. Data integrity (데이터의 무결성) :
    • 파일, 웹 같은 앱은 데이터가 100% 신뢰할 수 있어야 하며, loss가 발생해서는 안됨
    • 오디오 같은 앱은 약간의 loss가 발생해도 견딜 수 있음.
  2. Timing : 인터넷 전화나 게임같은 앱들은 효과적으로 사용하기 위해 낮은 delay가 필요함
  3. Throughput : 멀티미디어 앱 (실시간 오디오와 비디오 스트리밍) 사용자에게 최적의 서비스를 제공해야하므로 Effective throughput이 필요함
  4. security : encryption (암호화), data integrity (데이터 변조감지)

  • 파일 전송 및 다운로드, 이메일, 웹문서는 데이터의 손실이 발생하면 안됨. 탄력적인 처리량 및 시간에 민감하지 않음
  • 실시간 오디오 및 비디오는 어느정도의 손실은 감내할 수 있음. 역시 탄력적인 처리량이 필요하며 시간에 매우 민감함
  • 스트리밍 오디오 및 비디오는 어느정도의 손실은 감내할 수 있음. 실시간 오디오 및 비디오와 같이 탄력적인 처리량이 필요하지만 시간에는 덜 민감함.
  • 대화형 게임은 어느정도의 손실은 감내할 수 있음. 높은 처리량이 필요하며 시간에 매우 민감함
  • 텍스트 문자는 손실이 있으면 안됨. 탄력적인 처리량이 필요하며 시간에 민감할 수도 아닐수도 있음.

TCP UDP

  • TCP :
    • reliable transport (신뢰할 수 있는 전송)
    • flow control : Data를 어느 루트로 보낼지 (end-end) ← TCP의 핵심요소
    • congestion control : 과부하를 통제하며 flow control ← TCP의 핵심요소
    • reliable transport에 중점을 둔 프로토콜이기 때문에 timing, minimum throughput 등을 제공하지 않음
    • File transfer / download, e-mail, Internet telephony, streaming video, audio
  • UDP :
    • unreliable transport
    • reliability, flow control, congestion control 등을 제공하지 않음
    • Game, Internet telephony
  • TLS (Transport Layer Security):
    • TCP 에서 보안을 강화한 프로토콜
    • Application layer에서 구현됨.

Web, HTTP

  • Web :

    • 객체들(Objects)의 모임. 각각의 객체는 다른 웹서버에 저장
    • 객체는 HTML, Audio, JPEG, etc 파일이 될 수 있음
  • HTTP (HyperText Transfer Protocol) :

    • Web의 Application Protocol, 웹에서 데이터를 전송하기 위한 프로토콜, 주로 HTML 파일
    • Client와 Server간의 request, response의 반복
    • TCP Protocol을 사용함, port number ⇒ 80
    • TCP connection을 연결, connection을 통해 연결됐다 끊기기 때문에 stateless함
    1. Non-persistent HTTP : 한 번의 connection에 하나의 객체(안에는 여러 내용이 포함될 수 있음)만 읽음 ← 보안 때문

      1. TCP connection을 server에 요청, port = 80
      2. Server에서 응답하여 (request message) 허락하면 connection 연결, 이 때부터 데이터 전송이 가능
      3. 데이터 전송 (하나의 객체)후 connection 끊음

      ⇒ Response Time = 2RTT (왕복시간) + File transmission time

    2. persistent HTTP : 한 번의 connection에 여러개의 객체를 읽음


HTTP request message

  1. header : body를 전달하는데 필요한 값들
  2. body : 실제로 보내는 정보들

HTTP response message

  • HTTP response codes
    • 200 : OK
    • 301 : 요청한 object는 다른 곳으로 옮겨졌다
    • 400 : server가 너의 요청을 이해하지 못했다
    • 404 : 요청한 자료는 server에서 찾을 수 없다
    • 505 : HTTP 버전이 맞지 않음 (잘 발생하지 않음)

Cookie


Web caches (Proxy server)

  • cache memory와 같이 client의 request를 origin server까지 가지 않고 proxy server를 통해 request를 만족시키기 위함
  • client는 request를 proxy server로 보냄 → proxy server에서 client request가 있는지 확인 후 있으면 client에게 réponse msg를 보냄 없다면 origin server로 request 보낸 후 response를 받아 client에게 전송

Why Web Caching?

  1. Reduce response time
  2. Reduce traffic

E-mail

E-mail


DNS (Domain Name System)

DNS (Domain Name System)

0개의 댓글