• TCP Echo 서비스 작동 순서

    • Echo : “메아리” 와 유사함
      • Client 가 보내는 데이터에 대해 Server 가 그대로 똑같은 데이터를 Client 에 보내는 방식

    image.png

    [Server]

    • Socket() : fopen() 과 같은 함수로 통신을 위한 소켓[“소켓 디스크립터”] 을 반환한다.
    • bind() : TCP 프로토콜에 대한 정보를 File 과 같은 Socket 에 붙여주는 작업 (IP Addr + Port (unique 한 port))
    • listen() : Socket 의 상태가 기존의 Closed → Listen 으로 변화함
      • accept() : Client 에서 연결 시도하는 소켓을 수락하고 또다른 실제 데이터 송수신에 사용할 새 소켓[“소켓 디스크립터”] 를 반환함
        • 실제 데이터 송수신에 사용할 새 소켓[“소켓 디스크립터”] - 서버 통신 소켓
          • 서버 통신 소켓
            • recv() / send() 수행
            • shutdown() : 연결 끊음을 클라이언트 소켓에 전달 (비권장)
            • closesocket() : 서버 통신 소켓 이 closed 됨.
        • 기존의 listen() 까지의 소켓은 계속 연결 “접수” 용으로 유지된다. - 서버 소켓
          • 서버 소켓
            • closesocket() : 서버 소켓 이 closed 됨.

    [Client]

    • (client) socket() : fopen() 과 같은 함수로 통신을 위한 소켓[“소켓 디스크립터”] 를 반환한다. - 클라이언트 소켓
    • connect() : Server 의 LISTEN 중인 socket 으로 연결 시도
      • accept() 되고 난 후, 클라이언트 소켓
        • recv() / send() 수행
        • shutdown() : 연결 끊음을 서버 통신 소켓에 전달(연결 종료 시 클라이언트에서 먼저 전달을 권장)
        • closesocket() : 클라이언트 소켓이 closed 됨.