idea·blog

소켓 이론 1/3 · 완전 기초

소켓은 프로그램 두 개를 잇는 통신 창구입니다.

서버가 기다리고, 클라이언트가 IP와 포트로 찾아가 연결합니다. 그다음 문자열이 바이트가 되어 왕복하고, 대화가 끝나면 연결을 닫습니다. 함수 이름보다 먼저 이 한 흐름을 눈으로 익혀 보세요.

이것만 기억하세요IP는 컴퓨터,
포트는 프로그램
socket = 데이터를 읽고 쓰는 창구

한 번의 대화를 따라가세요

“안녕하세요”는 서버까지 어떻게 갈까요?

읽는 순서① 조건 선택② 통신 시작③ 주황색 설명과 움직이는 바이트 확인

어디로 연결할까요?
무엇을 보낼까요?
  1. 1서버 대기포트를 열어요
  2. 2목적지IP + 포트
  3. 3연결통로를 만들어요
  4. 4요청바이트를 보내요
  5. 5응답답장을 받아요
  6. 6종료통로를 닫아요
접속할 주소
IP · 컴퓨터127.0.0.1
PORT · 프로그램8080
CLIENT PROGRAM클라이언트127.0.0.1
대화 소켓아직 없음
받은 응답비어 있음
LOOPBACK
아직 연결되지 않음
SERVER PROGRAM서버127.0.0.1
듣는 소켓서버 시작 전
대화 소켓아직 없음
받은 요청비어 있음
시작 전
이 흐름을 실제 소켓 함수와 연결해 보기
SERVERsocket → bind(8080) → listen → accept

포트에서 기다리다가 연결된 대화 소켓을 하나 받습니다.

CLIENTsocket → connect(127.0.0.1:8080)

IP와 포트로 서버를 찾아가 연결된 소켓을 만듭니다.

BOTHsend / recv → close

연결된 소켓에서 바이트를 주고받고 대화가 끝나면 닫습니다.

처음엔 세 단어만

주소와 통신 창구를 구분하세요.

IP어느 컴퓨터인가?

네트워크에서 목적 컴퓨터를 찾는 주소입니다. `127.0.0.1`은 지금 이 컴퓨터 자신을 가리킵니다.

PORT그 안의 어느 프로그램인가?

한 컴퓨터 안에서 서버 프로그램을 구분하는 번호입니다. 이 데모의 서버는 `8080`번을 사용합니다.

SOCKET코드가 데이터를 읽고 쓰는 창구

운영체제가 제공하는 통신 객체입니다. 연결 뒤 프로그램은 이 창구에 바이트를 쓰고 여기서 읽습니다.

통신 방식도 정합니다

이 데모는 TCP 소켓입니다.

TCP먼저 연결하고, 순서대로 전달

빠진 데이터는 다시 보내고 순서를 맞춥니다. 웹·채팅·데이터베이스 연결처럼 정확한 전달이 중요한 곳에 씁니다.

UDP연결 없이, 메시지를 바로 전달

손실·순서 변경 가능성을 애플리케이션이 감당합니다. 실시간 음성·게임·DNS처럼 지연을 줄이고 싶은 곳에 씁니다.

서버가 포트에서 대기클라이언트가 IP:포트로 연결바이트를 양방향으로 교환연결 종료
한 번의 TCP 대화를 단순화한 학습용 시뮬레이션입니다.

실제 TCP 아래에서는 3-way handshake, 패킷 분할, 재전송과 종료 절차가 더 일어납니다. TCP는 바이트 스트림이므로 프로그램이 메시지 길이·구분자 같은 경계를 따로 정해야 하며, 운영 서버에는 timeout, backpressure, 동시 연결 처리와 오류 복구도 필요합니다.

실험을 마쳤다면