KalelPark's LAB

[ Computer Network ] Socket Programming? 본문

Study/Computer Network

[ Computer Network ] Socket Programming?

kalelpark 2023. 3. 31. 11:12

Socket Programming

        두 프로그램이 네트워크를 통해 서로 통신을 수행할 수 있도록 양쪽에 생성되는 링크의 단자입니다.
        두 소켓이 연결되면 서로 다른 프로세스끼리 데이터를 전달하는 것이 가능합니다. 결국 Socket이 구혐됨으로써, 네트워크 및 전송 계
        층의 캡슐화가 가능해집니다.

 

        1. 스트림 소켓 (SOCK_STREAM)

        양방향으로 바이트 스트림을 전송할 수 있는 연결 지향형 소켓으로 양쪽 어플리케이션이 모두 데이터를 주고 받을 수 있습니다.

        스트림 소켓은 오류수정, 전송처리, 흐름제어 등을 보장해주며, 송신된 순서에 따라 중복되지 않은 데이터를 수신하게 됩니다.

 

        해당 소켓은 각 메세지를 보내기 위해 별도의 연결을 맺는 행위를 하므로, 약간의 오버헤드가 존재합니다. 그러므로 소량의 데이터보다
        는 대량의 데이터를 보내는 경우가 적당합니다.

        

        2. 데이터그램 소켓 (SOCK_DGAM)

        명시적으로 연결을 맺지 않으므로, 연결형 소켓이라고 합니다. 메시지는 대상 소켓으로 전송되며 대상 소켓은 메시지를 적절히 수신합
        니다. 스트림 소켓을 사용하는 것이 데이터그램 소켓을 사용하는 것보다 더 신뢰성이 높은 방법이지만, 연결을 수립하는데 드는 오버헤
        드는 무시할 수 없습니다. 데이터를 전송할 때 UDP를 전송합니다. 

Socket API

       클라이언트 소켓(Client Socket)과 서버 소켓(Server Socket)이 어떻게 다뤄지는지, API 호출 흐름을 통해
       어떻게 변하는지 알아볼 필요가 있습니다. 각 소켓(Socket)이 어떻게 처리되는지 흐름을 간단하게 표현하면 다음 문장과 같습니다.

       클라이언트 소켓(Client Socket)은 처음 Socket을 생성(Create)한 다음, 서버 측에 연결(Connect)을 요청합니다.
       그리고, 서버 소켓에서 연결이 받아들여지면, 데이터를 송수신(send/recv)합니다. 모든 처리가 완료되면 소켓을 닫습니다(close).

 

       서버 소켓(Server Socket)은 첫 단계에서는 생성(create)하고, 서버와 포트번호를 결합(bind), 주시(listen)kg

Reference

https://recipes4dev.tistory.com/153

'Study > Computer Network' 카테고리의 다른 글

[ Computer Network ] Application layer, Socket?  (0) 2023.03.17
[ Computer Network ] TCP/IP?  (0) 2023.03.17
Comments