37
한한한한한 한한한한한한 한한한 한한한한 한한한 1 14 14 . Out-of-Band Data . Out-of-Band Data System Software Lab. 한한한

14 장 . Out-of-Band Data

  • Upload
    kosey

  • View
    60

  • Download
    0

Embed Size (px)

DESCRIPTION

14 장 . Out-of-Band Data. System Software Lab. 이종호. 목차. Out-of-band data 의 정의 Out-of-band data 의 필요성 Socket and out-of-band data Variations in implementation Out-of-band data 사용 Urgent Pointer 의 이해 Receiving Out-of-band data inline Urgent mode pointer 의 제한점 Summary. 8. 7. 6. 5. 4. - PowerPoint PPT Presentation

Citation preview

Page 1: 14 장 . Out-of-Band Data

한남대학교 컴퓨터공학과 컴퓨터 네 트워크 실험실 1

1414 장장 . Out-of-Band Data. Out-of-Band Data

System Software Lab.이종호

Page 2: 14 장 . Out-of-Band Data

2HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

목차목차 Out-of-band data 의 정의 Out-of-band data 의 필요성 Socket and out-of-band data Variations in implementation Out-of-band data 사용 Urgent Pointer 의 이해 Receiving Out-of-band data inline Urgent mode pointer 의 제한점 Summary

Page 3: 14 장 . Out-of-Band Data

3HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band Out-of-band 데이터의 정의데이터의 정의 정의

대역밖의 데이터 긴급한 데이터로서 일정한 순서를 가지지 않고 순차화 된

데이터보다 더 먼저 처리 되어야 할 필요가 있는 데이터를 일컫는다 .

즉 , TCP/IP 통신상에서 긴급한 데이터

2345678U

1Out-of-band data

Page 4: 14 장 . Out-of-Band Data

4HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band dataOut-of-band data 의 필요성의 필요성 필요성

보내진 데이터보다 먼저 처리되어야 할 이유가 있을 때 처리하는 방법 필요서버에게 보내진 요청을 취소할 이유가 있을 때 처리하는 방법이 필요

Out-of-band 데이터의 사용프로그램telnetrlogin ftp

Page 5: 14 장 . Out-of-Band Data

5HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Socket Socket 과 과 Out-of-band dataOut-of-band data 소켓 과 Out-of-band data 관계

TCP 스트림 특징

완전한 순차적인 데이터 바이트를 보냄 Out-of-band 데이터를 보낼 수 없음 “Urgent” data 제공

해결책 Urgent data 의 개념으로 out-of-band 데이터로서 소켓 API

사용

소켓과 out-of-band data Out-of-band data 를 사용하기 위해 소켓사용

Page 6: 14 장 . Out-of-Band Data

6HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Variations in implementationVariations in implementation 긴급한 데이터 조작되어지는 방법

RFC793 해석BSD 해석 (Linux default)

대부분의 실행은 BSD 소스코드에 근거 오늘날 공통적으로 사용

리눅스 시스템 사항 확인 및 설정

$ cat /proc/sys/net/ipv4/tcp_stdurg0$만약 위와 같이 0 이 나온다면 BSD 해석으로 긴급한 데이터가 조작됨만약 1 이 나온다면 RFC793 해석으로 긴급한 데이터가 조작됨

Page 7: 14 장 . Out-of-Band Data

7HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (1)(1) writing out-of-band data

송신하기 위한 함수 Send() 함수

send() 함수 이해#include<sys/types.h>#include<sys/socket.h>

Int send(int s, const void *msg, int len, unsigned int flags);

※ 해석 s : 데이터를 전송할 소켓번호 msg : 전송할 데이터가 저장된 버퍼 len : 버퍼의 크기 flags : 데이터가 보내어지는 방법에 영향 value: ① 0 : write() 함수와 같은 역할 ②MSG_OOB : out-of-band data 를 보냄 . ③MSG_DONTROUTE : 프로토콜의 라우팅 조건을 전혀 무시하고 메시지가 보내어짐 . ( 가장 빠른 경로가 아니라 가장 직선적인 경로를 통해 보내지는 것 의미 ) 반환값 : 정상적 처리 : 전송된 테이터 크기를 바이트단위로 리턴 error : -1 값을 리턴

Page 8: 14 장 . Out-of-Band Data

8HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (2)(2) reading out-of-band data

수신하기 위한 함수 recv() 함수

recv() 함수 이해

#include<sys/types.h>#include<sys/socket.h>

Int recv(int s, void *buf, int len, unsigned int flags);

※ 해석 s : 데이터를 수신할 소켓번호 msg : 수신할 데이터가 저장될 버퍼 len : 버퍼의 크기 flags : 데이터를 받을 수 있는 방법에 영향 value: ① 0 : write() 함수와 같은 역할 ② MSG_OOB : out-of-band data 만 받음 ( 정상적 데이터는 통과 ) ③ MSG_PEEK : 프로세스는 실제로 데이터를 받지않고도 데이터를 볼수 있음 . ④ MSG_WAITALL : 완전한 양의 데이터를 얻을수 있을 때에만 recv 호출로부터 복귀 반환값 : 정상적 처리 : 수신된 테이터 크기를 바이트단위로 리턴 error : -1 값을 리턴

Page 9: 14 장 . Out-of-Band Data

9HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (3)(3)

Out-of-band data 수신방법Out-of-band data 개별적 수신 In-band data 와 혼합적으로 수신

Page 10: 14 장 . Out-of-Band Data

10HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (4)(4) Understanding the signal SIGURG

Receiving process Out-of-band data 가 받아질 때 인지되기 위해 필요

SIGURG signal 소켓에 높은 대역폭의 자료가 이용 가능함 . 프로세스에게 네트워크 연결이 긴급하거나 대역을 벗어난 (out-

of-band) 데이터가 수신되었음을 알림 .

SIGURG signal 사용위한 요구사항 소켓의 소유권 확립

fcntl() 함수 사용 SIGURG 에 대한 signal handler 확립 프로그램이 SIGURG 를 받기 위해 준비되어 있어야 함

Page 11: 14 장 . Out-of-Band Data

11HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (5)(5)fcntl() 함수 이해

#include<unistd.h>#include<fcntl.h>

Int fcntl(int fd, int cmd, long arg);

※ 해석 fd : 파일기술자 또는 소켓 (fcntl 은 fd 에 의해 식별되는 개방된 파일에 대해서 동작 ) cmd : 특정기능 선택 (cmd 의 값을 헤더화일 <fcntl.h> 로 부터 고름 ) value : F_SETOWN : 소켓을 성공적으로 확립했을 때 0 값을 리턴 arg : 설정을 위한값 ( 프로세스 식별번호 ) 반환값 : 정상적 처리 : 0 error : -1 예 : int fcntl(s, F_SETOWN, getpid());

Page 12: 14 장 . Out-of-Band Data

12HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (6)(6) Supporting Subprograms

예제 14.1 bindacpt.c Socket() 함수

주소 종류 , 스트림형 또는 데이터 그램형의 소켓의 타입 그리고 프로토콜을 지정하여 소켓을 생성

리턴값• 성공 : 새로 만들어진 소켓번호• 실패 : -1

Bind() 함수 소켓번호 와 소켓주소 구조체를 연결 리턴값

• 성공 : 0• 실패 : -1

Listen() 함수 서버에서 스트림 소켓 s 를 연결을 기다리는 상태로 만든다 . Listen() 을 호출하기

전에 소켓은 반드시 bind() 되어 있어야 한다 . 동시에 지정한 수만큼의 연결요청을 대기시켰다가 accept 가 되는 대로 차례로 연결을 처리한다 .

리턴값• 성공 : 0• 실패 : -1

Page 13: 14 장 . Out-of-Band Data

13HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (7)(7) Accept() 함수

서버에서 클라이언트의 연결요청을 수락하기 위하여 listen() 을 호출 한 후에 호출되며 , 성공시 새로운 소켓이 만들어진다 . 새로 만들어지는 소켓은 소켓 s 와 같은 속성을 가진다 . Accept() 가 성공적으로 수행된 후 소켓 s 는 다시 listen 상태로 돌아간다 . 즉 , 새로운 accept() 를 처리할 수 있게 된다 .

리턴값• 성공 : 새로 만들어진 소켓번호• 실패 : -1

Mkaddr() 함수 주소를 생성하기 위한 함수 리턴값

• 성공 : 0• 에러 : -1 : 문자열의 호스트 부분의 이상 , unknown host name -2: 포트 넘버 이상 , 알려지지 않은 서비스 이름

Bail() 함수 에러를 보고하고 , 프로그램의 위험을 회피하기 위한 함수

Page 14: 14 장 . Out-of-Band Data

14HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (8)(8) Bindaccept() 함수

소켓을 생성하고 주소를 결합하기 위한 함수 create, bind, listen, accept 모두 조작

Connect() 함수 소켓을 생성하고 원격서버에 연결하기 위한 함수로 스트림

(TCP) 으로 개설된 소켓번호를 상대방 호스트와 연결되도록 시도

리턴값• 성공 : 0• 실패 : -1

Page 15: 14 장 . Out-of-Band Data

15HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (9)(9) Receiving with the SIGURG signal

예제 14.2 oobrecv.c 순서도

함수선언 / 초기화

소켓생성 /서버주소연결

소유권 확립SIGURG 신호감지

데이터 수신

소켓 종료

Z 값

에러 break

z=-1 z=0 other

수신 데이터 출력

Page 16: 14 장 . Out-of-Band Data

16HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (10)(10) 소스분석

함수 선언 (line 15-37)• extern void bail(char *on_what); // 에러발생시 에러보고 (line 15)• extern int bindAccept(char *addr); // 소켓을 생성하고 주소를 결합 (line 16)• static int s=-1; // 소켓 (line 18) • static void sigurg(int signo); //SIGURG signal handler (line 23-37)

초기화 (line 41-42)• int z; // 상태를 나타내기 위한 변수 (line 41)• char buf[256]; // 수신데이터를 위한 버퍼 (line 42)

int n;char buf[256];n=recv(s,buf,sizeof buf,MSG_OOB);if(n<0)bail(“recv(2)”);Buf[n]=0;Printf(“URG ‘%s’ (%d)\n”, buf, n);Signal(SIGURG, sigurg);

Page 17: 14 장 . Out-of-Band Data

17HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (11)(11) 소켓생성 및 서버 주소 연결

• S=BindAccept(arqc>=2 ? argv[1] : ”127.0.0.1:9011”); (line 52-54) 소켓 소유권 확립

• Z=fcntl(s, F_SETOWN, getpid()); (line 59) SIGURG 신호 감지

• Signal(SIGURG, sigurg); (line 66) 데이터 수신

• Z=recv(s, buf, sizeof buf, 0); (line 69) 수신데이터 출력

• Printf(“rcv ‘%s’ (%d)\n”, buf, z); (line 76) 소켓 종료

• Close(s); (line 80)

Page 18: 14 장 . Out-of-Band Data

18HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (12)(12) Sending out-of-band data

예제 14.3 oobsend.c 순서도

함수선언 / 초기화

소켓생성 /상대방 과 연결

in-band 데이터 송신

sleep(1) 함수호출

out-of-band 데이터 송신

소켓 종료

Sleep(1) 함수 호출

in-band 데이터 송신

Page 19: 14 장 . Out-of-Band Data

19HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (13)(13) 소스분석

함수 선언 • extern void bail(char *on_what); // 에러발생시 에러보고 (line 13)• extern int Connect(char *addr); // 소켓을 생성하고 원격서버에 연결 (line 14)• Static void iband(ints, char *str) //in-band 데이터 송신 (line 19-28)

• Static void oband(int s, char*str) //out-of-band 데이터 송신 (line 33-42)

int z;Z=send(s,str,strlen(str),0);If(z==-1) bail(“send(2)”);Printf(“ib : ‘%s’ (%d)\n”,str, z);

int z;Z=send(s,str,strlen(str),MSG_OOB);If(z==-1) bail(“send(2)”);Printf(“OOB : ‘%s’ (%d)\n”,str, z);

Page 20: 14 장 . Out-of-Band Data

20HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (14)(14) 초기화

• int s =-1; // 소켓 (line 46) 소켓생성 및 상대방과 연결

• s=Connect(arqc>=2 ? Argv[1] : “127.0.0.1:9011”); (line 48-50) in-band 데이터 송신 (line 52-59)

• iband(s, “In the beginning”);• sleep(1);// 프로세스를 1초동안 쉬게 함• iband(s, “Linus begat Linux,”);• sleep(1);// 프로세스를 1초동안 쉬게 함• iband(s, “and the Penguins”);• sleep(1);// 프로세스를 1초동안 쉬게 함

out-of-band 데이터 송신 (line 61-62)• oband(s, “rejoiced”);• sleep(1);

in-band 데이터 송신 (line 64)• iband(s, “exceedingly.”);

소켓종료• close(s); (line 65)

Page 21: 14 장 . Out-of-Band Data

21HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (15)(15) oobrecv and oobsend programs 실행

실행

$ ./oobrecv (default : local loopback address “127.0.0.1:9011”)$ ./oobsend

Page 22: 14 장 . Out-of-Band Data

22HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Out-of-band data Out-of-band data 사용사용 (16)(16)결과 -BSD 해석

$ ./oobrecv

rcv ‘In the beginning’ (16)rcv ‘Linus begat Linux,’ (18)rcv ‘and the penguins’ (16)URG ‘d’ (1)rcv ‘rejoice’ (7)rcv ‘exceedingly.’ (12)

$ ./oobsend

ib: ‘In the beginning’ (16)ib: ‘Linus begat Linux,’ (18)ib: ‘and the penguins’ (16)OOB ‘rejoiced’ (8)

ib: ‘exceedingly.’ (12)

Page 23: 14 장 . Out-of-Band Data

23HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Understanding the Urgent Pointer(1)Understanding the Urgent Pointer(1) Understanding TCP Urgent Mode

r e j o i c e d

Offset=0 RFC793Urgent pointer

(offset=7)

BSD(Linux)Urgent pointer

(offset=8)

Tcp_stdurg=1 Tcp_stdurg=0

send (s, “rejoiced”, 8, MSG_00B)

Page 24: 14 장 . Out-of-Band Data

24HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Understanding the Urgent Pointer(2)Understanding the Urgent Pointer(2)r e j o i c e dURG=1 Urgent

Pointer=8

TCP header Packet DataOffset=0 BSD(Linux)

Urgent pointer(offset=8)

tcp_stdurg=0

Page 25: 14 장 . Out-of-Band Data

25HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Understanding the Urgent Pointer(3)Understanding the Urgent Pointer(3) Urgent Mode When tcp_stdurg=1

Urgent mode 가 종종 들어 올 때 그것에 반응하는 urgent-pointer 는 읽혀지기 위해 urgent data 없이 수신

패킷안에 포함되어 있는 마지막 바이트에서 urgent pointer가 발생되어질 때 뒤따라오고 있는 바이트는 수신되지 않을지도 모름

No urgent data 가 read 되어질 수 있도록 errno 값 EAGAIN 리턴 (몇몇 유닉스장치 : EWOULDBLOCK)

Page 26: 14 장 . Out-of-Band Data

26HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Receiving Out-of-Band data Inline(1)Receiving Out-of-Band data Inline(1) in-band 데이터 와 out-of-band 데이터 혼합수신

소켓옵션 설정

※주의 : recv() 함수 호출시 MSG_OOB 설정할 필요없음 . 만약 설정후 호출한다면 EINVAL 에러발생

int z; //statusint s; //socketint oobinline=1; //true

z=setsockopt(s, SOL_SOCKET, SO_OOBINLINE, &oobinline, sizeof oobinline);

※ 해석 s : 소켓번호 SOL_SOCKET : 프로토콜 레벨 지정 ( 보통 SOL_SOCKET 지정 ) SO_OOBINLINE : 선택할 옵션 지정 (OOB 데이터를 일반 데이터처럼 읽음 ) &oobinline : 지정된 옵션 값이 저장된 버퍼의 포인터 ( 값이 1 이면 선택 , 0 이면 취소

) oobinline : 지정된 옵션 값이 저장된 버퍼의 크기

반환값 : 정상적 처리 : 0 error : -1

Page 27: 14 장 . Out-of-Band Data

27HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Receiving Out-of-Band data Inline(2)Receiving Out-of-Band data Inline(2) Determining the Urgent Pointer

ioctl() 함수

#include <sys/ioctl.h>…int z; //statusint s; //socketint flag; //true when at mark

z=ioctl(s,SIOCATMARK,&flag);if (z==-1) abort();/* 호출하는 프로그램이 비정상 종료하여 코어를 덤프 하도록 SIGABRT 시그널을 보냄 잘못되었을 때 프로세스가 현재 상태를 기록할 수 있도록 하기위해 */if (flag !=0) puts(“At Mark”);else puts(“Not at mark.”);

Page 28: 14 장 . Out-of-Band Data

28HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Receiving Out-of-Band data Inline(3)Receiving Out-of-Band data Inline(3) Using Out-of-Band data Inline

예제 14.4 oobinline.c 순서도

함수선언 / 초기화

소켓생성 /서버주소 연결소켓 소유권

확립

SIGURG 감지소켓 종료

Socketmark 출력

소켓 옵션 설정

에러

데이터 수신

break 수신데이터 출력Z=-1 Z=0

Page 29: 14 장 . Out-of-Band Data

29HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Receiving Out-of-Band data Inline(4)Receiving Out-of-Band data Inline(4) 소스분석

함수 선언 • extern void bail(char *on_what); // 에러발생시 에러보고 (line 16)• extern int BindAccept(char *addr); // 소켓을 생성하고 주소결합 (line 17)• Static void sigurg(int signo) //SIGURG signal handler (line 22-27)

• Static int sockatmark(int s) // 소켓표시 (line 33-42)

write(1,”[SIGURG]\n”,9);signal(SIGURG,sigurg);

int z;int flag;z=ioctl(s,SIOCATMARK,&flag);if(z==-1) return –1;return flag ? 1 : 0;

Page 30: 14 장 . Out-of-Band Data

30HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Receiving Out-of-Band data Inline(5)Receiving Out-of-Band data Inline(5) 초기화 (line 46-49)

• int z; // 상태표시• int s; // 소켓• int oobinline=1; //OOB inline• char buf[256];

소켓생성 및 서버주소연결• s=BindAccept(argc>=2 ? Argv[1] : “127.0.0.1:9011”); (line 59-61)

소켓 소유권 확립• Z=fcntl(s, F_SETOWN, getpid()); (line 66)

SIGURG 감지• Signal(SIGURG,sigurg); (line 73)

소켓옵션 설정 (line 78-82)• Z=setsockopt(s, SOL_SOCKET, SO_OOBINLINE,&oobinline,sizeof oobinline);

Sockatmark 출력• Printf(“\n[%s]\n”, Socketmark(s) ? “AT MARK” : “No Mark”); (line 87-90)

데이터 수신• z=recv(s, buf, sizeof buf, 0) (line 92)

수신데이터 출력• Printf(“rcv ‘%s’ (%d)\n”, buf, z); (line 99-100)

소켓종료• close(s); (line 103)

Page 31: 14 장 . Out-of-Band Data

31HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Receiving Out-of-Band data Inline(6)Receiving Out-of-Band data Inline(6) 실행

$ ./oobsend$ ./oobinline

Page 32: 14 장 . Out-of-Band Data

32HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Receiving Out-of-Band data Inline(7)Receiving Out-of-Band data Inline(7) 실행 결과 -BSD

$ ./oobsend

ib: ‘In the beginning’ (16)ib: ‘Linux begat Linux,’ (18)ib: ‘and the penguins’ (16)

OOB ‘rejoiced’ (8)ib: ‘exceedingly.’ (12)$

$ ./oobinline

[No Mark]rcv ‘In the beginning’ (16)

[No Mark]rcv ‘Linux begat Linux,’ (18)

[No Mark]rcv ‘and the penguins’ (16)

[No Mark][SIGURG]rcv ‘rejoice’ (7)

[AT Mark]

rcv ‘d’ (1)

[No Mark]rcv ‘exceedingly.’ (12)

[No Mark]$

Page 33: 14 장 . Out-of-Band Data

33HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Limitations of the Urgent Mode Pointer(1)Limitations of the Urgent Mode Pointer(1)

제한점TCP 프로토콜

out-of-band 데이터의 한 바이트로 제공되어짐 TCP 의 urgent 모드를 사용하여 수행되어지기 때문

TCP urgent mode 와 TCP urgent pointer Urgent data 의 경계를 표시할 수 없음

실험 oobsend.c 프로그램 수정

sleep() 함수 제거 oband(s,”very”) 함수 추가

Page 34: 14 장 . Out-of-Band Data

34HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Limitations of the Urgent Mode Pointer(2)Limitations of the Urgent Mode Pointer(2) oobsend.c 수정

int main(int argc, char **argv){int s=-1;s=connect(argc >=2 ? argv[1] : “127.0.0.1:9011”);iband(s,”In the beginning”);iband(s,”Linus begat Linux,”);iband(s,”and the Penguins”);oband(s,”rejoiced”);oband(s,”very”);iband(s,”exceedingly.”);close(s); return 0;}

Page 35: 14 장 . Out-of-Band Data

35HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Limitations of the Urgent Mode Pointer(3)Limitations of the Urgent Mode Pointer(3)

실행 결과 -BSD$ ./oobsend

ib: ‘In the beginning’ (16)ib: ‘Linus begat Linux,’ (18)ib: ‘and the penguins’ (16)OOB ‘rejoiced’ (8)

OOB ‘very’ (4)ib: ‘exceedingly.’ (12)$

$ ./oobinline

[No Mark]Rcv ‘In the beginning’ (16)

[No Mark]Rcv ‘Linus begat Linux,’ (18)

[No Mark][SIGURG]Rcv ‘and the penguinsrejoicedver’ (27)

[At Mark]

Rcv ‘yexceedingly.’ (13)

[No Mark]$

Page 36: 14 장 . Out-of-Band Data

36HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

Limitations of the Urgent Mode Pointer(4)Limitations of the Urgent Mode Pointer(4)

Processing out-of-band data with select(2)select() 함수 호출

select() 함수가 호출되는 동안을 제외하고 out-of-band 데이터의 도착을 인식 select() 함수 방해

A read event A write event An exception

Page 37: 14 장 . Out-of-Band Data

37HANNAM UNIVERSITYhttp://syssw.hannam.ac.kr

요약요약