방프리
20.02.25 TCP/IP 연습문제 Chapter 06 본문
01. TCP보다 UDP가 빠른 이유는 무엇인가? 그리고 TCP는 데이터의 전송을 신뢰할 수 있지만 UDP는 신뢰할 수 없는 이유는 또 무엇인가?
- 간결한 구조와 일방적인 데이터 송신의 구조이기 때문에 굳이 상대방에서 도착했는지 확인하지 않고 보내기 때문에 TCP보다 빠르다. 하지만 신뢰성 있는 데이터 송수신을 위한 흐름제어가 없다.
02. 다음 중 UDP의 특성이 아닌 것을 모두 고르면?
- a. UDP는 TCP와 달리 연결의 개념이 존재하지 않는다. 따라서 반드시 TCP에서 보인 것처럼 1대 1의 형태로 데이터를 송수신하지 않을 수 있다.
- b. UDP 기반으로 데이터를 전송할 목적지가 두 군데라면, 총 두 개의 소켓을 생성해야 한다.
- c. UDP 소켓은 TCP 소켓이 할당한 동일한 번호의 PORT에 재할당이 불가능하다.
- d. UDP 소켓과 TCP 소켓은 공존할 수 있다. 따라서 필요하다면 한 호스트상에서 TCP 방식과 UDP 방식의 데이터 송수신을 모두 진행할 수 있다.
- e. UDP 소켓을 대상으로도 connect 함수를 호출할 수 있는데, 이러한 경우 UDP 소켓도 TCP 소켓과 마찬가지로 Three-way handshaking 과정을 거치게 된다.
- b : UDP 기반은 굳이 1:1 통신 아니기 때문에 소켓을 하나 이상 생성할 필요가 없다.
- c : 재할당이 가능하다.
- e : connect 함수를 호출했다고 해서 목적지의 UDP 소켓과 연결설정 과정을 거치진 않는다.
03. UDP 데이터그램이 최종 목적지인 상대 호스트의 UDP 소켓에 전달되는데 있어서, IP가 담당하는 부분과 UDP가 담당하는 부분을 구준 지어 설명해보자.
- IP는 데이터를 송신하고자 하는 대상을 가리키고, UDP는 port번호를 통해 최종 목적지인 소켓으로의 데이터 전달을 담당한다.
04. UDP는 일반적으로 TCP보다 빠르다. 그러나 송신하는 데이터의 성격에 따라서 그 차이는 미미할 수도 있고, 반대로 매우 클 수도 있다. 그렇다면 어떠한 상황에서 UDP는 TCP보다 매우 좋은 성능을 보이는지 설명해보자.
- 송수신하는 데이터의 양은 작으면서 잦은 연결이 필요한 경우 UDP가 더 효율적(실시간 영상처리 등)
05. 클라이언트는 TCP 소켓은 connect 함수를 호출할 때 자동으로 IP와 PORT가 할당된다. 그렇다면 bind 함수를 호출하지 않는 UDP 소켓은 언제 IP와 PORT가 할당되는가?
- sendto 함수 호출 시 IP와 PORT 번호가 자동으로 할당된다.
06. connect 함수의 호출문장은 TCP 클라이언트의 경우 반드시 삽입해야 하는 문장이다. 그러다 UDP의 경우는 선택적으로 삽입이 가능하다. 그렇다면 UDP에서 connect 함수를 호출하면 어떠한 이점이 있는가?
- sendto 함수호출을 통해 IP와 PORT번호를 할당받을 순 있지만 이럴 경우 데이터 전송 과정이 증가하게 되고, 호출 시마다 계속 이 작업을 반복해야 한다. 그러므로 데이터 전송 이전에 미리 소켓을 connect 시킨다면 과정을 줄이게 되므로 시간을 단축시킬 수 있다.
07. 본문에서 보인 예제 uecho_server.c와 uecho_client.c를 참고해서 서버와 클라이언트 상호간에 한번씩 메시지를 주고받는 형태로 대화를 진행하는 예제를 작성해보자. 단, 주고받는 대화는 콘솔상에 출력되어야 한다.
윈도우 서버
윈도우 클라이언트
'Server&Network > TCP&IP' 카테고리의 다른 글
20.02.25 TCP/IP 연습문제 Chapter 08 (0) | 2020.02.25 |
---|---|
20.02.25 TCP/IP 연습문제 Chapter 07 (0) | 2020.02.25 |
20.02.25 TCP/IP 연습문제 Chapter 05 (0) | 2020.02.25 |
20.02.24 TCP/IP 연습문제 Chapter 04 (0) | 2020.02.24 |
20.02.17 TCP/IP 연습문제 Chapter 03 (0) | 2020.02.17 |
Comments