소켓(Socket)
- 전구나 형광등을 고정하는 도구이자 전기를 공급하기 위한 투입구 역할을 수행
- 컴퓨터 네트워크에서 소켓은 통신을 위한 종착지와도 같은 역할을 수행함
- 두 개의 컴퓨터가 통신을 할 때는 각 컴퓨터의 소켓을 통해서 데이터를 교환함
- 소켓 프로그래밍은 크게 TCP와 UDP 방식으로 나뉨
TCP(Transmission Control Protocol)
- TCP는 연결형 프로토콜
- UDP에 비해서 속도가 느리지만 신뢰성 있는 데이터의 송수신을 보장
- 인터넷 내에서 데이터를 주고받을 때는 경로 설정을 효과적으로 수행하기 위해 데이터를 여러 개의 패킷으로 나누어 송신
UDP(User Datagram Protocol)
- UDP는 비연결형 프로토콜
- TCP에 비해서 통신의 신뢰성이 부족하지만 빠른 데이터 송수신이 가능
- 데이터를 주고받기 전에 사전 통신 절차를 거치지 않음
서버 & 클라이언트 구조
- 가장 대표적인 네트워크 구성 모델
- 일반적으로 웹 서비스를 이용할 때 웹 브라우저는 [클라이언트]에 해당하며 웹 서버는 [서버]에 해당
- 모든 데이터의 관리 및 처리가 [서버]에 집중된다는 특징이 있음
소켓 프로그래밍
- 서버: socket > bind > listen > accept > send & recv > closesocket
- 클라이언트 : socket > connect > send & recv > closesocket
포트(Port)
- 특정한 프로그램이 통신을 하기 위해서는 포트 번호를 할당해야 함
- 포트 번호는 16비트로 65,536개를 사용할 수 있으며 1번부터 1024번 포트는 시스템 포트로 사용
- 특정한 서버 프로그램을 만들었다면 해당 서버 프로그램이 사용될 포트 번호를 1025번 이상으로 선택하여 미리 설정해야 함
포트 설정
- 서버 & 클라이언트 구조의 시스템을 구축할 때 서버 프로그램의 포트 번호는 명시적으로 할당해야 함
- 또한 클라이언트 프로그램은 서버의 IP 주소와 포트 번호를 모두 알고 있어야 함
- 서버와 클라이언트의 연결이 수립되면 클라이언트 컴퓨터에는 사용 중이지 않은 임의의 포트가 할당됨
'C++' 카테고리의 다른 글
C++ 문제 풀이 (0) | 2021.01.11 |
---|---|
소켓 프로그래밍 함수와 Winsock2 (0) | 2020.12.17 |
예외 처리 (0) | 2020.12.16 |
STL 연관 컨테이너 (0) | 2020.12.16 |
STL 시퀀스 컨테이너 (0) | 2020.12.16 |