한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실 1 14 장. Out-of-Band Data System Software Lab. 이종호.

Slides:



Advertisements
Similar presentations
한남대학교 컴퓨터공학과 소프트웨어공학실험실 최 용 준
Advertisements

Network Lab. Byoung-Son, Choi
WSAAsync Select 김대열 Bit - Academy Sunmoon University, Korea.
Understanding of Socket and File I/O
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
TCP Client/Server Program
Department of Computer Science and Engineering
컴퓨터 프로그래밍 기초 [Final] 기말고사
Department of Computer Engineering
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
Network Lab. Seoung Hyeon, Lee
Department of Computer Science and Engineering
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
제 14장 Multicast & Broadcast
Department of Computer Engineering
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
Department of Computer Engineering
Department of Computer Engineering
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
고급 입출력 함수 School of Electronics and Information. Kyung Hee University.
한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
Department of Computer Engineering
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
Advanced Socket Programming
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
Understanding of Socket and File I/O
Department of Computer Engineering
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Department of Computer Science and Engineering
13장 고급 입출력 함수 박사 4학기 최 성자.
TCP/IP Socket Programming…
14장. 포인터와 함수에 대한 이해.
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
Department of Computer Engineering
Chapter 5 UDP Socket 소켓 프로그래밍.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
19. 함수 포인터와 void 포인터.
Department of Computer Engineering
KERBEROS.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
CHAP 21. 전화, SMS, 주소록.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
Chapter 27 Mobile IP.
Introduction to JSP & Servlet
Chapter 04. TCP 서버/클라이언트.
Chapter 02. 윈도우 소켓 시작하기.
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
구조체(struct)와 공용체(union)
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
Department of Computer Engineering
06. 디바이스의 등록과 해제 김진홍
Network Lab. Young-Chul Hwang
ARP.
Presentation transcript:

한남대학교 컴퓨터공학과 컴퓨터 네트워크 실험실 1 14 장. Out-of-Band Data System Software Lab. 이종호

HANNAM UNIVERSITY 2 목차  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

HANNAM UNIVERSITY 3 Out-of-band 데이터의 정의  정의  대역밖의 데이터  긴급한 데이터로서 일정한 순서를 가지지 않고 순차화 된 데 이터보다 더 먼저 처리 되어야 할 필요가 있는 데이터를 일컫 는다. 즉, TCP/IP 통신상에서 긴급한 데이터  예 U 1 Out-of-band data

HANNAM UNIVERSITY 4 Out-of-band data 의 필요성  필요성  보내진 데이터보다 먼저 처리되어야 할 이유가 있 을 때 처리하는 방법 필요  서버에게 보내진 요청을 취소할 이유가 있을 때 처 리하는 방법이 필요  Out-of-band 데이터의 사용프로그램  telnet  rlogin  ftp

HANNAM UNIVERSITY 5 Socket 과 Out-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 를 사용하기 위해 소켓사용

HANNAM UNIVERSITY 6 Variations in implementation  긴급한 데이터 조작되어지는 방법  RFC793 해석  BSD 해석 (Linux default)  대부분의 실행은 BSD 소스코드에 근거  오늘날 공통적으로 사용  리눅스 시스템 사항 확인 및 설정 $ cat /proc/sys/net/ipv4/tcp_stdurg 0 $ 만약 위와 같이 0 이 나온다면 BSD 해석으로 긴급한 데이터가 조작됨 만약 1 이 나온다면 RFC793 해석으로 긴급한 데이터가 조작됨

HANNAM UNIVERSITY 7 Out-of-band data 사용 (1)  writing out-of-band data  송신하기 위한 함수  Send() 함수  send() 함수 이해 #include 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 값을 리턴

HANNAM UNIVERSITY 8 Out-of-band data 사용 (2)  reading out-of-band data  수신하기 위한 함수  recv() 함수  recv() 함수 이해 #include 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 값을 리턴

HANNAM UNIVERSITY 9 Out-of-band data 사용 (3)  Out-of-band data 수신방법  Out-of-band data 개별적 수신  In-band data 와 혼합적으로 수신

HANNAM UNIVERSITY 10 Out-of-band data 사용 (4)  Understanding the signal SIGURG  Receiving process  Out-of-band data 가 받아질 때 인지되기 위해 필요  SIGURG signal  소켓에 높은 대역폭의 자료가 이용 가능함.  프로세스에게 네트워크 연결이 긴급하거나 대역을 벗어난 (out- of-band) 데이터가 수신되었음을 알림.  SIGURG signal 사용위한 요구사항  소켓의 소유권 확립  fcntl() 함수 사용  SIGURG 에 대한 signal handler 확립  프로그램이 SIGURG 를 받기 위해 준비되어 있어야 함

HANNAM UNIVERSITY 11 Out-of-band data 사용 (5)  fcntl() 함수 이해 #include Int fcntl(int fd, int cmd, long arg); ※해석 fd : 파일기술자 또는 소켓 (fcntl 은 fd 에 의해 식별되는 개방된 파일에 대해서 동작 ) cmd : 특정기능 선택 (cmd 의 값을 헤더화일 로 부터 고름 ) value : F_SETOWN : 소켓을 성공적으로 확립했을 때 0 값을 리턴 arg : 설정을 위한값 ( 프로세스 식별번호 ) 반환값 : 정상적 처리 : 0 error : -1 예 : int fcntl(s, F_SETOWN, getpid());

HANNAM UNIVERSITY 12 Out-of-band data 사용 (6)  Supporting Subprograms  예제 14.1 bindacpt.c  Socket() 함수  주소 종류, 스트림형 또는 데이터 그램형의 소켓의 타입 그리고 프 로토콜을 지정하여 소켓을 생성  리턴값 성공 : 새로 만들어진 소켓번호 실패 : -1  Bind() 함수  소켓번호 와 소켓주소 구조체를 연결  리턴값 성공 : 0 실패 : -1  Listen() 함수  서버에서 스트림 소켓 s 를 연결을 기다리는 상태로 만든다. Listen() 을 호출하기 전에 소켓은 반드시 bind() 되어 있어야 한다. 동시에 지정한 수만큼의 연결요청을 대기시켰다가 accept 가 되는 대로 차 례로 연결을 처리한다.  리턴값 성공 : 0 실패 : -1

HANNAM UNIVERSITY 13 Out-of-band data 사용 (7)  Accept() 함수  서버에서 클라이언트의 연결요청을 수락하기 위하여 listen() 을 호 출 한 후에 호출되며, 성공시 새로운 소켓이 만들어진다. 새로 만들 어지는 소켓은 소켓 s 와 같은 속성을 가진다. Accept() 가 성공적으 로 수행된 후 소켓 s 는 다시 listen 상태로 돌아간다. 즉, 새로운 accept() 를 처리할 수 있게 된다.  리턴값 성공 : 새로 만들어진 소켓번호 실패 : -1  Mkaddr() 함수  주소를 생성하기 위한 함수  리턴값 성공 : 0 에러 : -1 : 문자열의 호스트 부분의 이상, unknown host name -2: 포트 넘버 이상, 알려지지 않은 서비스 이름  Bail() 함수  에러를 보고하고, 프로그램의 위험을 회피하기 위한 함수

HANNAM UNIVERSITY 14 Out-of-band data 사용 (8)  Bindaccept() 함수  소켓을 생성하고 주소를 결합하기 위한 함수  create, bind, listen, accept 모두 조작  Connect() 함수  소켓을 생성하고 원격서버에 연결하기 위한 함수로 스트림 (TCP) 으로 개설된 소켓번호를 상대방 호스트와 연결되도록 시도  리턴값 성공 : 0 실패 : -1

HANNAM UNIVERSITY 15 Out-of-band data 사용 (9)  Receiving with the SIGURG signal  예제 14.2 oobrecv.c  순서도 함수선언 / 초기화 소켓생성 / 서버주소연결 소켓생성 / 서버주소연결 소유권 확립 SIGURG 신호감지 SIGURG 신호감지 데이터 수신 소켓 종료 Z값Z값 Z값Z값 에러 break z=-1z=0other 수신 데이터 출력

HANNAM UNIVERSITY 16 Out-of-band data 사용 (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);

HANNAM UNIVERSITY 17 Out-of-band data 사용 (11)  소켓생성 및 서버 주소 연결 S=BindAccept(arqc>=2 ? argv[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)

HANNAM UNIVERSITY 18 Out-of-band data 사용 (12)  Sending out-of-band data  예제 14.3 oobsend.c  순서도 함수선언 / 초기화 소켓생성 / 상대방 과 연결 소켓생성 / 상대방 과 연결 in-band 데이터 송신 in-band 데이터 송신 sleep(1) 함수호출 out-of-band 데이터 송신 out-of-band 데이터 송신 소켓 종료 Sleep(1) 함수 호출 in-band 데이터 송신 in-band 데이터 송신

HANNAM UNIVERSITY 19 Out-of-band data 사용 (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);

HANNAM UNIVERSITY 20 Out-of-band data 사용 (14)  초기화 int s =-1; // 소켓 (line 46)  소켓생성 및 상대방과 연결 s=Connect(arqc>=2 ? Argv[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)

HANNAM UNIVERSITY 21 Out-of-band data 사용 (15)  oobrecv and oobsend programs 실행  실행 $./oobrecv (default : local loopback address “ :9011”) $./oobsend

HANNAM UNIVERSITY 22 Out-of-band data 사용 (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)

HANNAM UNIVERSITY 23 Understanding the Urgent Pointer(1)  Understanding TCP Urgent Mode rejoiced Offset=0 RFC793 Urgent pointer (offset=7) BSD(Linux) Urgent pointer (offset=8) Tcp_stdurg=1Tcp_stdurg=0 send (s, “rejoiced”, 8, MSG_00B)

HANNAM UNIVERSITY 24 Understanding the Urgent Pointer(2) rejoicedURG=1 Urgent Pointer=8 TCP header Packet Data Offset=0 BSD(Linux) Urgent pointer (offset=8) tcp_stdurg=0

HANNAM UNIVERSITY 25 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)

HANNAM UNIVERSITY 26 Receiving Out-of-Band data Inline(1)  in-band 데이터 와 out-of-band 데이터 혼합수신  소켓옵션 설정 ※주의 : recv() 함수 호출시 MSG_OOB 설정할 필요없음. 만약 설정후 호출한다면 EINVAL 에러발생 int z; //status int s; //socket int 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

HANNAM UNIVERSITY 27 Receiving Out-of-Band data Inline(2)  Determining the Urgent Pointer  ioctl() 함수 #include … int z; //status int s; //socket int 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.”);

HANNAM UNIVERSITY 28 Receiving Out-of-Band data Inline(3)  Using Out-of-Band data Inline  예제 14.4 oobinline.c  순서도 함수선언 / 초기화 소켓생성 / 서버주소 연결 소켓생성 / 서버주소 연결 소켓 소유권 확립 소켓 소유권 확립 SIGURG 감지 소켓 종료 Socketmark 출력 소켓 옵션 설정 에러 데이터 수신 break 수신데이터 출력 Z=-1Z=0

HANNAM UNIVERSITY 29 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;

HANNAM UNIVERSITY 30 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] : “ :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 )  소켓종료 close(s); (line 103)

HANNAM UNIVERSITY 31 Receiving Out-of-Band data Inline(6)  실행 $./oobsend $./oobinline

HANNAM UNIVERSITY 32 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 ‘rejoice d ’ (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] $

HANNAM UNIVERSITY 33 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”) 함수 추가

HANNAM UNIVERSITY 34 Limitations of the Urgent Mode Pointer(2)  oobsend.c 수정 int main(int argc, char **argv){ int s=-1; s=connect(argc >=2 ? argv[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; }

HANNAM UNIVERSITY 35 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 ‘ver y ’ (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 ‘ y exceedingly.’ (13) [No Mark] $

HANNAM UNIVERSITY 36 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

HANNAM UNIVERSITY 37 요약