2011. 7. 22. 18:50
01. TCP보다 UDP가 빠른 이유는 무엇인가? 그리고 TCP는 데이터 전송을 신뢰할 수 있지만 UDP는 신뢰할 수 없는 이유는 또 무엇인가?
UDP는  TCP에서 ACK와 같은 응답 메시지를 보내는 일도 없고, SEQ와 같이 패킷에 번호를 부여하는 일도 없다.
UDP는 흐름제어가 존재하지 않는다.

[TCP가 UDP에 비해 느린 이유 ]
- 데이터 송수신 이전, 이후에 거치는 연결설정 및 해제 과정
- 데이터 송수신 과정에서 거치는 신뢰성 보장을 위한 흐름 제어

02. 다음 중 UDP의 특성이 아닌 것을 모두 고르면? b
      .. 책에 풀었음...


03. UDP 데이터 그램이 최종 목적지인 상대 호스트의 UDP 소켓에 전달되는데 있어서 IP가 담당하는 부분과 UDP가 담당하는 부분을 구분 지어 설명해 보자.
IP의 역할 : 호스트 B를 떠난 UDP 패킷이 호스트 A에 전달되도록 하는 것.
UDP의 역할 : 호스트로 수신된 UDP 패킷을 PORT 정보를 참조하여 최종 목적지인 UDP 소켓에 전달.

04. UDP는 일반적으로 TCP보다 빠르다. 그러나 송수신하는 데이터의 성격에 따라서 그 차이는 미미할 수도 있고, 반대로 매우 클 수도 있다. 그렇다면 어떠한 상황에서 UDP는 TCP보다 매우 좋은 성능을 보이는지 설명해 보자.
TCP 기반으로 송수신 되야 하는 경우 : 압축파일의 경우(일부 파일이 손상되면 압축 해제의 어려움이 있음)
UDP 기반으로 송수신 되는 것이 좋은 경우 : 인터넷 기반으로 실시간 영상 및 음성을 전송하는 경우(멀티미디어 데이터)



05. 클라이언트의 TCP소켓은 connect 함수를 호출할 때 자동으로 IP와 PORT가 할당된다. 그렇다면 bind 함수를 호출하지 않는 UDP 소켓은 언제 IP와 PORT가 할당되는가?
snedto 함수 호출 시까지 주소정보가 할당되지 않았다면, sendto 함수가 처음 호출되는 시점에 해당 소켓에 IP와 PORT번호가 자동으로 할당된다.

UDP 기반의 데이터 송수신과정에서는 입출력 함수의 호출횟수를 일치시켜야 함..

06. connect 함수의 호출문장은 TCP 클라이언트의 경우 반드시 삽입해야 하는 문장이다. 그러나 UDP의 경우는 선택적으로 삽입이 가능하다. 그렇다면 UDP에서 connect 함수를 호출하면 어떠한 이점이 있는가?
[sendto 함수 호출을 통한 데이터의 전송과정]
1단계. UDP 소켓에 목적지의 IP와 PORT 번호 등록
2단계. 데이터 전송
3단계. UDP 소켓에 등록된 목적지 정보 삭제

명확히 전송될 주소와 포트번호를 안다면, connect를 사용하는 것이 더 유리한데 이는, 전송과정중 1단계와 3단계에서 걸리는 시간을 줄임으로써 성능향상을 기대할 수 있다. 




07. 본문에서 보인 예제 uecho_server.c와 uecho_client.c를 참고해서 서버와 클라이언트 상호간에 한번씩 메시지를 주고받는 형태로 대화를 진행하는 예제를 작성해 보자. 단 주고 받는 대화는 콘솔창에 출력되어야 한다.

 --> 구현함
Posted by Triany