본문 바로가기

2CHAECHAE 학교생활/OSNW실습14

[ OS/NW 실습 ] 8주차 - 멀티 프로세스 소켓 프로그래밍 ② [ init 프로세스 ] init = PID 1 프로세스 프로세스는 부모에서 자식으로 계층적 구조를 가진다. 프로세스는 1에서 부터 시작한다. 즉, PID가 1인 프로세스는 모든 프로세스의 부모 프로세스이다. 모든 프로세스는 init 프로세스에서 fork&exec로 생성이 된다. 프로세스는 자식 프로세가 먼저 종료되는 것이 정상으로 간주된다. 일반적으로 어떤 프로세스가 종료가 되면, 종료되기 이전에 자신이 생성시킨 모든 자식 프로세스를 종료시킨다. 고아 프로세스 : 부모 프로세스가 먼저 종료된 프로세스 ex) 데몬 프로세스 고아 프로세스는 init 프로세스에 의해서 관리가 된다. [ 데몬 프로세스 ] 데몬( daemon ) 프로세스 : 사용자가 인식하지 못하게 백그라운드로 동작하는 프로세스 데몬 프로세스.. 2022. 10. 31.
[ OS/NW 실습 ] 8주차 - 멀티 프로세스 소켓 프로그래밍 ① [ 프로세스 ] 프로세스 : 최소 실행 단위 객체 프로그램은 하드 디스크에 있는 상태이고 이 프로그램을 메모리에 로드( 적제 )해서 실행한다. fork()를 만나면 child 프로세스가 생성이 된다. child 프로세스는 있는 것을 그대로 복사해서 집어 넣는 것이다. ps -ef : 리눅스에서 실행되는 프로세스를 전부 확인 가능한 명령어 프로세스마다 PID가 존재하고 PPID는 해당 process의 부모 process를 의미한다. CMD라는 실행 이미지가 하드 디스크 상에 존재하던 프로그램으로 실행을 하면 메모리로 올라가서 실행이 된다. * 프로세스 강제 종료 명령어 : kill -9 + PID [ 멀티 프로세스 ] 멀티 프로세스 : 여러 프로세스를 운용 → 프로세스가 switching 함으로써 구현이 .. 2022. 10. 31.
[ OS/NW 실습 ] 8주차 - UDP 소켓 프로그래밍 여러 클라이언트가 동시에 접속할 수 있도록 멀티 프로세스를 만들고 소켓 프로그래밍과 연결한다. [ TCP ] TCP는 TCP 상위 레이어에 신뢰성 제공을 위해 패킷을 잃어버릴 경우 재전송하거나, 여러 패킷이 동시에 전송될 경우 패킷 순서를 조합한다. 신뢰성 제공을 하다보니 ACK에 의한 시간 지연이 생기게 된다. 반면에 UDP는 상대적으로 시간 지연이 TCP보다 적다. 시간 지연에 제일 영향을 받는 것은 streaming 서비스이다. 실시간 멀티미디어 데이터 통신 서비스는 streaming으로 계속 날라가 줘야하는 서비스인데 재 전송 요청에 따른 서비스 지연이 발생해서는 안된다. 또한 TCP는 신뢰성 제공을 위해 연결( connection )을 관리하지만 overhead가 발생한다. [ UDP의 특징과 .. 2022. 10. 30.
[ OS/NW 실습 ] 7주차 - TCP 소켓 프로그래밍 [ TCP 소켓 프로그래밍 ] 인터넷 : 프로그램과 프로그램의 연결 TCP : 연결 지향 프로토콜 UDP : 데이터 그램 프로토콜 [ 패킷 통신과 TCP ] 인터넷에서의 통신은 패킷 형태로 이루어진다. 목적지 까지의 다양한 경로가 가능하기 때문에 패킷의 순서가 변경되거나 패킷이 누락될 수 도 있다. ① 연결 지향 ( connection-oriented ) → 서버와 클라이언트간의 전용 선로를 개설하거나 세션을 생성한다. → Three-way handshake : 3번의 패킷 교환으로 세션을 개설한다. ② 신뢰성 있는 데이터 교환 : 모든 패킷 전송에 대한 응답을 확인한다. [ TCP 소켓 프로그램 개발 ] socket( AF_INET, SOCK_STREAM, 0 ) 0 : defaul.. 2022. 10. 30.
[ OS/NW 실습 ] 7주차 - 바이트 순서( Byte Order ), 인터넷 주소와 도메인 [ 바이트 오더( byte order ) ] CPU는 바이트 단위로 주소가 주어지며 메모리의 데이터를 read/write할 수 있다. * 산술논리장치 ALU 안에는 누산기( accumulator )가 존재한다. MSB( Most Significant Byte ) : 중요도가 높은 바이트 LSB( Least Significant Byte ) : 중요도가 낮은 바이트 MSB가 가장 높은 주소로 들어갈 수도 있고, 제일 낮은 주소로도 들어갈 수 있다. MSB가 높은 주소로 들어갈 때를 빅 엔디안이라 하고, MSB가 낮은 주소로 들어갈 때를 리틀 엔디안이라 한다. * 인텔 CPU는 리틀 엔디안 방식이다. 서로 다른 엔디안 방식을 가진 CPU가 데이터를 주고 받을 경우 한쪽에서는 작은 수의 데이터를 전달했지만 반.. 2022. 10. 29.
[ OS/NW 실습 ] 6주차 - 소켓 네트워크 프로그램 이해 [ 파일 권한 ] 리눅스는 모든 자원( file, directory, device, socket )을 파일로 본다. 파일을 가리키는 지정 번호( file descriptor )로 소켓을 비롯한 파일을 제어한다. 리눅스는 여러 클라이언트들이 동시에 접속해서 사용하는 OS이다. 그러므로 각 파일을 사용할 수 있는 권한( permission )이 필요하다. 유저 : 소유자( 파일을 만든 사람 ), 그룹 ( 소유자와 친한 사람 ), 기타 권한 : r( read ), w( write ), x( execute ) 유저, 그룹, 기타에 해당하는 권한이 각각 존재한다. 파일의 최대 권한은 666이고, 디렉토리의 최대 권한은 777이다. * 754와 0754의 차이 : 0을 붙이면 754가 8진수임을 의미한다. chmo.. 2022. 10. 29.
[ OS/NW 실습 ] 6주차 - 소켓 네트워크 프로그램 개발 ② 서버 프로그램 만들기, 리눅스 클라이언트와 서버 코드 분석하기 * 네트워크 프로그램의 흐름 1. 서버 : 소켓 생성 → 포트 부여 → 상대편 연결 기다리기 → 통신 → 종료 2. 클라이언트 : 소켓 생성 → 포트 부여 → 상대편 IP/Port 주소로 연결 → 통신 → 종료 [ 서버 프로그램 만들기 ] 1. bind() : 소켓을 인터넷 주소와 포트 번호로 묶어준다. int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen); sockfd : 파일 지정 번호 serv_addr : 연결할 인터넷 주소와 port 번호를 포함한 구조체 addrlen : 두번째 매개변수로 넘길 데이터의 크기 struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_addr.s_ad.. 2022. 10. 29.
[ OS/NW 실습 ] 6주차 - 소켓 네트워크 프로그램 개발 ① 네트워크 프로그램의 흐름, 클라이언트 프로그램 만들기 * 학교 수업 내용과 구글링을 같이 정리 [ 블러킹 I/O ] 클라이언트에서 서버로 데이터를 전송하면 서버가 클라이언트한테 해당 데이터를 재전송한다. → 클라이언트 상에서는 통신이 잘되고 있음을 확인할 수 있다. 블러킹 I/O는 데이터를 read하려고 시도하는 경우 데이터가 도착이 되었다면 바로 read할 수 있지만 데이터가 전송이 안되어있다면 read를 할 수 없다. 즉, read를 주도적으로 할 수 없음을 의미한다. [ echo_server.c와 echo_client.c 작동시키기 ] 1. 외부의 파일을 가상 머신으로 전달 ① FTP( File Transfer Protocol ) : 파일을 주고 받는 프로토콜 * FTP는 보안에 취약하기 때문에 sftp를 사용한다. ps -ef | grep ftp :.. 2022. 10. 28.
[ OS/NW 실습 ] 5주차 - 네트워크 OSI 모델 7 계층 구조 [ OSI ( Open System Interconnection ) ] OSI : 네트워크에 대한 표준화 모델 목적 : 하드웨어나 소프트웨어 기반의 논리적인 변화에 대한 요구 없이 서로 다른 시스템 간의 통신을 원활하게 하기 위해 사용한다. ( 유연하고, 안전하고, 상호 연동 가능한 네트워크 구조를 위해서 설계 ) 네트워크 경로 : PC의 웹 브라우저 프로그램에서 부터 시작하여 네트워크 전선( cable )과 네트워크 장비를 거쳐서 최종적으로 웹 서버까지 전달되는 과정을 의미한다. [ OSI 모델 - 7 계층 구조 ] OSI 7 계층은 네트워크를 통해 데이터를 주고 받는 과정을 7개의 계층으로 나누어 설명한 모델이다. * TCP/IP : 실제 구현이 되어 실질적인 표준처럼 사용되는 네트워크 모델 → 오늘.. 2022. 10. 8.