대표적인 IPC 및 동기화 기법 1) 파이프(pipe) --- 운영체제 영역 이용 2) 메시지 큐(message queue) --- 운영체제 영역 이용 3) 공유 메모리(shared memory) --- 사용자 영역 이용 4) 세마포어(semaphore) --- 동기화 기법 기본적인 IPC 과정 ① 공유 메모리 확보 ② 공유 메모리 접근 ③ 공유 메모리 반납 1-1) 이름 없는 파이프 (unnamed pipe) ① 공유 메모리 확보 - 파일 디스크립터 번호를 저장하기 위한 정수형 배열 변수 선언한다. (int pipefd[2];) - pipe() 함수를 사용하여 커널 영역에 파이프 채널을 생성한다. (pipe(pipefd);) - fork() 함수를 사용하여 자식 프로세스를 생성한다. ② 공유 메모리 사..

프로세스 간 통신(IPC: Inter-process Communication) 1) 프로세스 간에 데이터를 주고 받는다 (write/read) 2) 프로세스는 독립적이다 (-> 다른 프로세스 영역을 접근(access)할 수 없다) 3) 공유 메모리가 필요하다 공유 메모리가 커널 영역에 존재 -> 동기화가 필요하지 않음 공유 메모리가 사용자 영역에 존재 -> 동기화가 필요함 4) 임계영역(critical section)이 존재함. 메시지 전송(message passing) 방식 - 커널(운영체제) 영역의 일부분을 공유 메모리로 이용한다. - 운영체제에서 임계 영역에 대한 동기화를 해결해 준다. - 메시지가 세 곳에 존재한다. ① 송신 프로세스는 자신의 데이터 영역에 메시지를 작성한 후, send() 함수를..

DHCP (Dynamic Host Configuration Protocol) 프로토콜 - IP 주소를 여러 컴퓨터가 공유해서 사용 - 서버에 존재하는 풀(pool)에서 IP 주소를 가져옴 - DHCP 메시지 -> 응용 계층 DHCP 프로토콜의 주요 메시지(Options 필드) - DHCP_DISCOVER : 클라이언트가 DHCP 서버를 찾기 위한 브로드캐스트 메시지 - DHCP_OFFER : 클라이언트의 DHCP_DISCOVER 메시지에 대한 응답으로, DHCP 서버가 응답함 - DHCP_REQUEST : DHCP 서버에 DHCP_REQUEST 메시지를 전송하여 권고한 주소를 사용한다고 알림 - DHCP_ACK : 권고한 IP 주소를 사용 가능하면 메시지를 전송 - DHCP_NACK : 클라이언트가 DH..

IP 프로토콜 - 비연결형 서비스를 제공 - 패킷으로 분할/병합하는 기능 수행 - 헤더에 대한 체크섬만 제공 - Best Effort 방식의 전송 기능(-> 100% 전송을 보장하지 않음) - 오류제어나 흐름제어는 제공하지 않음 - DS(Differentiated Services) - 차등 서비스 제공용 - ECN(Explicit Congestion Notification) - 명시적 혼잡 제어 통지용 패킷 분할 관련 필드 - Identification: 분할되지 않은 패킷은 값을 순차적으로 증가하고 분할된 패킷은 동일한 번호를 부여함 - DF(Don’t Fragment): 수신자가 패킷 병합 기능이 없을 때 사용 패킷 분할을 금지시킴 - MF(More Fragment): 분할된 패킷의 처음과 중간은 1..

최단 경로 라우팅 - 패킷이 중개 과정에서 거치는 라우터의 수가 최소화되도록 라우팅 ex) 호스트 a -> 호스트 d: 라우터 b or c 호스트 a -> 호스트 g: 라우터 c 최단 경로 프로토콜 - 일반적으로 간에 위치하는 라우터(홉, Hop)의 수 - 패킷의 전송 지연시간, 전송대역폭, 통신 비용 등도 거리 기준이 되기도 함 거리 벡터(distance vector) 프로토콜 - 라우터가 자신과 직접 연결된 라우터와 라우팅 정보를 주기적으로 교환 - 각 라우터에서 개별 네트워크까지 패킷을 전송하는데 걸리는 거리 정보를 교환 - 필수 정보: 링크 벡터/거리 벡터/다음 홉 벡터 - 대표 프로토콜: RIP(Routing Information Protocol) -> UDP 프로토콜을 사용하여 정보를 교환 1..

네트워크 계층 목적: 송수신 호스트 사이의 패킷 전달 경로를 선택 주요 기능: 라우팅, 혼잡 제어, 패킷의 분할과 병합 라우팅 - 패킷의 전송 경로를 지정 - 공평 원칙, 효율 원칙 정적 라우팅(Static Routing) - 패킷 전송이 이루어지기 전에 경로 정보를 라우터가 미리 저장하여 중개 - 경로 정보의 갱신이 어려움, 네트워크의 변화에 대한 대처 부족 동적 라우팅(Dynamic Routing) - 라우터의 경로 정보가 네트워크 상황에 따라 적절히 조절됨 - 경로 정보의 수집과 관리로 인한 성능 저하 라우팅 테이블 - 라우터가 패킷의 적절한 경로를 찾기 위한 기본적인 도구 - 필수 정보: 목적지 호스트(패킷의 최종 목적지가 되는 호스트 주소) 다음 홉(목적지 호스트까지 패킷을 전달하기 위한 이웃 ..

네트워크 계층 목적: 송수신 호스트 사이의 패킷 전달 경로를 선택 주요 기능: 라우팅, 혼잡 제어, 패킷의 분할과 병합 혼잡: 네트워크에 존재하는 패킷의 수가 급격히 증가하여 네트워크 성능이 급격히 악화되는 현상 혼잡 제어: 혼잡 문제를 해결하기 위한 방안 (흐름 제어: 송수신 호스트 사이의 전송 속도 문제 혼잡 제어: 네트워크내의 전송 능력 문제) 혼잡의 원인 1) 타임 아웃 시간이 작으면 재전송이 자주 발생하여 혼잡도 증가 2) 패킷의 도착 순서가 다른 패킷들을 버리면 재송신해야 하므로 혼잡도 증가(Go-Back N 방식) 3) 모든 패킷에 대한 개별적으로 수신 응답을 처리하면 혼잡도 증가 (-> 패킷을 여러 개 모아서 응답 or 피기 배킹을 이용) 4) 패킷 생존 시간(TTL)을 너무 작게 설정하면..
1) 비연결형 서비스(Connectionless Service) - 패킷이 서로 다른 경로로 전송되므로 도착 순서가 일정하지 않음 -> 상위 계층에서 순서를 재조정해야 함 - 패킷의 100% 도착을 보장하지 않음 -> 상위 계층에서 패킷 분실 오류를 복구 ex) IP(네트워크 계층), UDP(전송 계층) 2) 연결형 서비스(Connection-oriented Service) - 데이터 전송 전에 데이터의 전송 경로를 미리 결정 -> 도착 순서가 일정 - 상대적으로 신뢰성이 높음 ex) TCP(전송 계층)