40
3 주주 ( Ch.10 ~ Ch.14 ) TCP / IP 주주 주주주주주

TCP / IP 소켓 프로그래밍

  • Upload
    idra

  • View
    213

  • Download
    2

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: TCP / IP  소켓 프로그래밍

3 주차 ( Ch.10 ~ Ch.14 )

TCP / IP 소켓 프로그래밍

Page 2: TCP / IP  소켓 프로그래밍

세부 계획

Ch.185 주차기말고

Ch.19 ~ Ch.24 6 주차

채팅 프로그래밍 7 주차

채팅 프로그래밍 8 주차

스터디 계획 및 Ch.1 ~ Ch.4 1 주차

Ch.5 ~ Ch.10.2 2 주차

Ch.10.3 ~ Ch.14 3 주차

Ch.15 ~ Ch. 174 주차기말고

Page 3: TCP / IP  소켓 프로그래밍

CHAPTER 10멀티프로세스 기반의 서버구현

Page 4: TCP / IP  소켓 프로그래밍

• 서비스 시간이 조금 느리다• 접속 대기 시간이 짧다 ( 병렬 )

다중 접속 서버와 비 다중 접속 서버비 다중 접속 서버 다중 접속 서버

• 서비스 시간이 빠르다• 접속 대기 시간이 길다 (

순차 )

Page 5: TCP / IP  소켓 프로그래밍

다중 접속 서버란 ?

둘 이상의 클라이언트에게 동시에 접속을 허용하여 ,

동시에 둘 이상의 클라이언트에게 서비스를 제공하는 서버를 의미한다 .

Page 6: TCP / IP  소켓 프로그래밍

프로세스란 ?

• 간단하게는 실행중인 프로그램을 뜻한다 .

• 실행중인 프로그램에 관련된 메모리 , 리소스등을 총칭하는 의미이다 .

• 멀티프로세스 운영체제는 둘 이상의 프로세스를 동시에 생성 가능하다 .

Page 7: TCP / IP  소켓 프로그래밍

FORK 함수• fork 함수가 호출되면 ,

호출한 프로세스가 복사되어 fork 함수 호출 이후를 각각의 프로세스가 독립적으로 실행하게 된다 .

부모

자식

Page 8: TCP / IP  소켓 프로그래밍

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);

Page 9: TCP / IP  소켓 프로그래밍

좀비 프로세스실행이 완료되었음에도 불구하고 ,

소멸되지 않은 프로세스

퇴치 방법은 ?

• wait 함수• waitpid 함수

Page 10: TCP / IP  소켓 프로그래밍

시그널 핸들링특정 상황이 되었을 때 운영체제가 프로세스에게 해당 상황이 발생했음을 알리는 일종의 메시지를 가리켜 시그널이라 한다 .

pid=fork();

……………

if(pid==0)

printf("Child Proc: [%d, %d] \n", gval, lval);

else

printf("Parent Proc: [%d, %d] \n", gval, lval);

return 0;

시그널 발생 !

Page 11: TCP / IP  소켓 프로그래밍

프로세스 기반 다중접속 서버

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

Page 12: TCP / IP  소켓 프로그래밍

FORK 를 통한 디스크립터의 복사

프로세스에 의해 만들어진 소켓이 복사되는 게 아니고 ,

파일 디스크립터가 복사된다

Page 13: TCP / IP  소켓 프로그래밍

CHAPTER 11프로세스간 통신

Page 14: TCP / IP  소켓 프로그래밍

• 모든 프로세스는 자신만의 메모리공간을

독립적으로 구성한다 .

• 프로세스 상호간 메모리 공간에

접근이 불가능하다 .

• 운영체제가 별도의 메모리 공간을 마련해 줘야 프로세스간 통신이 가능하다 .

• 두 프로세스 사이에서의 데이터 전달

• 두 프로세스 사이에서의 데이터 전달이 가능 하려면 , 두 프로세스가 함께 공유하는 메모리가 존재해야 한다 .

프로세스간 통신이란 ?

프로세스간통신프로세스간 통신의 어려움

Page 15: TCP / IP  소켓 프로그래밍

운영체제는 서로 다른 프로세스가 함께 접근할 수 있는 메모리 공간을 만들고 ,

이 공간의 접근에 사용되는 파일 디스크립터를 반환한다 .

파이프 기반의 프로세스간 통신

Page 16: TCP / IP  소켓 프로그래밍

프로세스간 양방향 통신

BAD GOOD

Page 17: TCP / IP  소켓 프로그래밍

CHAPTER 12멀티플렉싱

Page 18: TCP / IP  소켓 프로그래밍

멀티 프로세스의 단점

• 프로세스의 빈번한 생성은 성능의 저하로 이어진다 .

• 멀티프로세스의 흐름을 고려해서 구현해야 하기 때문에 구현이 쉽지않다 .

• 프로세스간 통신이 필요한 상황에서는 서버의 구현이 더 복잡해진다 .

Page 19: TCP / IP  소켓 프로그래밍

멀티플렉싱이란 ?전자 및 통신공학에서의 멀티

플렉싱의 의미“ 하나의 통신채널을 통해서

둘 이상의 데이터를 전송하는데 사용되는 기술”

Server

Client

Client

Client

서버에 적용한 멀티 플렉싱

Page 20: TCP / IP  소켓 프로그래밍

SELECT 함수• 멀티플렉싱 서버의 구현에 있어서 가장 대표적인 방법• Select 함수를 사용하면 한곳에 여러 개의 파일 디스크립터를 모아놓고

동시에 관찰 할수있다 .

• 수신한 데이터를 지니고 있는 소켓이 존재하는가 ?

• 블로킹되지 않고 데이터의 전송이 가능한 소켓은 무엇인가 ?

• 예외상황이 발생한 소켓은 무엇인가 ?

Select 함수 호출과정

Page 21: TCP / IP  소켓 프로그래밍

파일 디스크립터의 설정• 함수 안에는 파일들을 관찰항목 ( 수신 , 전송 , 예외 ) 에

따라서 구분해서 모으기 위한 fd_set 형 변수존재

Page 22: TCP / IP  소켓 프로그래밍

검사의 범위지정과 타임아웃의 설정

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

Page 23: TCP / IP  소켓 프로그래밍

CHAPTER 13다양한 입출력 함수들

Page 24: TCP / IP  소켓 프로그래밍

MSG_OOB (OUT-OF-BAND DATA)

• 긴급 메시지의 전송에 사용되는 옵션 .

• 긴급으로 전송해야 할 메시지가 있어서 메시지의 전송방법 및 경로를 달리하고자 할 때 사용됨 .

• MSG_OOB 옵션을 추가해서 데이터를 보내도 ( 긴급 메시지가 전달 되어도 ) 더 빨리 데이터가 전송되는 것은 아님 .

• 전송순서가 유지되어야 한다는 TCP 의 전송특성은 그대로 유지됨 .

• Urgent-mode 를 이용 해서 긴급상황의 발생을 알려서 우리가 응급조치를 취하도록 돕는 역할을 함 .

Page 25: TCP / IP  소켓 프로그래밍

URGENT MODE 의 동작 원리

Page 26: TCP / IP  소켓 프로그래밍

READV & WRITEV 함수

WRITEV 함수• 둘 이상의 영역에 나뉘어 저장 된 데이터를 묶어서

한번의 함수호출을 통해서 보낼 수 있다 .

READV 함수• 단 한번의 함수호출을 통해서 입력되는 데이터를 둘

이상의 영역에 나눠서 저장이 가능함 .

Page 27: TCP / IP  소켓 프로그래밍

READV & WRITEV 함수의 적절한 사용

단순하게 보면 함수의 호출 횟수를 줄일 수 있다 .

잘게 나뉜 데이터들을 출력버퍼에 한번에 밀어 넣기 때문에 하나의 패킷 으로 구성되어서 전송될 확률이 높아지고 , 이는 전송 속도의 향상으로 이어짐 .

>>> 여러 영역에 나뉘어 있는 데이터 들을 하나의 배열에 순서대로 옮겨다 놓고 write 함수를 호출하는 것과 그 결과는 같다 .

Page 28: TCP / IP  소켓 프로그래밍

CHAPTER 14멀티캐스트 & 브로드캐스트

Page 29: TCP / IP  소켓 프로그래밍

멀티캐스트 (MULTICAST)

• 멀티캐스트 그룹을 대상으로 하는 데이터의 수신을 위해서는 가입의 절차를 거쳐야 한다 .

• 모든 호스트에 데이터 전송을 해야 할 때 , TCP 또는 UDP 보다 발생 하는 트래픽의 양이 적다

Page 30: TCP / IP  소켓 프로그래밍

라우팅과 TTLTTL(Time to Live)

• 패킷을 언제 소멸 시킬 것인가를 결정하는 수치 .

• 패킷을 얼마나 멀리 보낼 것인가를 결정하는 요소• TTL 은 정수로 표현 되며 , 라우터를 거칠 때 마다

1 씩 감소 .

• TTL 이 0 이 되면 , 해당 패킷은 소멸 .

Page 31: TCP / IP  소켓 프로그래밍

브로드 캐스트

• 동일한 네트워크 내에 존재 하는 호스트에게 데이터를 전송하는 방법

• 데이터 전송의 대상이 호스트가 아닌 네트워크이다 .

• 멀티캐스트와 마찬가지로 UDP 소켓을 기반으로 한다 .

• IP 에서 네트워크주소를 제외한 호스트주소를 모두 1 로 해서 전송하면 , 해당 네트워크로 데이터가 전송 된다 (–Directed 브로드캐스트 )

• 255.255.255.255 로 데이터를 전송하면 , 전송한 호스트가 속한 네트워크로 데이터가 전송 된다 . (–Local 브로드캐스트 )

Page 32: TCP / IP  소켓 프로그래밍

2013.11.27 3 주차종합 프로그램

TCP/IP 소켓프로그래밍스터디 프로그래밍

Page 33: TCP / IP  소켓 프로그래밍

• 파일 전송 프로그램

• 이진 파일 전송 구현

• 전송 상태 표시 구현

스터디 프로그램 – 윈도우

파일 전송 프로그램

Page 34: TCP / IP  소켓 프로그래밍

• 종합 예제 프로그램

• 다중 접속 서버• 멀티 플렉싱

• 종합 예제 프로그램

• 다중 접속 서버• 멀티 프로세스

스터디 프로그램 – 리눅스

멀티 프로세스 서버 멀티 플렉싱 서버

Page 35: TCP / IP  소켓 프로그래밍

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

Page 36: TCP / IP  소켓 프로그래밍

멀티 프로세스 서버 – 다중 접속

Client1

Client2

Client3

Client4

Server

Page 37: TCP / IP  소켓 프로그래밍

멀티 프로세스 서버 – 다중 접속 작업 수행

Client1

Client2

Server

Page 38: TCP / IP  소켓 프로그래밍

멀티 프로세스 서버 – 클라이언트 입출력 분할

Client1

Client2

Server

Page 39: TCP / IP  소켓 프로그래밍

멀티 플렉싱 서버 – 리눅스

Client1

Client2

Client3

Client4

Server

Page 40: TCP / IP  소켓 프로그래밍

멀티 플렉싱 서버 – 구현의 어려움

Client1

Client2

Server