데브허브 | DEVHUB | How Sockets Actually Work – From Your Browser to the Backend ⚙️How Sockets Actually Work – From Your Browser to the Backend ⚙️
- 소켓은 두 컴퓨터 간의 통신을 위한 기본 도구로, IP 주소와 포트 번호의 조합으로 특정 장치의 특정 애플리케이션을 식별합니다. 🔌
- 클라이언트 소켓과 리스닝 소켓이 연결되면 양방향 통신이 가능하며, 웹 브라우징, 실시간 채팅, 멀티플레이어 게임 등 다양한 연결 시스템의 기반이 됩니다. 💬
- 소켓에는 신뢰성 있고 순서가 보장되는 TCP(스트림) 소켓과 빠르지만 데이터 손실이 있을 수 있는 UDP(데이터그램) 소켓 두 가지 주요 유형이 있습니다. 📦
- 소켓은 소프트웨어 객체이며, 실제 통신은 운영체제(OS)가 파일 디스크립터(핸들)를 통해 네트워크 스택과 하드웨어와 상호작용하여 처리합니다. 💻
- 대부분의 프로그래밍 언어는 C 기반의 시스템 호출을 통해 OS 커널의 소켓 API(Linux/macOS의 POSIX, Windows의 Winsock)를 사용하여 소켓 기능을 구현합니다. ⚙️
- 수많은 동시 소켓 연결을 효율적으로 관리하기 위해 Linux의 Epoll이나 macOS의 kqueue와 같은 이벤트 기반 I/O 메커니즘이 사용되어, 활성화된 소켓만 처리하여 서버 확장을 가능하게 합니다. 🚀
- 일반적인 로우 레벨 TCP 소켓과 달리, 웹소켓은 브라우저 친화적이며 HTTP 요청으로 시작하여 영구적인 양방향 통신 채널로 업그레이드되어 실시간 웹 애플리케이션을 구현합니다. 🌐
- 서버는 OS 수준의 제한(파일 디스크립터, RAM, CPU 등)에 따라 수만에서 수백만 개의 소켓을 처리할 수 있으며,
ulimit 등의 명령어로 튜닝하여 성능을 최적화합니다. 📈