1 / 40

TCP / IP 소켓 프로그래밍

TCP / IP 소켓 프로그래밍. 3 주차 ( Ch.10 ~ Ch.14 ). 세부 계획. Chapter 10 멀티프로세스 기반의 서버구현. 다중 접속 서버와 비 다중 접속 서버. 비 다중 접속 서버. 다중 접속 서버. 서비스 시간이 조금 느리다 접속 대기 시간이 짧다 ( 병렬 ). 서비스 시간이 빠르다 접속 대기 시간이 길다 ( 순차 ). 다중 접속 서버란 ?. 둘 이상의 클라이언트 에게 동시에 접속을 허용하여 , 동시에 둘 이상의 클라이언트에게 서비스를 제공 하는 서버를 의미한다.

idra
Télécharger la présentation

TCP / IP 소켓 프로그래밍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TCP / IP 소켓 프로그래밍 3주차 (Ch.10 ~ Ch.14 )

  2. 세부 계획

  3. Chapter 10멀티프로세스 기반의 서버구현

  4. 다중 접속 서버와 비 다중 접속 서버 비 다중 접속 서버 다중 접속 서버 • 서비스 시간이 조금 느리다 • 접속 대기 시간이 짧다 (병렬) • 서비스 시간이 빠르다 • 접속 대기 시간이 길다 (순차)

  5. 다중 접속 서버란? 둘 이상의 클라이언트에게 동시에 접속을 허용하여, 동시에 둘 이상의 클라이언트에게 서비스를 제공하는 서버를 의미한다.

  6. 프로세스란? • 간단하게는 실행중인 프로그램을 뜻한다. • 실행중인 프로그램에 관련된 메모리, 리소스등을 총칭하는 의미이다. • 멀티프로세스 운영체제는 둘 이상의 프로세스를 동시에 생성 가능하다.

  7. Fork 함수 • fork 함수가 호출되면, 호출한 프로세스가 복사되어 fork 함수 호출 이후를 각각의 프로세스가 독립적으로 실행하게 된다. 부모 자식

  8. Fork 함수 사용 방법 pid=fork(); if(pid==0) // if Child Process gval+=2, lval+=2; else // if Parent Process gval-=2, lval-=2; if(pid==0) printf("Child Proc: [%d, %d] \n", gval, lval); else printf("Parent Proc: [%d, %d] \n", gval, lval);

  9. 좀비 프로세스 실행이 완료되었음에도 불구하고, 소멸되지 않은 프로세스 • wait 함수 • waitpid함수 퇴치 방법은 ?

  10. 시그널 핸들링 특정 상황이 되었을 때 운영체제가 프로세스에게 해당 상황이 발생했음을 알리는 일종의 메시지를 가리켜 시그널이라 한다. pid=fork(); …………… if(pid==0) printf("Child Proc: [%d, %d] \n", gval, lval); else printf("Parent Proc: [%d, %d] \n", gval, lval); return 0; 시그널 발생 !

  11. 프로세스 기반 다중접속 서버 연결이 하나 생성될 때마다 프로세스를 생성해서 해당 클라이언트에 대해 서비스를 제공하는 것이다.

  12. fork 를 통한 디스크립터의 복사 프로세스에 의해 만들어진 소켓이 복사되는 게 아니고, 파일 디스크립터가 복사된다

  13. Chapter 11프로세스간 통신

  14. 프로세스간 통신이란? 프로세스간통신 프로세스간 통신의 어려움 • 모든 프로세스는 자신만의 메모리공간을 독립적으로 구성한다. • 프로세스 상호간 메모리 공간에 접근이 불가능하다. • 운영체제가 별도의 메모리 공간을 마련해 줘야 프로세스간 통신이 가능하다. • 두 프로세스 사이에서의 데이터 전달 • 두 프로세스 사이에서의 데이터 전달이 가능 하려면, 두 프로세스가 함께 공유하는 메모리가 존재해야 한다.

  15. 파이프 기반의 프로세스간 통신 운영체제는 서로 다른 프로세스가 함께 접근할 수 있는 메모리 공간을 만들고, 이 공간의 접근에 사용되는 파일 디스크립터를 반환한다.

  16. 프로세스간 양방향 통신 BAD GOOD

  17. Chapter 12멀티플렉싱

  18. 멀티 프로세스의 단점 • 프로세스의 빈번한 생성은 성능의 저하로 이어진다. • 멀티프로세스의 흐름을 고려해서 구현해야 하기 때문에 구현이 쉽지않다. • 프로세스간 통신이 필요한 상황에서는 서버의 구현이 더 복잡해진다.

  19. 멀티플렉싱이란? 전자 및 통신공학에서의 멀티 플렉싱의 의미 “하나의 통신채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술” 서버에 적용한 멀티 플렉싱 Client Server Client Client

  20. Select 함수 • 멀티플렉싱 서버의 구현에 있어서 가장 대표적인 방법 • Select함수를 사용하면 한곳에 여러 개의 파일 디스크립터를 모아놓고 동시에 관찰 할수있다. • 수신한 데이터를 지니고 있는 소켓이 존재하는가? • 블로킹되지 않고 데이터의 전송이 가능한 소켓은 무엇인가? • 예외상황이 발생한 소켓은 무엇인가? Select함수 호출과정

  21. 파일 디스크립터의 설정 • 함수 안에는 파일들을 관찰항목(수신, 전송, 예외)에 따라서 구분해서 모으기 위한 fd_set형 변수존재

  22. 검사의 범위지정과 타임아웃의 설정 * 변수 maxfd는 파일 스크립터의 검사 범위를 지정 파일 디스크립터의 수를 넣는다. * 변수 timeout은 함수의 블로킹 상태를 방지하기 위하여 설정. * 반환 값 파일스크립터가 변화 변화한 파일스크립터 수 timeout에 의한 반환 값 0 오류발생시 -1

  23. Chapter 13다양한 입출력 함수들

  24. MSG_OOB (OUT-OF-BAND DATA) • 긴급 메시지의 전송에 사용되는 옵션. • 긴급으로 전송해야 할 메시지가 있어서 메시지의 전송방법 및 경로를 달리하고자 할 때 사용됨. • MSG_OOB 옵션을 추가해서 데이터를 보내도 (긴급 메시지가 전달 되어도) 더 빨리 데이터가 전송되는 것은 아님. • 전송순서가 유지되어야 한다는 TCP의 전송특성은 그대로 유지됨. • Urgent-mode를 이용 해서 긴급상황의 발생을 알려서 우리가 응급조치를 취하도록 돕는 역할을 함.

  25. Urgent mode의 동작 원리

  26. READV & WRITEV 함수 WRITEV 함수 • 둘 이상의 영역에 나뉘어 저장 된 데이터를 묶어서 한번의 함수호출을 통해서 보낼 수 있다. READV 함수 • 단 한번의 함수호출을 통해서 입력되는 데이터를 둘 이상의 영역에 나눠서 저장이 가능함.

  27. Readv & writev함수의 적절한 사용 단순하게 보면 함수의 호출 횟수를 줄일 수 있다. 잘게 나뉜 데이터들을 출력버퍼에 한번에 밀어 넣기 때문에 하나의 패킷 으로 구성되어서 전송될 확률이 높아지고, 이는 전송 속도의 향상으로 이어짐. >>> 여러 영역에 나뉘어 있는 데이터 들을 하나의 배열에 순서대로 옮겨다 놓고 write 함수를 호출하는 것과 그 결과는 같다.

  28. Chapter 14멀티캐스트 & 브로드캐스트

  29. 멀티캐스트 (Multicast) • 멀티캐스트 그룹을 대상으로 하는 데이터의 수신을 위해서는 가입의 절차를 거쳐야 한다. • 모든 호스트에 데이터 전송을 해야 할 때, TCP 또는 UDP 보다 발생 하는 트래픽의 양이 적다 ③ ① ②

  30. 라우팅과TTL TTL(Time to Live) • 패킷을 언제 소멸시킬 것인가를 결정하는 수치. • 패킷을 얼마나 멀리 보낼 것인가를 결정하는 요소 • TTL은 정수로 표현 되며, 라우터를 거칠 때 마다 1씩 감소. • TTL이 0이 되면, 해당 패킷은 소멸.

  31. 브로드 캐스트 • 동일한 네트워크 내에 존재 하는 호스트에게 데이터를 전송하는 방법 • 데이터 전송의 대상이 호스트가 아닌 네트워크이다. • 멀티캐스트와 마찬가지로 UDP 소켓을 기반으로 한다. • IP에서 네트워크주소를 제외한 호스트주소를 모두 1로 해서 전송하면, 해당 네트워크로 데이터가 전송 된다 (–Directed 브로드캐스트) • 255.255.255.255로 데이터를 전송하면, 전송한 호스트가 속한 네트워크로 데이터가 전송 된다. (–Local 브로드캐스트)

  32. TCP/IP 소켓프로그래밍스터디 프로그래밍 2013.11.27 3주차 종합 프로그램

  33. 스터디 프로그램 – 윈도우 파일 전송 프로그램 • 파일 전송 프로그램 • 이진 파일 전송 구현 • 전송 상태 표시 구현

  34. 스터디 프로그램 – 리눅스 멀티 프로세스 서버 멀티 플렉싱 서버 • 종합 예제 프로그램 • 다중 접속 서버 • 멀티 플렉싱 • 종합 예제 프로그램 • 다중 접속 서버 • 멀티 프로세스

  35. 스터디 프로그램 – 리눅스에서 구현 (MAKe파일)

  36. 멀티 프로세스 서버– 다중 접속 Client1 Client2 Server Client3 Client4

  37. 멀티 프로세스 서버– 다중 접속 작업 수행 Client1 Server Client2

  38. 멀티 프로세스 서버– 클라이언트 입출력 분할 Client1 Server Client2

  39. 멀티 플렉싱 서버 – 리눅스 Client1 Client2 Server Client3 Client4

  40. 멀티 플렉싱 서버 – 구현의 어려움 Client1 Server Client2

More Related