소켓 프로그래밍 핵심 개념 정리 (socket, connect, bind, listen, accept)
소켓(Socket)은 네트워크 상에서 데이터를 주고받기 위한 통신의 끝점(endpoint)입니다. 이는 네트워크 프로그램에서 통신 채널을 설정하는 데 사용되지요.
소켓 프로그래밍의 핵심 함수
socket()
- 네트워크 통신을 위한 소켓을 생성한다
- 통신 도메인(예: IPv4, IPv6), 소켓 타입(예: TCP, UDP), 프로토콜을 지정한다
connect()
- 클라이언트에서 서버의 소켓에 연결 요청을 보낼 때 사용한다
- 서버의 IP 주소와 포트 번호가 인자로 제공됩니다.
bind()
- 생성된 소켓에 특정 IP 주소와 포트 번호를 연결(바인딩)한다
- 주로 서버에서 사용하며, 클라이언트가 연결할 수 있는 고정된 주소를 제공한다
listen()
- 바인딩된 소켓을 통해 클라이언트의 연결 요청을 수신할 준비를 한다
- 백로그(backlog) 인자를 통해 연결 요청 대기 큐(queue)의 크기를 설정한다
accept()
- 서버가 listen 상태에서 클라이언트의 연결 요청을 받아들일 때 사용된다
- 클라이언트와의 실제 통신을 위한 새로운 소켓을 반환하며, 기존 소켓은 계속해서 다른 요청을 수신할 수 있다
소켓 프로그래밍의 동작 흐름
- 서버: socket → bind → listen → accept
- 클라이언트: socket → connect
마치면서
위의 함수들을 통해 클라이언트와 서버 간의 통신이 이루어지고, 이는 웹 브라우저에서의 요청 처리부터 다양한 네트워크 애플리케이션의 기초가 되는데요. 소켓 프로그래밍을 깊이 이해하면, 네트워크상에서 발생하는 거의 모든 통신 과정이 명쾌하게 보이기 시작하게 됩니다.
'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글
[CS기초] 파일 디스크립터(File Descriptor) 핵심 개념 정리 (0) | 2025.05.05 |
---|---|
[CS기초] 프록시(Proxy) 핵심 개념 정리 (0) | 2025.05.04 |
[CS기초] 클라이언트-서버 모델(Client-Server Model) (0) | 2025.05.04 |
[CS기초] 네트워크 계층 (OSI 7 Layer와 TCP/IP Layer) (0) | 2025.05.02 |
[CS기초] 만화로 보는 Implicit vs Explicit free list을 구분하는 방식 (0) | 2025.05.01 |