TCPIP 3주차

Download Report

Transcript TCPIP 3주차

TCP / IP 소켓 프로
그래밍
3주차
( Ch.10 ~ Ch.14 )
세부 계획
스터디 계획 및 Ch.1 ~
Ch.4
1주차
Ch.5 ~ Ch.10.2
2주차
Ch.10.3 ~ Ch.14
3주차
Ch.15 ~ Ch. 17
4주차
기말고
사
Ch.18
5주차
기말고
사
Ch.19 ~ Ch.24
6주차
채팅 프로그래밍
7주차
채팅 프로그래밍
8주차
CHAPTER 10
멀티프로세스 기반의 서버구
현
다중 접속 서버와 비 다중 접속
서버
비 다중 접속 서버
다중 접속 서버
• 서비스 시간이 빠르다
• 서비스 시간이 조금 느리다
• 접속 대기 시간이 길다 (순
차)
• 접속 대기 시간이 짧다 (병렬)
다중 접속 서버란?
둘 이상의 클라이언트에게 동시
에 접속을 허용하여,
동시에 둘 이상의 클라이언트에
게
서비스를 제공하는 서버를 의미
한다.
프로세스란?
• 간단하게는 실행중인 프로그램을 뜻한다.
• 실행중인 프로그램에 관련된 메모리, 리소스등을
총칭하는 의미이다.
• 멀티프로세스 운영체제는 둘 이상의 프로세스를 동
FORK 함수
• fork 함수가 호출되면, 호
출한 프로세스가 복사되
어 fork 함수 호출 이후를
각각의 프로세스가 독립
적으로 실행하게 된다.
부
자식
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);
좀비 프로세스
실행이 완료되었음에도 불
구하고,
소멸되지 않은 프로세스
퇴치 방법
은?
• wait 함수
• waitpid 함수
시그널 핸들링
특정 상황이 되었을 때 운
영체제가
프로세스에게 해당 상황이
발생했음을
알리는 일종의 메시지를
pid=fork(); 가
리켜
……………
시그널이라 한다. if(pid==0)
printf("Child Proc: [%d, %d] \n", gval, lval);
시그널
발생 !
else
printf("Parent Proc: [%d, %d] \n", gval, lval);
return 0;
프로세스 기반 다중접속 서버
연결이 하나 생성될 때마다 프로세
스를 생성해서
해당 클라이언트에 대해 서비스를
제공하는 것이다.
FORK 를 통한 디스크립터의 복
사
프로세스에 의해 만들어진 소켓이
복사되는 게 아니고,
파일 디스크립터가 복사된다
CHAPTER 11
프로세스간 통신
프로세스간 통신이란?
프로세스간통신
프로세스간 통신의
어려움
• 두 프로세스 사이에서
의 데이터 전달
• 모든 프로세스는 자신만
의 메모리공간을
• 두 프로세스 사이에서
의 데이터 전달이 가능
하려면, 두 프로세스가
함께 공유하는 메모리
가 존재해야 한다.
독립적으로 구성한다.
• 프로세스 상호간 메모리
공간에
접근이 불가능하다.
• 운영체제가 별도의 메모
리 공간을 마련해 줘야
프로세스간 통신이 가능
하다.
파이프 기반의 프로세스간 통
신
운영체제는 서로 다른 프
로세스가 함께
접근할 수 있는 메모리 공
간을 만들고,
이 공간의 접근에 사용되
는
파일 디스크립터를 반환
한다.
프로세스간 양방향 통신
CHAPTER 12
멀티플렉싱
멀티 프로세스의 단점
• 프로세스의 빈번한 생성은 성능의 저하로 이어
진다.
• 멀티프로세스의 흐름을 고려해서 구현해야 하
기 때문에 구현이 쉽지않다.
• 프로세스간 통신이 필요한 상황에서는 서버의
구현이 더 복잡해진다.
멀티플렉싱이란?
전자 및 통신공학에서의 멀티 플
렉싱의 의미
“하나의 통신채널을 통해서
둘 이상의 데이터를 전송하
서버에 적용한
는데 사용되는
기술”멀티
플렉싱
Server
Client
Client
Client
SELECT 함수
• 멀티플렉싱 서버의 구현에 있어서 가장 대표적인 방법
• Select함수를 사용하면 한곳에 여러 개의 파일 디스크립터를 모아
놓고 동시에 관찰 할수있다.
• 수신한 데이터를 지니고 있는 소켓이 존재하는가?
• 블로킹되지 않고 데이터의 전송이 가능한 소켓은 무엇인가?
• 예외상황이 발생한 소켓은 무엇인가?
Select함수 호
출과정
파일 디스크립터의 설정
• 함수 안에는 파일들을 관찰항목(수신, 전송, 예외)에 따
라서 구분해서 모으기 위한 fd_set형 변수존재
검사의 범위지정과 타임아웃의
설정
* 변수 maxfd는 파일 스크립터의 검사 범위를 지정 파
일 디스크립터의 수를 넣는다.
* 변수 timeout은 함수의 블로킹 상태를 방
지하기
위하여 설정.
* 반환 값
파일스크립터가 변화
크립터 수
timeout에 의한 반환 값
오류발생시 -1
변화한 파일스
0
CHAPTER 13
다양한 입출력 함수들
MSG_OOB (OUT-OF-BAND DATA)
• 긴급 메시지의 전송에 사용되는 옵션.
• 긴급으로 전송해야 할 메시지가 있어서 메시지의
전송방법 및 경로를 달리하고자 할 때 사용됨.
• MSG_OOB 옵션을 추가해서 데이터를 보내도 (긴급
메시지가 전달 되어도) 더 빨리 데이터가 전송되는
것은 아님.
• 전송순서가 유지되어야 한다는 TCP의 전송특성은
그대로 유지됨.
• Urgent-mode를 이용 해서 긴급상황의 발생을 알
려서 우리가 응급조치를 취하도록 돕는 역할을 함.
URGENT MODE의 동작 원리
READV & WRITEV 함수
WRITEV 함수
• 둘 이상의 영역에 나뉘어 저장 된 데이터를 묶어서
한번의 함수호출을 통해서 보낼 수 있다.
READV 함수
• 단 한번의 함수호출을 통해서 입력되는 데이터를
둘 이상의 영역에 나눠서 저장이 가능함.
READV & WRITEV 함수의 적절한
사용
>>> 여러 영역에 나뉘
어 있는 데이터 들을 하
나의 배열에 순서대로
옮겨다 놓고 write 함수
를 호출하는 것과 그 결
단순하게 보면 함수의 호출 횟수를
줄일
수 있다.
과는
같다.
잘게 나뉜 데이터들을 출력버퍼에 한번에 밀어 넣기
때문에 하나의 패킷 으로 구성되어서 전송될 확률이
높아지고, 이는 전송 속도의 향상으로 이어짐.
CHAPTER 14
멀티캐스트 & 브로드캐스트
멀티캐스트 (MULTICAST)
③
①
②
• 멀티캐스트 그룹을
대상으로 하는 데
이터의 수신을 위
해서는 가입의 절
차를 거쳐야 한다.
• 모든 호스트에 데
이터 전송을 해야
할 때, TCP 또는
라우팅과 TTL
TTL(Time to Live)
• 패킷을 언제 소멸 시킬 것인가를 결정하는 수치.
• 패킷을 얼마나 멀리 보낼 것인가를 결정하는 요
소
• TTL은 정수로 표현 되며, 라우터를 거칠 때 마다
1씩 감소.
• TTL이 0이 되면, 해당 패킷은 소멸.
브로드 캐스트
• 동일한 네트워크 내에 존재 하는 호스트에게 데
이터를 전송하는 방법
• 데이터 전송의 대상이 호스트가 아닌 네트워크
이다.
• 멀티캐스트와 마찬가지로 UDP 소켓을 기반으로
한다.
• IP에서 네트워크주소를 제외한 호스트주소를 모
두 1로 해서 전송하면, 해당 네트워크로 데이터가
전송 된다 (–Directed 브로드캐스트)
• 255.255.255.255로 데이터를 전송하면, 전송한 호
TCP/IP 소켓프로그래밍
스터디 프로그래밍
2013.11.27 3주차
종합 프로그램
스터디 프로그램 – 윈도우
파일 전송 프로그램
• 파일 전송 프로그
램
• 이진 파일 전송 구
현
• 전송 상태 표시 구
현
스터디 프로그램 – 리눅스
멀티 프로세스 서버
멀티 플렉싱 서버
• 종합 예제 프로그
램
• 종합 예제 프로그
램
• 다중 접속 서버
• 다중 접속 서버
• 멀티 프로세스
• 멀티 플렉싱
스터디 프로그램 – 리눅스에서
구현 (MAKE 파일)
멀티 프로세스 서버 – 다중 접속
Client1
Client2
Server
Client3
Client4
멀티 프로세스 서버 – 다중 접속
작업 수행
Client1
Server
Client2
멀티 프로세스 서버 – 클라이언
트 입출력 분할
Client1
Server
Client2
멀티 플렉싱 서버 – 리눅스
Client1
Client2
Server
Client3
Client4
멀티 플렉싱 서버 – 구현의 어려
움
Client1
Server
Client2