Computer Security

#16 소켓 프로그래밍이란? 본문

프로그래밍/C++

#16 소켓 프로그래밍이란?

쿠리 Kuri 2022. 6. 30. 18:30

소켓
소켓(Socket)은 전구나 형광등을 고정하는 도구이자 전기를 공급하기 위한 투입구 역할을 수행한다.
컴퓨터 네트워크에서 소켓은 통신을 위한 ‘종착지’와도 같은 역할을 수행합니다. 두 개의 컴퓨터가 통신을 할 때는 각 컴퓨터의 소켓을 통해서 데이터를 교환한다.

소켓 프로그래밍은 크게 TCP와 UDP 방식으로 나뉜다.

 

TCP와 UDP
TCP(Transmission Control Protocol)

연결형 프로토콜이다.

UDP에 비해서 속도가 느리지만 신뢰성 있는 데이터의 송수신을 보장한다.

인터넷 내에서 데이터를 주고 받을 때는 경로 설정을 효과적으로 수행하기 위해 데이터를 여러 개의 패킷(Packet)으로 나누어 송수신한다.
UDP(User Datagram Protocol)

비연결형 프로토콜이다.

TCP에 비해서 통신의 신뢰성이 부족하지만 빠른 데이터 송수신이 가능하다.

데이터를 주고 받기 전에 사전 통신 절차를 거치지 않는다.

 

 

서버 & 클라이언트 구조
서버 & 클라이언트 구조는 가장 대표적인 네트워크 구성 모델이다.

일반적으로 웹 서비스를 이용할 때 웹 브라우저는 [클라이언트]에 해당하며 웹 서버는 [서버]에 해당한다.

모든 데이터의 관리 및 처리가 [서버]에 집중된다는특징이 있다.

 

포트(Port)
특정한 프로그램이 통신을 하기 위해서는 포트(Port) 번호를 할당해야 한다.

포트 번호는 16비트로 65,536개를사용할 수 있으며 1번부터 1024번 포트는 시스템 포트로 사용된다.

따라서 특정한 서버 프로그램을 만들었다면 해당 서버 프로그램이 사용될 포트 번호를 1025번 이상으로 선택하여 미리 설정해야 한다.

 

포트 설정
서버 & 클라이언트 구조의 시스템을 구축할 때 서버 프로그램의 포트 번호는 명시적으로 할당해야 한다.

또한 클라이언트 프로그램은 서버의 IP 주소와 포트 번호를 모두 알고 있어야 한다.
서버와 클라이언트의 연결이 수립되면 클라이언트 컴퓨터에서는 사용 중이지 않은 임의의 포트가 할당된다.

 

 

Comments