Computer Science/네트워크

[컴퓨터네트워크] 12. 응용계층 소개(1)

lumana 2024. 5. 22. 23:58

응용 계층 소개

  • 이용자, 혹은 프로그램(프로세스)에게 서비스 제공
  • 프로그램을 위한 다양한 네트워크 서비스 제공
    • 원격컴퓨터접근, 파일전송, 이메일전송, ...

서비스 제공

  • 표준(standard) 응용계층 프로토콜
    • (보통 RFC 표준 문서와 절차를 통해서 그 내용을 구현함)
  • 비표준(nonstandard, proprietary) 응용계층 프로토콜
    • (개인적인 그룹, 집단에서 자체적으로 구현한 것)

응용계층 패러다임

  • Client-server paradigm
    • Traditional paradigm
  • Peer-to-peer paradigm
    • New paradigm
  • Mixed Paradigm

 

클라이언트-서버 프로그래밍

  • 클라이언트는 통신을 시작하고, 요청을 보내는 프로그램
  • 서버는 클라이언트의 요청을 서비스하는 응용 프로그램
  • 서비스 유형
    • TCP
      • ex) 웹, 이메일...
    • UDP
      • ex) DNS, 인터넷 전화...
  • 서버 동작 구현 방법
    • 반목적(Iterative)
    • 동시적(등시적, Concurrent)
      • (대부분 서버가 동시적임)

API

  • Application Programming Interface
  • 어플리케이션을 만들기 위한 하위 함수, 프로토콜, 도구들의 집합
    • (보통 OS쪽에서 많이 제공해줌)
  • 호출 이름, 파라미터 개수, 타입, 리턴값 등이 정해져 있음
    • (==> 형식이 정해져있다)
  • 종류
    • Windows API
    • Socket API
    • OPEN API (Web)

 

 

 

전송계층 사용

  • 인터넷에서의 서비스는 한 쌍의 프로세스에 의해 제공
    • 프로세스는 인간이나 프로그램
  • 한 쌍의 프로세스는 두 응용계층 간에 직접 연결이 없으므로 전송 계층의 서비스를 필요로 함
  • 전송계층 프로토콜은 UDP, TCP, SCTP

UDP 반복적 서비스

실제로는 Concurrent가 대부분이지만 반복적으로 구현해보겠다

  • 반복적 서버는 한번에 하나의 클라이언트 요청 처리
    • 요청을 받고, 처리하고, 응답을 보내나서, 다음 요청을 처리
  • 하나의 요청을 처리하는 동안에, 다른 클라이언트의 요청이나, 같은 클라이언트의 다른 요청도, 기다려야 함
  • 수신되고, 큐에 기다리는 요청은 선입선출 방식으로 처리

 

반복적 TCP 서비스

  • 반복적 TCP 서비스는 자주 사용되지 않음
  • 동작이 간단하므로 이 섹션에서 고찰해 봄

 

동시적 통신

  • 등시 서버는 동시에 여러 클라이언트의 요청을 처리
  • 다양한 언어가 이 방식을 지원
    • C에서는 여러 자식 프로세스가 각각의 요청을 따로 처리
    • Java에서는 각각의 쓰레드(thread)가 요청을 따로 처리

C 반복적 프로그래밍

일반적 이슈

  • 소켓은 송수신 버퍼를 가지지 않는다
    • 데이터를 보내거나 받는 기능이 소켓에 있는 것이 아니다.
  • 소켓은 단지 참조 레이블이다.
    • 예)파일핸들
  • 버퍼나 변수들은 운영체제 내에 있다.

소켓 구조

  • Family
    • PF_INET : IPv4
    • PF_INET6 : IPv6
  • Type
    • SOCK_STREAM : TCP
    • SOCK_DGRAM : UDP
    • SOCK_RAW : IP
    • (일반적으로 TCP/UDP를 사용하는데, IP를 RAW로 사용할 수도 있다)
  • Protocol
    • 0 : TCP/IP

C header files

UDP 반복적 프로그래밍

여기서 Echo는 클라이언트가 서버에게 데이터를 보내면, 서버는 받은 데이터를 클라이언트에게 그대로 반향시켜 data가 잘 전달됬다는 것을 알려줌

  • Echo Client
    • Send a short string of character to server
  • Echo Server
    • Echo back to client
  • Server 프로그램 동작
    • Scoket()으로 소켓 생성
    • Bind()로 지정된 서버 주소와 포트 설정
    • Recvfrom()을 호출하면 데이터가 올 때까지 블록(block)됨
    • Sendto()로 데이터 송신
  • Client 프로그램 동작
    • Socket()으로 서버측 주소로 가는 클라이언트 소켓 생성
    • Sendto(), recvfrom()으로 데이터 송수신
      • (보내고:Sendto 데이터가 올 때 까지 기다림:recvfrom)

 

서버

 

클라이언트