2025-08-11 21:37

Tags: 소프트웨어 공학

소켓

  • 정해진 규격(소켓)에 연결하기만 하면 데이터 쉽게 주고받을 수 있게 하는 ‘추상화된 통신 연결점’
  • 그 이전에 매번 통신을 위해 복잡한 프로토콜과의 사투 적어짐
  • 개발자가 네트워크의 복잡한 구조 몰라도 전화번호처럼 IP 주소와 포트번호만 알면 ‘연결’과 ‘데이터 전송’가능

소켓의 구조

  • 프로토콜: 통신 규약. 데이터 어떤 규칙으로 주고 받을지
    • TCP(Transmission Control Protocol): 신뢰성 있는 연결 중시, 연결 지향형
    • UDP(User Datagram Protocol): 속도를 중시, 비연결 지향형
  • IP 주소(Internet Protocol Address): 네트워크 상의 집주소. 통신할 상대 특정하는 고유한 주소
  • 포트번호(Port Number): 컴퓨터라는 건물 안의 ‘방 번호’. 컴퓨터 안에 여러 프로그램 실행할 수 있는데 그 중 어떤 방
  • 결론: ‘어떤 방식(프로토콜)로 어떤 컴퓨터(IP주소)의 어떤 프로그램(포트번호)와 통신할 것인가’를 정의하는 정보 집합체

소켓 사용법: TCP 기준

단계서버 (Server)클라이언트 (Client)비유 (만남 약속)
1. 소켓 생성socket()socket()각자 통화할 전화기를 준비함
2. 주소 할당bind()-서버가 자신의 가게(IP)에 특정 전화번호(Port)를 부여함
3. 연결 대기listen()-서버가 손님(클라이언트)의 전화를 기다리기 시작함
4. 연결 요청-connect()클라이언트가 서버의 전화번호로 전화를 걺
5. 연결 수락accept()-서버가 걸려온 전화를 받고 새로운 통화 라인을 개설함
6. 데이터 송수신send() / recv()send() / recv()전화기를 통해 서로 대화를 주고받음
7. 연결 종료close()close()대화가 끝나면 각자 전화기를 끊음

References

RPC 웹소켓

소켓(Socket)의 모든 것 네트워크 연결의 숨은 설계도