Socket

qwerq123456·2021년 10월 27일
0

공부

목록 보기
1/5

Socket

공부 하게 된 이유

  • 유니티는 보통 서버와의 소통을 소켓으로 한다고 하여 소켓이 뭔지 알아보게 되었다. Webgl같은 경우는 tcp 소켓이 보안 문제상 연결이 안된다 하여 websocket으로 처리 하기로 했다. 그냥 무지성으로 구글링 하면서 알게된거 쭉 정리해 보겠다. 유니티에서 구현한 websocket 코드는 따로 포스팅 하겠다.

Socket

소켓은 네트워크 상에서 돌아가는 두 개의 프로그램 간 양방향 통신의 하나의 엔트 포인트입니다. 소켓은 포트 번호에 바인딩되어 TCP 레이어에서 데이터가 전달되야하는 어플리케이션을 식별할 수 있게 합니다.

Endpoint : IP Address+port

  • 통신 과정

    1. 서버는 클라이언트의 연결 요청이 올때가지 소켓을 통해 리스닝
    2. 클라가 서버의 호스트 네임과 포트를 통해서 연결 시도
    3. 연결에 문제가 없으면 서버는 동일한 로컬 포트에 바인딩된 새로운 소켓을 얻게 되며 클라이언트의 주소와 포트로 세팅된 리모트 엔드 포인트를 가짐

      이렇게 해야 다른 클라의 연결요청도 연결 할 수 있다. 한포트에서 여러 소켓을 열기 위함

    4. 연결 이후엔 서로 통신 가능
  • Polling 방식과 다른점

    • polling 방식은 클라가 서버에 요청하면 답해주는 방식
      • 클라가 요청할때까지 답을 못해주기 때문에 실시간 아님
      • 구현이 간단함
      • 단방향
    • 소켓 방식
      • 연결을 계속 유지하는 방식
      • 양방향
      • 실시간

TCP/IP (Transmission Control Protocol/Internet Protocol)

컴퓨터가 서로 통신하는 경우, 특정 규칙이나 프로토콜을 사용하여 순서대로 데이터를 전송 및 수신할 수 있습니다. 전세계를 통해 가장 일상적으로 사용되는 프로토콜 세트 중 하나가 TCP/IP(Transmission Control Protocol/Internet Protocol)입니다.

TCP(전송 제어 프로토콜)

  • TCP (Transmission Control Protocol)는 IP 네트워크의 두 컴퓨터 간의 연결 지향 통신을 위한 전송 계층 호스트 간 프로토콜입니다. TCP는 가상 포트를 사용하여 두 컴퓨터 간의 물리적 연결을 재사용 할 수 있는 가상 종단 간 연결을 만듭니다.TCP는 HTTP 및 SMTP (email)과 같은 상위 레벨 프로토콜 데이터를 캡슐화합니다.

  • 연결형 서비스를 지원하는 전송 계층 프로토콜로써, 인터넷 환경에서 기본으로 사용합니다.호스트간 신뢰성 있는 데이터 전달과 흐름제어를 합니다. 즉, 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜입니다. 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 됩니다.

  • TCP handshake(TCP 3방향 핸드 셰이크)
    TCP 3 방향 핸드 셰이크는 TCP가 IP 기반 네트워크를 통해 TCP / IP 연결을 설정하는 데 사용하는 방법입니다.

용어 정리

  1. 노드 : 네트워크에 있는 모든 장치
  2. 호스트 : 네트워크 주소가 할당된 노드
  3. 서버 : 요청에 응답할 수 있는 호스트
  4. 클라이언트 : 요청을 하는 호스트

webSocket

  • Http 레이어에서 작동하는 소켓 TCP/IP 소켓이랑 레이어가 다른것.

  • 특징

    • ws Protocol 사용
    • 웹소켓은 HTTP와 구별된다. 두 프로토콜 모두 OSI 모델의 제7계층에 위치해 있으며 제4계층의 TCP에 의존한다.
      • OSI도 공부 해야지...
profile
생각 날때마다 끄적이는 블로그

0개의 댓글