프로세스간 통신이 가능하다는 것은 서로 다른 두 프로세스가 데이터를 주고 받을 수 있다는 것을 의미한다. 이것이 가능하려면, 함께 공유하는 메모리가 존재해야 한다. 아래 그림은 프로세스간 통신의 방법으로 사용되는 파이프 기법의 구조적 모델이다. 파이프는 프로세스에 속하는 자원이 아닌, OS에 속하는 자원이다. 따라서, fork에 의한 복사 대상이 아니다. 파이프 생성에 사용되는 함수는 다음과 같다. #include int pipe(int filedes[2]); filedes[0] : 데이터를 수신하는데 사용 filedes[1] : 데이터를 송신하는데 사용 이 함수가 호출되면, OS는 서로 다른 프로세스가 함께 접근할 수 있는 메모리 공간을 만들고, 이 공간의 접근에 사용되는 fd를 반환한다. int ma..
둘 이상의 클라이언트에게 동시에 서비스를 제공하는 다중접속 서버에 대해 알아보자. 대표적인 다중접속 서버의 구현 방법에는 다음과 같은 것들이 있다. 멀티프로세스 기반 서버 다수의 프로세스를 생성하는 방식으로 서비스 제공 멀티플렉싱 기반 서버 입출력 대상을 묶어서 관리하는 방식으로 서비스 제공 멀티쓰레딩 기반 서버 클라이언트의 수만큼 쓰레드를 생성하는 방식으로 서비스 제공 프로세스(Process) 멀티프로세스 기반 서버의 서비스 주체가 되는 프로세스를 먼저 이해해보자. 프로세스란, 메모리 공간을 차지한 상태에서 실행중인 프로그램을 의미한다. 멀티프로세스 운영체제는 둘 이상의 프로세스를 동시에 생성 가능하다. 여기서 프로세스는 생성되는 형태에 상관없이 OS로부터 ID를 부여 받는데, 이를 가리켜 “프로세스 ..
지금까지는 소켓을 생성해서 별다른 조작없이 바로 사용해 왔다. 이러한 경우는 기본적으로 설정되어 있는 소켓의 특성을 바탕으로 데이터를 송수신하게 된다. 하지만, 소켓의 특성을 변경시켜야만 하는 경우도 흔히 발생한다. 다양한 소켓의 옵션 중 일부 위의 표에서 보이듯이 소켓의 옵션은 계층별로 분류된다. IPPORTO_IP 레벨의 옵션들은 IP프로토콜에 관련된 사항들이며, IPPORTO_TCP 레벨의 옵션들은 TCP 프로토콜에 관련된 사항들이다. SOL_SOCKET 레벨의 옵션들은 소켓에 대한 가장 일반적인 옵션들로 생각하면 된다. getsockopt & setsockopt 소켓의 옵션을 확인할 때 호출하는 함수는 getsockopt이다. #include int **getsockopt**(int sock, i..
Domain Name System(DNS) 도메인 이름이란, 기억하기도 좋고 표현하기도 좋은 형태로 IP주소에 부여하는 것으로 IP주소를 대신한다. 실제 접속에 사용되는 주소는 아니고, 이 정보는 IP로 변환이 되어야 접속이 가능하다. 도메인 이름은 해당 서버에 부여된 가상의 주소이지 실제주소가 아니다. DNS 서버 도메인 이름을 IP로 변환해주는 서버이다. 모든 컴퓨터에는 디폴트 DNS 서버의 주소가 등록되어 있는데, 이를 통해서 도메인 이름에 대한 IP주소 정보를 얻게 된다. 도메인 이름을 이용해서 서버에 접속하면, 접속 이전에 DNS 서버에 해당 도메인의 IP주소를 묻게 되고(이 때 모른다면, 다른 DNS 서버에 물어서라도 가르쳐준다.), 그 결과로 얻게 된 IP를 이용해서 서버에 접속하게 된다. ..
TCP에서는 연결과정보다 중요한 것이 종료 과정이다. 종료 과정에서는 예상치 못한 일이 발생할 수 있기 때문이다. 일방적인 연결종료의 문제점 close 함수호출은 완전 종료를 의미한다. 완전 종료라는 것은 데이터를 전송하는 것은 물론 수신하는 것조차 더 이상 불가능한 상황을 의미한다. 상대방의 상태에 상관없이 일방적인 종료의 형태를 띤다. 때문에 한쪽에서의 일방적인 close 함수호출은 경우에 따라 좋지 못하다. 위 그림은 양방향으로 통신하고 있는 두 호스트의 상황을 나타낸 그림이다. Host A가 마지막 데이터를 전송하고 나서 close함수의 호출을 통해 연결을 종료하였다. 그래서 그 이후부터는 Host A는 Host B가 전송하는 데이터를 수신하지 못한다(데이터 수신과 관련된 함수의 호출 자체가 불가..
TCP와 UDP에 대한 이해 TCP/IP 프로토콜 스택이란, 인터넷 기반의 데이터 송수신을 목적으로 설계된 스택이다. 큰 문제를 작게 나눠 계층화한 결과로, 각 스택 별 영역을 전문화하고 표준화한다. Link계층 → IP계층 → (TCP계층 / UDP계층) → Application계층 으로 구성되어 있다. Link 계층 물리적 영역의 표준화 결과이다. LAN, WAN, MAN과 같은 물리적인 네트워크 표준 관련 프로토콜이 정의되어 있다. IP 계층 Internet Protocol을 의미한다. 경로의 설정과 관련있는 프로토콜이다. TCP/UDP 계층 실제 데이터의 송수신과 관련된 계층이다(Transport Layer). TCP : error control이 존재해 데이터의 전송을 보장하는 신뢰성이 있는 프..