Develop

18일차_TCP 를 이용한 Socket Programming 본문

백엔드/KDT_Programmers

18일차_TCP 를 이용한 Socket Programming

230801 2025. 3. 28. 02:28

안녕하세요!

오늘은 18일 (4주 4일차) 입니다.

 

오늘은 TCP 를 이용한 소켓 프로그래밍에 대해 학습했습니다.

수업들을 때는 소켓이라는게 생소해서 잘이해가 안됐는데, 블로그에 글 적으려고 자바의 정석 펼치고 읽으면서 

통신 끝단에서 하는 프로그래밍이구나 ~ 하고 알게되고, 수업 때 사용한 프로젝트의 패키지나 클래스 들의 이름을 왜 그렇게 지었는지 이해가 됐다. 

 

 


 

학습 내용

socket programming

  • 소켓을 이용한 통신 프로그래밍
  • 소켓이란 프로세스간의 통신에 사용되는 양쪽 끝단(endpoint)을 의미
  • 자바에서는 java.net 패키지를 통해 소켓 프로그래밍을 지원함

 

TCP

  • 연결 방식 : 연결기반(connection-oriented)
    • 연결 후 통신 (ex. 전화기)
    • 1 : 1 통신 방식
  • 특징
    • 데이터의 경계를 구분안함(byte-stream)
    • 신뢰성 있는 데이터 전송
      • 데이터의 전송순서가 보장됨
      • 데이터의 수신여부를 확인함 (손실되면 재전송)
      • 패킷을 관리할 필요가 없음
    • UDP 보다 전송속도가 느림
  • 관련 클래스
    • Socket(프로세스간 통신 담당, InputStream, OutputStream 보유)
    • ServerSocket(소켓 간 연결만 처리)
      • 이 소켓들이 데이터를 주고받는 연결 통로가 입출력 스트림이며, 이 스트림들은 연결된 상대편 소켓의 스트림 들과 교차연결됨 (한 소켓의 입력스트림 -> 상대편 소켓의 출력스트림으로 연결됨)

 

TCP 소켓 프로그래밍

  • 클라이언트와 서버간의 1 : 1 통신
  • 먼저 서버프로그램이 실행되어 클라이언트 프로그램의 연결요청을 기다리고 있어야함 (아래는 통신과정)
    • 서버 프로그램 : 서버소켓을 사용해서 서버컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 함
    • 클라이언트 프로그램 : 접속할 서버의 IP 주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청함
    • 서버 소켓 : 클라이언트의 연결 요청을 받으면 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결시킴
    • 클라이언트 소켓 : 새로 생성된 서버의 소켓은 서버소켓과 관계없이 1 : 1 통신을 함

 

 

 

 

주말에 프로젝트를 뜯어봐야 완전히 이해가 될 것 같지만 이정도로도 오늘은 만족!

(어제까지만해도 이론만 공부했는데 오늘은 프로젝트 뜯어보기에 진입한것 같아서 좋다~!  이렇게 발전해나가면 되지...ㅋ)

 

오늘도 고생 많으셨습니다 ~~