HTTP 개요HyperText Transfer Protocol로Web의 애플리케이션 계층 프로토콜입니다.클라이언트(브라우저)와 서버 간의 Request-Response 모델을 사용합니다.HTTP는 TCP를 사용하며, 기본적으로 80번 포트를 사용합니다.HTTP는 상태를 유지하지 않는 Stateless한 프로토콜입니다.Stateless Protocol어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜HTTP의 연결 유형HTTP의 연결 유형에는 2가지 있습니다.Non-persistent HTTP : HTTP/1.0각 객체마다 별도의 TCP 연결을 사용하는 방식입니다.연결 설정, 객체 전송, 연결 종료의 과정으로 이루어집니다.따라서, 여러 Object를 다운로드하기 위해서는..
프로세스간 통신이 가능하다는 것은 서로 다른 두 프로세스가 데이터를 주고 받을 수 있다는 것을 의미한다. 이것이 가능하려면, 함께 공유하는 메모리가 존재해야 한다. 아래 그림은 프로세스간 통신의 방법으로 사용되는 파이프 기법의 구조적 모델이다. 파이프는 프로세스에 속하는 자원이 아닌, 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를 이용해서 서버에 접속하게 된다. ..