본문 바로가기

Network4

OSI 7 layers 네트워크 시스템의 구조 및 종류와 관계없이 서로 통신하기 위해 프로토콜을 사용하고, 네트워크 모델의 기반으로서 국제표준화기구(ISO)에서 네트워크 프로토콜의 디자인과 통신을 계층으로 나눈 모델이다. 역할에 따라서 물리, 데이터 링크, 네트워크, 전송, 세션, 표현, 응용의 7계층으로 나뉜다. 1. 물리 계층 - Bit : 하드웨어 전송을 지원하는 계층으로, 네트워크로 연결된 컴퓨터(Host) 간 물리적 연결을 책임진다. ex) TP CAT-6 케이블(랜선), 광섬유 케이블, 전파 등 2. 데이터 링크 계층 - Frame : 물리 계층을 통해 데이터를 보내고, 높은 확률로 받을 수 있게 하는 수단을 제공하는 계층이다. ex) TP 케이블 -> 이더넷 10BASE-T 등 - 특.. 2021. 7. 8.
Epoll 1. 개요 Epoll은 select 모델의 단점을 보완한 I/O 통지 모델로, 준비된 fd를 프로세스가 직접 순회하여 찾았던 방식의 select와는 다르게 커널이 해당하는 fd를 직접 반환한다. 또, 커널이 fd를 직접 관리 감독하기 때문에 fd의 복사본을 넘겨줄 필요도 없다. 2. 관련 함수 int epoll_create( int size ); // size크기의 epoll 인스턴스를 생성하는 함수. 실제로는 OS가 적당한 크기로 생성한다. // 반환값 : -1(에러) , epoll 인스턴스를 참조하는 fd(성공) int epoll_ctl( // op값에 따라 epfd에 fd를 추가, 삭제, 변경하는 제어함수 int epfd , // epoll 인스턴스 int op , // EPOLL_CTL_ADD |.. 2021. 7. 1.
Select 모델 Select 모델은 대표적인 비동기-블록킹의 I/O 멀티플렉싱 통지모델이다. 1. 개요 select는 사용하고자 하는 fd(file descriptor)-set을 커널에 등록하여 상태에 대한 이벤트를 요청하고, 커널은 변경된 fd에 대해서 fd-set의 비트를 1로하여 돌려준다. 이때, select가 unblock 되며 fd-set을 순회하며 원하는 I/O 작업을 수행하는 방식이다. 2. 관련 함수 struct timeval { long tv_sec; // seconds long tv_usec; // micro-seconds } int select( int nfds , // 관리 대상 fd : 0 ~ (nfds-1) fd_set *readfds , // read I/O에 대한 상태를 통지받을 fd-set.. 2021. 6. 29.
I/O 모델 1. 블로킹(Blocking) : 프로세스가 커널에 I/O 작업을 요청하면 프로세스는 커널이 해당 작업을 처리해서 결과를 줄 때까지 대기하게 된다. 파일 전송과 같은 장시간의 작업을 요하는 경우에 별도의 블로킹 채널을 열어 사용한다. 2. 논블로킹(Non-blocking) : 작업 요청 시에 성공 여부와 무관하게 즉시 반환 값을 주고, 실패한 경우에는 재시도하는 방식이다. 싱글 스레드로도 여러 개의 세션을 처리할 수 있다는 장점이 있지만, 계속해서 시스템 콜을 요청하기 때문에 context switching 오버헤드가 크다. 3. 이벤트 통지(Event-notification) : 논블로킹 모델의 단점을 보완하기 위해 I/O 작업을 요청하기 전에 수행가능 여부를 이벤트로서 통지받는 방식이다. - 동기(S.. 2021. 6. 28.