다른 명령
| 9번째 줄: | 9번째 줄: | ||
위는 UDP에 의해 구현된 클라이언트와 서버가 데이터를 주고 받는 socket 프로그래밍의 예시를 보여준다. | 위는 UDP에 의해 구현된 클라이언트와 서버가 데이터를 주고 받는 socket 프로그래밍의 예시를 보여준다. | ||
# | * Server 측 | ||
# | *# 서버는 특정 포트 번호(port=x)를 사용하여 UDP 소켓을 생성한다. | ||
# 서버는 | *#* serverSocket = socket(AF_INET, SOCK_DGRAM) 명령어로 수행된다.<ref>SOCK_DGRAM은 UDP socket임을 나타낸다.</ref> | ||
#* | *# 서버는 클라이언트가 보낸 UDP 세그먼트(데이터그램)를 기다렸다가 읽는다. | ||
# 클라이언트는 clientSocket을 통해 해당 | *# 서버는 클라이언트로부터 받은 데이터에 대한 응답(reply)을 서버의 소켓을 통해 다시 전송한다. | ||
* Client 측 | |||
*# 클라이언트는 UDP 소켓을 생성한다. | |||
*#* clientSocket = socket(AF_INET, SOCK_DGRAM) 명령어로 수행된다. | |||
*# 클라이언트는 서버의 IP 주소와 포트 번호를 목적지로 하는 데이터그램(datagram)을 생성하고 이를 serverSocket에게 전송한다. | |||
*# 서버가 응답을 보내면, 클라이언트는 clientSocket을 통해 그 응답을 읽고 해당 socket을 닫고 종료한다. | |||
==Socket programming with TCP== | ==Socket programming with TCP== | ||
2025년 3월 31일 (월) 08:26 판
상위 문서: 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 프로그래밍의 예시를 보여준다.
- Server 측
- 서버는 특정 포트 번호(port=x)를 사용하여 UDP 소켓을 생성한다.
- serverSocket = socket(AF_INET, SOCK_DGRAM) 명령어로 수행된다.[1]
- 서버는 클라이언트가 보낸 UDP 세그먼트(데이터그램)를 기다렸다가 읽는다.
- 서버는 클라이언트로부터 받은 데이터에 대한 응답(reply)을 서버의 소켓을 통해 다시 전송한다.
- 서버는 특정 포트 번호(port=x)를 사용하여 UDP 소켓을 생성한다.
- Client 측
- 클라이언트는 UDP 소켓을 생성한다.
- clientSocket = socket(AF_INET, SOCK_DGRAM) 명령어로 수행된다.
- 클라이언트는 서버의 IP 주소와 포트 번호를 목적지로 하는 데이터그램(datagram)을 생성하고 이를 serverSocket에게 전송한다.
- 서버가 응답을 보내면, 클라이언트는 clientSocket을 통해 그 응답을 읽고 해당 socket을 닫고 종료한다.
- 클라이언트는 UDP 소켓을 생성한다.
Socket programming with TCP
파일:The client-server application using TCP.png
위는 TCP에 의해 구현된 클라이언트와 서버가 데이터를 주고 받는 socket 프로그래밍의 예시를 보여준다.
- Server 측
- 서버는 클라이언트의 요청(request)을 받기 위해 특정 포트 번호(port=x)를 사용하여 소켓을 생성한다.
- serverSocket = socket() 명령어로 수행된다.
- 서버는 클라이언트로부터의 TCP 연결 요청을 기다린다.
- connectionSocket = serverSocket.accept() 명령어를 통해 TCP 연결이 설정된다.[2]
- 서버는 연결된 클라이언트로부터 전송된 데이터를 connectionSocket을 통해 읽는다.
- 서버는 클라이언트로부터 받은 요청에 대해 처리 후, 응답(reply)을 clientSocket으로 전송한다.
- reply 전송이 끝나면 서버는 connectionSocket을 닫고 이를 종료한다.
- 서버는 클라이언트의 요청(request)을 받기 위해 특정 포트 번호(port=x)를 사용하여 소켓을 생성한다.
- Client 측
- 클라이언트는 서버 IP 주소와 포트 번호(port=x)를 사용하여 서버와의 TCP 연결을 설정하기 위한 소켓을 생성한다.
- clientSocket = socket() 명령어로 수행된다.
- 클라이언트는 clientSocket을 통해 서버에 요청(request)을 보낸다.
- 서버로부터 전송된 응답(reply)을 클라이언트의 clientSocket을 통해 읽는다.
- 클라이언트는 응답을 받은 후, clientSocket을 닫고 종료한다.
- 클라이언트는 서버 IP 주소와 포트 번호(port=x)를 사용하여 서버와의 TCP 연결을 설정하기 위한 소켓을 생성한다.