본문 바로가기

CS/네트워크

Socket 간단 정리

반응형

Socket

"소켓은 간단하게 말하자면 서로 다른 기기의 프로세스 사이에서 네트워크 교환을 위한 인터페이스" 이다.

 

 

Transport, Internet, Link계층은 OS 레벨에서 구현/관리되어 Application 이 네트워크 기능을 사용할 수 있도록 지원한다.

이를 지원하기 위한 인터페이스를 소켓이라고 하며, 실제 실제 운영체제에서 제공하는 네트워크 관련 시스템콜들의 집합을 Sockets API 라한다.

 

 

따라서 Socket 은 Application Layer와 Transport Layer 사이에서 네트워크 통신을 위한 통로이다.

 

TCP 프로토콜을 사용하는 Socket : SOCK_STREAM

UDP 프로토콜을 사용하는 Socket : SOCK_DGRAM 이라 한다.

 

Socket 의 동작 과정

 

1. 우선 통신을 위한 소켓을 Server 측에서 생성하고 소켓에 포트 번호를 바인딩한고 기다린다 

2. 클라이언트 측에서 서버에 요청을 보내기 위해 소켓을 생성하고 연결하면 서버측은 accept() 하며 연결된다. 이 과정에서 TCP 연결 과정이 진행된다. (3 way handshake)

 

사실 연결 과정에서 서버측의 소켓이 accept() 되면서 클라이언트 측과 연결 과정이 일어나고 그 후에 새로운 소켓이 만들어진다.

클라이언트는 이렇게 새롭게 생성된 소켓과 실제 통신을 한다.

즉 accept() 하는 소켓은 연결을 위한 소켓이고 실제 통신하는 소켓은 새롭게 만들어낸다.

 

서버측의 가운데 소켓은 클라이언트 소켓과 연결하기 위해 listen() 상태로 있다가 accept() 가 되면 다른 소켓을 만들어 클라이언트와 통신하도록 한다. 

 

이때 만든 소켓은 기존 소켓과 IP와 PORT 가 같기 때문에 Connection을 구분하기 위해서는 클라이언트 측 IP 와 Port 도 필요하다. 

즉, 소켓을 구분하기 위해 Source Port, Destination Port, Source IP, Destination IP 4가지가 필요하다.

반응형

'CS > 네트워크' 카테고리의 다른 글

[응용 계층] DNS 정리  (0) 2024.05.31
[응용 계층] HTTP 와 Web Cache (Proxy Server)  (0) 2024.05.30
OSI 7계층과 TCP/IP 4계층 간단 요약  (0) 2024.05.30