Principles of network applications

이태곤·2023년 9월 14일
0

컴퓨터망

목록 보기
3/32
post-thumbnail

1. Client-Server

  • Server: 항상 연결되어 서비스를 제공하며, 영구적인 IP Address를 가지고 있다.

  • Client: 간헐적으로 서버와 연결되는 디바이스 또는 응용 프로그램
    → 필요에따라 동적으로 IP Address를 부여 또는 고정 IP 사용


2. Peer to Peer

  • 모든 참여자가 서비스를 제공하고 동시에 사용하는 모델로, 각 클라이언트는 동등한 지위를 가진다.

  • Tracker: p2p 망에 접속할 수 있는 최소한의 정보를 가지고 있는 아주 간단한 서버

    1. BitTorrent와 같은 P2P 파일 공유 프로토콜에서 사용된다.
    2. Tracker를 통해 클라이언트들은 파일을 공유하고 다운로드할 수 있다.
      → P2P 네트워크에서 서비스가 제공되고 확장


3. IPC (Inter-Process Communication)

  • 동일한 호스트(또는 컴퓨터) 내에서 실행 중인 프로세스 간의 통신을 위한 방법

  • 서로 다른 호스트 간에 통신이 필요한 경우, 메시지를 사용


4. Socket

  • Transport Layer: 인터넷에서 제공하는 서비스를 사용자가 요구하는 서비스로 변환해주는 기능
    → 예를 들어, 인터넷에서는 패킷 순서가 뒤바뀌는 등 엉망인 상태로 서비스를 제공하지만 이를 전송계층에서 그대로 받아들일지(UDP) 또는 오류를 검출하고 재전송이나 오류 복구 매커지니즘을 요청할지(TCP) 결정한다.

  • TCP: 연결 지향 프로토콜로, 데이터를 안정적으로 전송하기 위해 사용된다.
    3-way handshaking 과정을 통한 연결 설정과 4-way handshaking 과정을 통한 연결 해제 과정이 포함되어 있으며, 가상 회선 교환 방식을 사용하여 신뢰성 있는 데이터 전송을 제공

    • 장점: 데이터의 송수신에 있어 높은 신뢰성을 제공하며, 흐름 제어 및 혼잡 제어를 지원한다.
    • 단점: 연결과정에서 추가적인 시간이 발생하며, 응답을 주고 받으므로 UDP보다 속도가 느리다.

    • 과정(Server)
    1. socket() : OS에게 Socket 생성 요청
    2. bind() : 목적지 IP주소, Port 번호를 설정
    3. listen() : 수신 대기열을 통해 몇 개의 클라이언트를 대기시킬지 설정
      → 대기열: 서버가 동시에 처리할 수 있는 연결 요청의 수
    4. accept(): client의 연결을 기다림
      → Client의 connect() 이후에 연결이 성립되고 read() / write()를 하며 통신

    • 과정(Client)
    1. socket() : Socket을 열기
    2. connect() : 통신할 서버의 IP, Port 입력
  • UDP: 연결 설정과 해제 과정이 없는 비연결형 프로토콜로, 데이터그램 패킷 교환 방식을 사용한다.
    → connect(), listen(), accept() 불필요하며 sendto(), recvfrom()을 통해 통신

    • 장점: 데이터를 빠르게 전송할 수 있으며 코드가 간단하다.
      → 데이터의 신뢰성보다는 빠른 성능이 우선시될 때 UDP를 사용한다.
    • 단점: 신뢰성을 보장하지 않으며 오류 제어나 혼잡 제어를 수행하지 않으며, 최소한의 Checksum 검사를 통한 오류 검증만 진행하므로 데이터의 손실 가능성이 있으며 신뢰성이 낮다.
      → 오류 제어 및 혼잡 제어 등 부가적인 기능을 Application 계층에 위임한다.

    • 과정(Server)
    1. socket() : 소켓 생성
    2. bind() : Port 번호 입력
      → 이 후, sendTo(메세지, DA)를 통해 통신

    • 과정(Client)
    1. socket() : 소켓 열기
      → sendto()를 사용하여 메세지를 보내고, recvfrom()을 통해 메세지를 받는다.

5. TCP vs UDP

  • TCP : 신뢰성있는 데이터의 전송이 중요할 때 사용

  • UDP : 신뢰성보다는 신속성있는 데이터의 전송이 중요할 때 사용

    TCPUDP
    신뢰성 데이터 전송비신뢰성 데이터 전송
    흐름 제어(Kernel Buffer 제어) 및 Network혼잡 제어X
    연결형 프로토콜비연결형 프로토콜
    Circuit switchingPacket switching

0개의 댓글