[네트워크] Network Application

2023. 10. 8. 20:57·🤔 컴공 지식/네트워크

TCP/IP 5계층 모델에서 제일 상위 Layer에 해당한다.

Transport / Network / Link / Physical Layer는 모두 운영체제에 구현이 되어있다.

Client-Server

네트워크 Application Layer에서 가장 일반적으로 사용되는 모델이다.

  • 서버(Server):
    • 서버는 항상 켜져 있는(Always-on) 호스트로, 고정된 IP 주소를 가지고 있음.
    • 서버는 클라이언트의 요청을 받아 처리하고 응답을 반환하는 역할을 함.
    • 대규모의 트래픽을 처리하거나 여러 사용자의 요청을 동시에 처리하기 위해, 서버들은 종종 데이터 센터에 배치됨. (Scailing)
  • 클라이언트(Client): 
    • 클라이언트는 사용자의 디바이스에서 실행되는 프로그램으로, 필요한 정보를 얻기 위해 서버에 연결함. 
    • 클라이언트는 꼭 항상 연결된 상태는 아님. 
    • 동적 IP 주소를 가질 수 있으며, 이 경우 IP 주소는 네트워크에 연결할 때마다 변경될 수 있음. 
    • 일반적으로 클라이언트들은 직접 통신하지 않음.
  • HTTP, IMAP, FTP

Peer-peer (P2P)

모든 참여자가 동등한 관계를 가지며 서로 직접 통신하는 네트워크 구조를 의미한다.

  • 컴퓨터 간 양방향 파일 전송 구조
  • 중앙 데이터센터 (서버) 없이 각각의 컴퓨터들이 서버와 클라이언트가 됨.
    • 모든 단말이 동등한 관계, 특별한 기능이나 역할을 지닌 단말은 존재하지 않음.
    • 사용자 수가 방대해져도 특정 참여자에 부하가 집중되지 않음. - 확장성 (self scalability)
  • 설치와 관리가 간편하고 고가의 서버 등을 구입할 필요가 없음.
  • 백업 작업 불편함.
  • 유지 보수 및 관리가 어려움.
  • 동적 IP 할당이라 매번 IP 주소가 변경될 수 있음.
  • P2P file sharing, Blockchain ...

Process Communicate

  • 동일 호스트 내 프로세스 통신: 같은 호스트 내에서 두 프로세스는 운영체제가 정의하는 '프로세스 간 통신(Inter-process communication, IPC)'을 사용하여 서로 통신합니다.
    이는 공유 메모리, 파이프라인, 메시지 큐 등 다양한 형태를 가질 수 있습니다.
  • 다른 호스트 간 프로세스 통신: 서로 다른 호스트에 있는 프로세스들은 메시지를 교환함으로써 통신합니다. 
    이 경우 일반적으로 네트워크 프로토콜을 사용하여 데이터를 전송하게 됩니다.

Socket

메시지를 주고 받는 과정을 Socket을 사용해서 한다. (Different Host) != pipe (Same Host)

  • 프로세스들은 소켓을 통해 메시지를 주고받음.
  • Application Layer와 Transport Layer 사이의 인터페이스라고 보면 된다.
  • 넓은 의미에서는 Application 간에 메시지를 보내는 인터페이스라고도 볼 수 있음.

Addressing Processes

Q. 프로세스의 식별을 위해 호스트의 IP 주소만으로 충분한가?

A. NO. 한 호스트 내에서 여러 프로세스가 동시에 실행될 수 있으므로, 단순히 IP 주소만으로는 특정 프로세스를 정확하게 구분할 수 없다.

  • 식별자 구성: 따라서 프로세스의 식별자는 호스트의 IP 주소와 함께 해당 프로세스와 연결된 포트 번호도 포함한다. 이렇게 함으로써 네트워크 상에서 각각의 프로세스를 정확하게 지정할 수 있다.
  • 예를 들어, HTTP 서버는 일반적으로 80번 포트를 사용하고, 메일 서버(SMTP)는 25번 포트를 사용한다.
    따라서 gaia.cs.umass.edu 웹 서버에 HTTP 메시지를 보내려면, 해당 서버의 IP 주소인 128.119.245.12와 HTTP 서비스가 연결된 포트 번호인 80을 모두 사용하여 메시지 전송 대상을 지정한다.
  • 이처럼 네트워크 상에서 특정 프로세서(애플리케이션)에 데이터 패킷을 정확하게 전달하기 위해서는 IP주소와 포트번호 모두 필요.

Application-layer protocol defines..

  • messages types 무슨 메세지가 전달 되는가(request, response 등)
  • message syntax (필드에 대한 내용 - 앞에 몇비트는 뭘 나타내고 등)
  • message semantics(필드가 의미하는 바가 무엇인지)
  • rules 프로세스들이 언제 메세지를 보내고 받으면 어떻게 처리할지 등
  • 스카이프를 만들었다? -> 프로토콜들을 디자인하거나 open protocols 사용(http, smtp 등) -> 어떤 웹을 만들어도 웹서버들과 통신할 수 있도록 하기 위해 open protocols 사용함

어떤 Transport Service가 앱한테 필요한가?

  • data integrity : 신뢰적 데이터 전송(데이터가 중간에 새면 안된다)
  • timing : 시간을 보장해야 한다. 실시간 애플리케이션(게임)은 더더욱!
  • throughput : 처리량. 대역폭은 많으면 많을수록 좋지만 탄력적 애플리케이션(elastic application)보다 대역폭 민감 애플리케이션(bandwidth-sensitive application)에서 더욱 많이 필요하다.
  • security : 보안은 당연히 지켜져야 한다.

Internet transport protocols services

TCP

  • 신뢰성 있는 전송(Reliable transport) 
    • TCP는 보내는 프로세스와 받는 프로세스 사이에서 신뢰성 있는 데이터 전송을 보장한다. 데이터 패킷이 손실되거나 순서가 뒤바뀌었을 때, TCP는 재전송 요청하거나 순서를 다시 맞추는 등의 조치를 취한다.
  • 흐름 제어(Flow Control)
    • TCP는 송신자가 수신자를 넘어서지 않도록 한다. 즉, 수신자가 처리할 수 있는 속도보다 빠르게 데이터를 보내지 않게 한다.
  • 혼잡 제어(Congestion Control)
    • 네트워크가 과부하 상태일 때, TCP는 송신자의 데이터 전송 속도를 조절하여 네트워크 혼잡을 관리한다.
  • 하지만, TCP는 타이밍, 최소 처리량 보장, 보안 등을 직접 제공하지 않는다.
  • 또한, TCP는 연결 지향적이다. 즉 클라이언트와 서버 프로세스 사이에 데이터 교환을 시작하기 전에 연결 설정 과정이 필요하다.

UDP

  • UDP는 신뢰성 없는(unreliable) 데이터 전송 방식이다. 즉 패킷의 도착 순서나 패킷의 유실에 대해 보장하지 않는다.
  • UDP 자체적으로 흐름 제어나 혼잡 제어 기능을 가지고 있지 않으며, 타이밍, 처리량 보장 및 보안 기능 역시 없다.
  • 그리고 UDP에선 별도의 연결 설정 과정 없이 바로 데이터 패킷을 교환할 수 있다.

왜 UDP를 사용하는 걸까?

  • UDP의 장점은 그 간단함과 낮은 지연 시간에 있다. 복잡한 흐름 제어나 혼잡 제어 메커니즘이 없기 때문에, UDP는 빠른 데이터 전송이 필요하고 일부 패킷 손실이 허용되는 상황에서 유용하다. 
  • 예를 들어, 실시간 오디오/비디오 스트리밍, VoIP(Voice over IP), 온라인 게임 등에서는 패킷의 즉각적인 전송이 중요하며 일부 패킷의 손실은 허용될 수 있다. 이런 경우에 UDP를 사용하면 TCP보다 낮은 지연 시간을 달성할 수 있다.


참고

Computer Networking: A Top-Down Approach 8th edition / Kurose, Ross / Pearson

저작자표시 비영리 동일조건 (새창열림)

'🤔 컴공 지식 > 네트워크' 카테고리의 다른 글

[네트워크] DNS: Domain Name System  (1) 2023.10.08
[네트워크] Web and HTTP  (0) 2023.10.08
[네트워크] Protocol Layers, Service Models  (0) 2023.10.08
[네트워크] Packet Switch Delay, Loss, Throughput  (1) 2023.10.06
[네크워크] Network Edge & Access Networks & Network Core  (0) 2023.09.21
'🤔 컴공 지식/네트워크' 카테고리의 다른 글
  • [네트워크] DNS: Domain Name System
  • [네트워크] Web and HTTP
  • [네트워크] Protocol Layers, Service Models
  • [네트워크] Packet Switch Delay, Loss, Throughput
기멘기
기멘기
Handong Global University | Apple Developer Academy @ POSTECH
  • 기멘기
    현기의 비공식문서 🍎
    기멘기
  • 전체
    오늘
    어제

  • 링크

    • Github
    • Instagram

    • 전체 글 (87)
      • 🍎 iOS (7)
        • 애플 디벨로퍼 아카데미 (7)
      • 🐦 플러터 (32)
      • 🤔 컴공 지식 (10)
        • 알고리즘 (3)
        • 네트워크 (7)
      • 🔥 문해력 상승 (8)
        • 백 준 (8)
        • 프로 그래머 스 (0)
      • 💬 이모저모 (12)
        • CRA 방학 프로젝트 (4)
        • 캡스톤 산학 프로젝트 (5)
        • PARD IT 협업 동아리 (2)
      • 💡 인사이트 (0)
        • 전공 관련 (0)
        • 기타 (0)
      • ✏️ 하루 회고 (TIL) (11)
      • 🔍 ETC (7)
        • HTML-CSS-JS (4)

  • 인기 글


  • 최근 댓글


  • 최근 글


  • 블로그 메뉴

    • 티스토리 홈
    • 블로그 관리
    • 글 작성하기

  • hELLO· Designed By정상우.v4.10.3
기멘기
[네트워크] Network Application
상단으로

티스토리툴바