[시스템프로그래밍] 13주차 네트워크 프로그래밍

행복한 콩🌳·2022년 5월 17일
0

시스템 프로그래밍

목록 보기
16/17

1차시 네트워크 프로그래밍의 개념

데몬
클라이언트 요청에 따라 다양한 서비스를 제공하는 서버 프로그램
TCP
Transmission Control Protocol
연결형 서비스를 지원하는 전송계층 프로토콜
UDP
User Datagram Protocol
비연결형 서비스를 지원하는 전송계층 프로토콜
사용자 데이터그램형 프로토콜

  1. 클라이언트/서버
  • 서버
  • 파일 이름을 받아 해당 파일을 찾아 그 내용을 보내주는 서비스
  • 명령줄 인수로 포트 번호를 받아 해당 소켓을 만든다.
  • 이 소켓을 통해 클라이언트로부터 파일 이름을 받아 해당 파일을 열고 그 내용을 이 소켓을 통해 클라이언트에게 보낸다.
  • 데몬(daemon) : 클라이언트 요청에 따라 다양한 서비스를 제공하는 서버 프로그램
  • 클라이언트
  • 명령줄 인수로 연결할 서버의 이름과 포트 번호를 받아 해당 서버에 소켓 연결을 한다.
  • 이 연결을 통해 서버에 원하는 파일 이름을 보낸 후 서버로부터 해당 파일 내용을 받아 사용자에게 출력한다.
  1. TCP/UDP

2차시 TCP 기반 프로그래밍

동작 방식
반복서버
데몬 프로세스가 직접 모든 클라이언트의 요청을 차례로 처리
동시동작서버
데몬 프로세스가 직접 서비스를 제공하지 않고, 서비스와 관련 있는 다른 프로세스를 fork 함수로 생성해 클라이언트와 연결시켜준다.

  1. 유형에 따른 타입
  • standalone 타입
  • 시스템에서 독자적으로 프로세스가 구동되어 서비스를 제공하는 데몬
  • 메모리에 항상 구동되어 있음.
  • 웹서버(httpd), DB서버(mysqld) 등
  1. xinetd 타입
  • inetd의 단점을 개선한 데몬- 대부분의 리눅스에 사용
  • 수퍼 데몬이라고 하며 다른 하위의 데몬을 관리하는 하위 데몬
  • 외부에서 요청이 있을때만 하위 데몬을 실행시킨 후에 그 데몬이 서비스를 담당하도록 하고 서비스가 종료되면 데몬 종료
  1. 반복서버와 동시동작서버
  • 반복서버(interative server)
  • 데몬 프로세스가 직접 모든 클라이언트의 요청을 차례로 처리
  • 동시동작서버(concurrent server)
  • 데몬 프로세스가 직접 서비스를 제공하지 않고, 서비스와 관련있는 다른 프로세스를 fork() 함수로 생성해 클라이언트와 연결시켜준다.

3차시 UDP 기반 프로그래밍

UDP
User Datagram Protocol
비연결형 서비스를 지원하는 전송계층 프로토콜
사용자 데이터그램형 프로토콜
소켓 통신 과정
서버 : 소켓을 생성, 주소 할당, 데이터를 송수신
클라이언트 : 소켓 생성 후 데이터 수신

  1. UDP 기반 프로그래밍
  • 개념
  • 클라이언트로부터 사전에 연결 요청을 받지 않는다.
  • 클라이언트 : connect() 함수 사용하지 않음.
  • 서버 : bind() 함수 후 listen() 함수 사용하지 않음.
  • 서버 → 클라이언트 : 클라이언트 주소가 구조체임
  • IP를 기반으로 데이터를 전송한다. (TCP와 공통점)
  • 흐름제어(flow control)을 하지 않기 때문에 데이터 전송을 보장 받지 못한다.
  • 연결설정 및 연결 종료 과정도 존재하지 않는다.
  • 연결 상태가 존재하지 않는다.
  • 특징
  • 데이터의 경계(boundary)가 존재하는 UDP 소켓
  • UDP 소켓은 데이터를 송수신하는데 필요한 함수 호출의 수를 정확히 일치 시켜야 한다.
  1. UDP 기반 프로그래밍
  • UDP의 역할
  • 포트 정보에 의한 프로세스의 구분
  • UDP 패킷 = 데이터 그램(Datagram)
  1. UDP 기반 서버/클라이언트
  • 구현
  • 소켓을 생성하고 bind까지만 하면 바로 입출력함수를 사용하면 된다.
  • (socket~bind : 서버, socket : 클라이언트)
  • 일반적으로 연결 설정 과정을 거치지 않는다.
  • 데이터를 주고 받기 위한 소켓(우체통에 비유)은 하나만 생성해도 된다. (패킷은 우편)
  • UDP는 비연결 프로토콜이기 때문에 주소 정보를 알아야 한다.
  • connect 함수 호출을 통한 성능의 향상
  • TCP 소켓에서의 connect 함수의 의미 : IP와 포트의 할당, Three-way handshaking
  • UDP 소켓에서의 connect 함수의 의미
  • IP와 포트의 할당
  • connect함수가 없으면 sendto 함수가 제일 처음 호출되는 시점에 IP와 Port가 할당된다.
  • 클라이언트에서 IP와 Port가 한 번 할당되면 close()함수 호출시까지 변하지 않는다.
  1. 데이터 전송함수
  • 1~4번째 인자는 TCP send함수와 비슷.

  • addr : 목적지 주소 정보

  • addrlen : 목적지 주소 정보 구조체 크기

  • 1~4번째 인자는 TCP send함수와 비슷.

  • addr : 목적지 주소 정보

  • addrlen : 목적지 주소 정보 구조체 크기

  1. 데이터 수신함수
  • 1~4번째 인자는 TCP recv함수와 비슷.
  • addr : 목적지 주소 정보
  • addrlen : 목적지 주소 정보 구조체 크기
profile
매일매일 조금씩 모여 숲이 되자🐣

0개의 댓글