기기

socket, socket programming 관련 개념 본문

CS/network

socket, socket programming 관련 개념

notEmpty 2024. 6. 17. 15:54

TCP 프로토콜 표준 스펙에서  Socket 의미

  • 인터넷 상에 존재하는 port를 유니크하게 식별하기 위한 주소
  • ip, port 쌍으로 socket을 식별
    • port는 process와 연결된 data path 혹은 data channel
    • 하나의 process에 둘 이상의 port가 존재할 수 있다. (멀티스레드)
  • 한 쌍의 socket은 connection을 유니크하게 식별
  • 하나의 socket은 동시에 여러 connection에서 사용 가능
    • → 서버에서 port 범위보다 많은 connection이 가능한 이유

connection

  • 프로세스 간의 안정적이고 논리적인 통신 경로
  • 각 connection은 유니크함
  • connection을 열고, 데이터를 주고 받고, connection을 닫는다. → Connection-Oriented
  • TCP 는 unreliable한 Internet(network) layer 대신해 connection을 통해 reliable 통신을 제공

 

TCP Socket 동작 과정

다음 그림처럼 오른쪽(서버)에서 하나의 Port에 여러 connection을 맺을 수 있는 것을 알 수 있다. 

처음에는 listening socket 를 통해 unique한 connection을 맺을 수 있을지 검사한다. 

이후 서버에서 별도의 socket을 만들어 TCP 통신을 한다. 

 

socket programming 에서 Socket 의미

  • 프로그래밍 인터페이스
  • 애플이케이션은 해당 인터페이스를 통해 데이터를 주고받음
  • udp
    • ip, port 쌍으로 식별함
  • tcp
    • connection 전, listening socket의 ip, port
    • connection 후, src ip, src port, dest ip, dest port

 

 

출처

https://www.youtube.com/watch?v=WwseO8l8rZc&t=174s