본문 바로가기

개인공부

Socket 정리

반응형

Socket

소켓(Socket)은 1982년 BSD(Berkeley Software Distribution) UNIX 4.1에서 처음 소개되었으며 현재 널리 사용되는 것은 1986년의 BSD UNIX 4.3에서 개정된 것입니다.

소켓은 소프트웨어로 작성된 추상적인 개념의 통신 접속점이라고 할 수 있는데 네트웍 응용 프로그램은 소켓을 통하여 통신망으로 데이터를 송수신하게 된다.

소켓은 응용 프로그램에서 TCP/IP를 이용하는 창구 역할을 하며 응용 프로그램과 소켓 사이의 인터페이스 역할을 하고 있습니다

 

Socket VS Port

 

소켓을 설명하려면 Port와 차이점을 알아야 한다.

데이터를 주고 받기 위해서는 Host 주소 이외에도 실제로 데이터를 받을 프로세스가 필요하다.

이들을 식별하느 정보가 portNumber 라고 정의한다.

포트(Port)는, 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값이다.

데이터를 보내는 쪽에서도 이러한 포트번호를 알아야하고 받는 쪽 포트번호 프로세스에서도 받는 로직을 처리를 해야한다.

 

그럼 Sokect은 뭐냐??

 

소켓(Socket)은, 프로세스가 네트워크를 통해서 데이터를 주고받으려면 반드시 열어야 하는 창구같은 것이다.

컴퓨터 세계관에서는, 바로 보내는 쪽도 받는 쪽도 소켓을 열어야 한다. 보내는 쪽이 소켓이라는 창구를 열고 소켓을 통해서 데이터를 보내면 네트워크 모델에 따라 목적지 호스트에 데이터가 도착하게 되고, 데이터를 담은 봉투에 써진 도착지의 포트 넘버와 같은 포트를 할당받은 프로세스를 찾아서, 그 프로세스의 소켓을 통해 해당 프로세스에 데이터를 전달한다.

그래도 비슷한거 아닌가...?

 

하나의 프로세스는 같은 프로토콜, 같은 IP 주소, 같은 포트 넘버를 가지는 수십 혹은 수만 개의 소켓을 가질 수 있다.
이런 이유 때문에 하나의 프로세스는 하나의 포트만으로도 다른 여러 호스트에 있는 프로세스의 요청을 처리할 수 있고, 게임 서버의 동시 접속자 수가 수십수백만이 될 수 있는 것이다.
소켓을 정의하는 것과 소켓을 식별하는 것을 구분하자. IP 주소, 포트 넘버, 프로토콜로 소켓을 정의할 수 있지만, 이것이 소켓을 유일하게 식별하진 않는다. 이름이 홍길동이라고 해도 여러 홍길동이 있는 것처럼, 같은 IP 주소, 포트 넘버, 프로토콜을 가지는 소켓이라고 해도, 서로 다른 소켓이 존재하는 것이다.

반응형

'개인공부' 카테고리의 다른 글

웹 브라우저 에서의 양방향 통신 방법  (0) 2020.10.04
Redis란  (0) 2020.10.04
클라이언트 token 보안 전략  (0) 2020.10.04
REST API / Spring hateoas  (0) 2020.10.04
CSRF, CORS 개념  (0) 2020.10.04