ABOUT ME

Today
Yesterday
Total
  • [네트워크] Socket 이란?
    네트워크 2024. 9. 1. 03:03

    • 네트워크에서 데이터를 주고받기 위한 통신의 끝점을 의미한다
    • 즉, 소켓은 컴퓨터 프로그램이나 애플리케이션이 네트워크상에서 다른 프로그램과 통신하기 위해 사용하는 인터페이스 이다
    • OSI 7계층 중에서 응용 계층 즉, 7계층 에 속하는 프로세스들은 데이터 송수신을 위해 반드시 소켓을 거쳐서 전송 계층으로 데이터를 전달해야 한다
    • 다시 말해 소켓은 전송 계층과 응용 프로그램 사이의 인터페이스
    • 역할을 하고 두 호스트를 연결한다

     

     

    소켓의 3요소

    1. IP 주소
      • 서버등을 식별하기 위한 고유한 주소
    2. 포트 번호(Port)
      • 동일한 IP 주소 에서 여러 애플리케이션이 네트워크 통신을 할 수 있도록 특정 애플리케이션을 식별하는 숫자
    3. 프로토콜(Protocol)
      • 통신 방식이나 규칙을 정의하는 네트워크 프로토콜

     

    이렇게 세가지 요소는 함께 사용되어 소켓을 통해 네트워크 상에서 특정 서비스를 식별하고 통신을 수행 할 수 있게 해준다

     

     

    소켓 통신의 흐름

     

     

    1. Socket 생성
      • 서버에서 소켓 생성
      • 소켓을 생성하고 IP 주소 와 프로토콜을 설정
      • socket() 함수
    2. Binding 바인딩
      • 생성된 소켓을 IP 주소와 포트 번호에 바인딩 한다
      • 소켓을 특정 주소 (IP, Port) 에 묶는다
      • bind() 함수
    3. Listening 리스닝
      • 서버는 연결 요청을 대기하기 위해 소켓을 listening 상태로 설정
      • listen() 함수
    4. 클라이언트 Socket 생성
      • 클라이언트는 서버와 통신하기 위해 자신의 소켓을 생성
      • socket() 함수
    5. 클라이언트 Socket 연결 
      • 클라이언트는 서버의 IP 주소와 포트 번호를 사용하여 서버에 연결 요청을 보냄
      • 서버의 소켓에 연결을 시도한다
      • connect() 함수
    6. 서버 소켓 연결 수락
      • 서버는 클라이언트의 연결 요청을 수락
      • accept() 함수
    7. 데이터 송수신
      • 클라이언트와 서버는 서로 데이터를 주고 받는다
      • 클라이언트와 서버 모두에서 이루어 진다
      • 송신할 때 send() 함수, 수신할 때 recv() 함수
    8. Socket 종료
      • 통신이 끝나면 각각 소켓을 닫는다
      • 연결된 소켓을 종료
      • close() 함수

     

     

Designed by Tistory.