네트워크 프로그래밍의 이해 2



소켓 연결 과정


두개의 컴퓨터가 어떻게 연결이 되는지 하나하나 설명 하도록 하겠다.

모든 네트워크 프로그램 개념은 동일 하다.

네트워크 프로그램을 만들 때 언제나 Server와 Client가 짝을 이루어 만들어야 한다.

일단 Server가 하는일 부터 설명 하겠다.


1. socket을 생성한다.

   모든 프로그램이 소켓을 생성하는 함수가 있다 보통 함수명은 socket 이며 언어 마다 이름은 다를 수 있지만 반드시 존재한다.

2. 소켓에 주소정보 할당

   우리가 누구에게 전화를 하려면 고유한 전화번호를 알고 있어야 한다.

   그와 마찬가지로 어떤 컴퓨터가 내 컴퓨터를 접속 하려고 하면 내 컴퓨터 주소를 알아야 하며 그 주소를 할당해 주는 작업이 필요하다.

   이런 함수를 bind라 하며 거의 모든 프로그램 언어가 비슷한 명을 사용한다. ( 컴퓨터의 주소 체계는 앞에서 설명 하였다. )

3. 연결 수신 대기 상태

   client가 연결을 시도하면 받을 수 있도록 해당 소켓을 listen 소켓으로 설정한다.

   이렇게 listen 상태로 바꾸는 함수는 대부분 listen이라는 이름을 갖고 있는 함수를 사용한다.


4. client의 연결 시도

   서버가 연결을 받을 준비가 되어 있으므로 클라이언트에서는 서버에 연결을 시도한다.

   이때 클라이언트는 connect 함수를 사용하며 위에서 서버 소켓을 설정할 때 입력 했던 IP, PORT를 입력 한다.

5. 연결 수락

    client가 연결을 요청하면 server에서는 수락을 하여야 한다.

    여기서 수락하는 함수 명은 accept이며 수락과 동시에 또하나의 소켓이 생성 된다.

    listen으로 설정된 소켓은 또 다른 client의 연결을 받기위해 계속 대기 해야 하기 때문이다.


이렇게 연결이 완료되면 데이터 송수신을 할 수 있다.

다음이 위의 그림까지 python을 이용하여 프로그래밍을 해보도록 하겠습니다.

   


   








반응형

+ Recent posts