메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Socket programming: 두 판 사이의 차이

noriwiki
Pinkgo (토론 | 기여)
새 문서: 상위 문서: Application Layer ==개요== ==각주== 분류:컴퓨터 네트워크
 
Pinkgo (토론 | 기여)
편집 요약 없음
2번째 줄: 2번째 줄:


==개요==
==개요==
Socket 프로그래밍(Socket programming)의 목표는 socket을 사용하여 network communication을 사용하는 client/server 애플리케이션을 만드는 것이다. 이때 socket은 사용하는 transport service의 종류, UDP와 TCP에 따라 다르게 구현된다. UDP는 client와 server 사이에 'connection'(handshaking)이 존재하지 않는다. 또한 UDP를 통해서 전송되는 데이터는 out-of-order되거나, 누락될 수도 있다. 하지만 TCP는 handshaking을 통해서 클라이언트와 서버 사이의 'connection'을 구성한 다음, 서버와 클라이언트 사이의 통신이 진행된다. 이를 통해서 reliable data transfer를 가능케 한다.
==Socket programming with UDP==
[[파일:The client-server application using UDP.png|테두리|프레임없음|450x450px]]
위는 UDP에 의해 구현된 클라이언트와 서버가 데이터를 주고 받는 socket 프로그래밍의 예시를 보여준다.
# 먼저 서버와 클라이언트는 데이터를 주고 받기 위해 각각 serverSocket, clientSocket을 만든다.
# 클라이언트는 데이터를 clientSocket를 통해 severSocket에 송신한다.
# 서버는 severSocket을 통해 해당 데이터를 읽는다.
#* 서버도 데이터를 severSocket를 통해 clientSocket에 답장한다.
# 클라이언트는 clientSocket을 통해 해당 데이터를 읽고 clientSocket을 닫는다.
==Socket programming with TCP==
[[파일:The client-server application using TCP.png|테두리|프레임없음|466x466픽셀]]
위는 TCP에 의해 구현된 클라이언트와 서버가 데이터를 주고 받는 socket 프로그래밍의 예시를 보여준다.
* Server 측
*# 서버는 클라이언트의 요청(request)을 받기 위해 특정 포트 번호(port=x)를 사용하여 소켓을 생성한다.
*#* serverSocket = socket() 명령어로 수행된다.
*# 서버는 클라이언트로부터의 TCP 연결 요청을 기다린다.
#* connectionSocket = serverSocket.accept() 명령어를 통해 TCP 연결이 설정된다.<ref>accept()는 연결 요청이 도착할 때까지 기다리며, 요청이 오면 이를 수락하여 새로운 소켓인 connectionSocket을 반환한다.</ref>
# 서버는 연결된 클라이언트로부터 전송된 데이터를 connectionSocket을 통해 읽는다.
# 서버는 클라이언트로부터 받은 요청에 대해 처리 후, 응답(reply)을 clientSocket으로 전송한다.
# reply 전송이 끝나면 서버는 connectionSocket을 닫고 이를 종료한다.
* Client 측
*# 클라이언트는 서버 IP 주소와 포트 번호(port=x)를 사용하여 서버와의 TCP 연결을 설정하기 위한 소켓을 생성한다.
*#* clientSocket = socket() 명령어로 수행된다.
*# 클라이언트는 clientSocket을 통해 서버에 요청(request)을 보낸다.
*# 서버로부터 전송된 응답(reply)을 클라이언트의 clientSocket을 통해 읽는다.
*# 클라이언트는 응답을 받은 후, clientSocket을 닫고 종료한다.


==각주==
==각주==
[[분류:컴퓨터 네트워크]]
[[분류:컴퓨터 네트워크]]

2025년 3월 31일 (월) 08:20 판

상위 문서: Application Layer

개요

Socket 프로그래밍(Socket programming)의 목표는 socket을 사용하여 network communication을 사용하는 client/server 애플리케이션을 만드는 것이다. 이때 socket은 사용하는 transport service의 종류, UDP와 TCP에 따라 다르게 구현된다. UDP는 client와 server 사이에 'connection'(handshaking)이 존재하지 않는다. 또한 UDP를 통해서 전송되는 데이터는 out-of-order되거나, 누락될 수도 있다. 하지만 TCP는 handshaking을 통해서 클라이언트와 서버 사이의 'connection'을 구성한 다음, 서버와 클라이언트 사이의 통신이 진행된다. 이를 통해서 reliable data transfer를 가능케 한다.

Socket programming with UDP

파일:The client-server application using UDP.png

위는 UDP에 의해 구현된 클라이언트와 서버가 데이터를 주고 받는 socket 프로그래밍의 예시를 보여준다.

  1. 먼저 서버와 클라이언트는 데이터를 주고 받기 위해 각각 serverSocket, clientSocket을 만든다.
  2. 클라이언트는 데이터를 clientSocket를 통해 severSocket에 송신한다.
  3. 서버는 severSocket을 통해 해당 데이터를 읽는다.
    • 서버도 데이터를 severSocket를 통해 clientSocket에 답장한다.
  4. 클라이언트는 clientSocket을 통해 해당 데이터를 읽고 clientSocket을 닫는다.

Socket programming with TCP

파일:The client-server application using TCP.png

위는 TCP에 의해 구현된 클라이언트와 서버가 데이터를 주고 받는 socket 프로그래밍의 예시를 보여준다.

  • Server 측
    1. 서버는 클라이언트의 요청(request)을 받기 위해 특정 포트 번호(port=x)를 사용하여 소켓을 생성한다.
      • serverSocket = socket() 명령어로 수행된다.
    2. 서버는 클라이언트로부터의 TCP 연결 요청을 기다린다.
    • connectionSocket = serverSocket.accept() 명령어를 통해 TCP 연결이 설정된다.[1]
  1. 서버는 연결된 클라이언트로부터 전송된 데이터를 connectionSocket을 통해 읽는다.
  2. 서버는 클라이언트로부터 받은 요청에 대해 처리 후, 응답(reply)을 clientSocket으로 전송한다.
  3. reply 전송이 끝나면 서버는 connectionSocket을 닫고 이를 종료한다.
  • Client 측
    1. 클라이언트는 서버 IP 주소와 포트 번호(port=x)를 사용하여 서버와의 TCP 연결을 설정하기 위한 소켓을 생성한다.
      • clientSocket = socket() 명령어로 수행된다.
    2. 클라이언트는 clientSocket을 통해 서버에 요청(request)을 보낸다.
    3. 서버로부터 전송된 응답(reply)을 클라이언트의 clientSocket을 통해 읽는다.
    4. 클라이언트는 응답을 받은 후, clientSocket을 닫고 종료한다.

각주

  1. accept()는 연결 요청이 도착할 때까지 기다리며, 요청이 오면 이를 수락하여 새로운 소켓인 connectionSocket을 반환한다.