wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Computer Science/Computer Network

📡 [Network] 어플리케이션층 - Socket 소켓 프로그래밍 (UDP, TCP)

Kick_snare 2022. 10. 6. 22:52
728x90

본 포스팅은 < 컴퓨터 네트워킹 하향식 접근[8판] James F. Kurose, Keith W. Ross 저/최종원, 강현국, 김기태 > 을 참고하여 작성되었습니다.

Ch02 Application Layer

7. Socket Programming

Socket 소켓 프로그래밍

  • 목표 : 클라이언트의 소켓 프로그램을 만들어 볼 것임

Socket : UDP

  • UDP 소켓 통신
    • 클라이언트와 서버간의 연결(handshaking)이 존재하지 않는다
    • 전송자는 IP주소, 포트 번호를 패킷에 붙여서 보낸다
    • 송신자는 패킷에서 전송자의 IP주소와 포트번호를 추출한다.

  • 서버와 클라이언트가 UDP 소켓 통신을 하는 예시 프로세스 (파이썬)

UDP 클라이언트의 파이썬 코드

  • ‘hostname’ 의 12000 포트로 소켓 열기
  • message를 bytestream으로 인코딩하여 보냄 (튜플로 서버이름과 포트를 첨부)
  • 응답 메세지를 받아옴 (최대 2048바이트)

UDP 서버의 파이썬 코드

  • 12000 포트로 소켓 열기 (바인딩해줌)
    • 해주지않으면 랜덤하게 부여됨
  • 메세지를 받아올 때까지 대기
  • 메세지를 가져오면 대문자로 변환한 메세지를 클라이언트에게 전송

Socket : TCP

  • TCP 소켓 통신
    • 클라이언트는 반드시 서버와 연결
 
 

 

  • 12000포트로 소켓 생성 ➡️ 서버와 연결

  • 12000포트 바인딩하여 소켓을 생성
  • listen 하면서 TCP 연결을 기다림
  • 연결 되면 새로 만들어진 연결된 클라이언트와의 소켓을 받아옴 (accept)
    • 이 소켓으로 통신한다 (서버 소켓이 아님)
728x90