본문 바로가기
카테고리 없음

[기획 연재 23편] 네트워크 소켓: 우주 끝까지 데이터를 보내는 파이프 (TCP/IP 통신)

by khhjyc_ 2026. 2. 5.

서론: 보이저 호와 통화하는 법

지구 반대편에 있는 서버나, 태양계 끝자락에 있는 보이저 호와 어떻게 데이터를 주고받을까요? 물리적인 거리는 다르지만, 소프트웨어적인 원리는 똑같습니다. 바로 '소켓(Socket)'이라는 구멍을 통해서입니다.

C언어는 이 네트워크 소켓을 다루는 표준 언어입니다. 오늘 23편에서는 전 세계 인터넷 통신의 근간이 되는 TCP/IP 통신의 원리를 '전화기'에 비유하여 설명해 드립니다.

본론 1: IP주소와 포트(Port) 번호

데이터를 보내려면 두 가지 정보가 필요합니다.

  • IP 주소: "어느 아파트 단지(컴퓨터)로 갈 것인가?" (예: 192.168.0.1)
  • 포트 번호: "그 아파트의 몇 호(프로그램)로 갈 것인가?" (예: 80번은 웹, 21번은 파일 전송)

서버는 특정 포트(문)를 열어놓고 기다리고(Listen), 클라이언트는 그 주소로 연결 요청(Connect)을 합니다. 이 연결이 성립되면 소켓이라는 가상의 파이프가 뚫립니다.

본론 2: 3-Way Handshake, 신뢰의 악수

NASA가 데이터를 보낼 때 가장 중요한 건 '신뢰성'입니다. TCP 통신은 데이터를 보내기 전에 3단계 확인 절차를 거칩니다.

  1. A -> B: "데이터 보내도 돼?" (SYN)
  2. B -> A: "응, 보내도 돼. 너도 내 말 들려?" (SYN+ACK)
  3. A -> B: "잘 들려. 이제 시작한다!" (ACK)

이 꼼꼼한 악수 과정 덕분에 인터넷은 데이터가 유실되지 않고 정확하게 전달되는 것입니다.

결론: 보이지 않는 연결의 힘

여러분이 지금 보고 있는 이 웹페이지도 결국 누군가가 C언어로 짜놓은 소켓 프로그램을 통해 전달된 데이터 조각들입니다. 이 연결의 원리를 이해하면, 채팅 앱부터 온라인 게임 서버까지 못 만들 것이 없습니다.