Socket은 포트에 연결되어 동시에 여러 명을 처리할 수 있는 접속장치를 말한다.
즉, 소켓이 동시에 접속할 수 있는 클라이언트의 수를 결정할 수있다.- 예를들어, http://www.naver.com 서버에 80번 포트를 이용해서 접속할 경우 socket이 없다면 여러사람들이 해당 웹 페이지를 이용할 수 없다. 즉, 서버 프로그램에 대해 여러명의 클라이언트가 사용할 수 있도록 서비스를 제공하는 것이다.
이때
Port는전송계층만의 주소라고 할수 있다.
📌 예를 들어, 택배의 경우 아파트 단지 주소(000동)와 상세주소(000호)가 필요하듯이 컴퓨터 통신의 경우도 컴퓨터의 주소(Ip)와 컴퓨터에서 실행되고 있는 응용프로그램에 대한 주소(Port)가 필요하다.
컴퓨터에서는 게임, 카카오톡, 크롬 등 다양한 SW가 실행될 수 있는데 어떤 응용프로그램에 전달되는 데이터인지 구분하기 위해 필요한 것이 Port인 것이다.

Client Socket은 통신 연결 요청을 보낼 때 사용된다.
통신 흐름
1. 소켓을 생성(create)한다.
2. 서버측에 연결(connect)을 요청한다.
3. 서버 소켓에서 연결이 받아들여지면 데이터를 송수신(send/recv)함
4. 모든 처리가 완료되면 소켓을 닫음(close)
Server Socket은 요청을 받아들일때 사용된다.
- 소켓을 생성(create)한다.
- 서버가 사용할 IP, Port를 생성한 소켓에 결합(bind)함
- 클라이언트로부터 연결 요청이 수신되는 주시(listen)함
- 요청이 수신되면 요청을 받아(accept) 데이터 통신을 위한 새로운 소켓 생성
- 연결 후 데이터를 송수신(send/recv)
- 데이터 송수신이 완료되면, 소켓을 닫음(close)
- 소켓이 연결된 후 클라이언트 소켓과 서버 소켓이 직접 데이터를 주고 받는 것이 아니다.
즉, 클라이언트의 connect()를 받아주는 것은 서버의 accept()함수이기 때문에 connect()이전에 accept()가 준비되어있어야한다. 따라서서버쪽 코드를 먼저 실행시키고 난 후 클라이언트 코드를 실행시켜야 정상적으로 작동한다는 것이다.
또한 클라이언트는 언제 요청할지 모르기 때문에 서버는 무한적으로 요청할 준비가 되어야한다. 그래서 서버쪽 프로그램을 데몬이라고 부르는 것이다.
- Socket 통신은 Server와 Client가 Port를 통해서
실시간으로 양방향 통신을 하는 방식이다. Client가 필요한 경우에 요청을 보내는 HTTP통신과달리, Socket 통신은Server도 Client로 요청을 보낼수 있고, 연결을 유지합니다. 예를들어, 실시간 Streaming 동영상 중계 나 실시간 채팅과 같이 즉각적으로 정보를 주고받는 경우에 사용됩니다.