R1.

c. 아니다. 트랜스포트 계층은 네트워크 코어에서 작동할 필요 없다.

 

R3.

UDP 소켓은 목적지 IP + 목적지 포트로 식별되며, 클라이언트 정보는 매 요청마다 recvfrom() 등을 통해 확인합니다. 반면 TCP 소켓은 출발지 IP/포트 + 목적지 IP/포트(4튜플)로 식별되어, 각 연결이 고유하게 유지됩니다. 즉, UDP는 연결이 없어 소켓 자체로는 완전한 식별이 어렵고, TCP는 세션 기반이라 소켓 자체로 완전히 식별됩니다. 

 

R4.

udp의 장점은 첫째로, 무슨 데이터를 언제 보낼지에 대해 애플리케이션 레벨에서 더 정교한 제어가 가능하다. udp를 사용할 때 프로세스가 트랜스포트계층으로 데이터를 전달하는 순간 udp는 세그먼트를 생성하여 네트워크 계층으로 전달한다. 이에 반해 tcp는 혼잡 제어 메커니즘을 가지고 있어, 출발지 호스트와 목적지 호스트 사이의 링크가 혼잡해지면, 트랜스포트 계층 tcp송신자를 제한한다. 또한 tcp는 신뢰적인 전달을 위해 목적지가 세그먼트의 수신여부를 확인응답할 때까지 데이터를 재전송한다. 이러한 측면에서 실시간 애플리케이션은 udp가 적합하다.  

둘째, udp는 연결 설정이 없기 때문에 연결을 설정하기 위한 지연이 없다.

셋째, udp는 연결 상태가 없다. 연결 상태를 유지하는 tcp는 수신 버퍼,송신버퍼, 혼잡 제어 파라미터 등을 기록한다. 이로 인해 네트워크 속도가 느려질 수 있다.

넷째, 패킷 오버헤드가 적다. tcp는 세그먼트마다 20바이트의 헤더 오버헤드를 갖지만, udp는 8바이트다.

 

R5.

방화벽과 프록시 우회를 위한 접근성 보장을 위해서다. 많은 네트워크 환경에서는 UDP를 차단하고 TCP의 80번(HTTP)과 443번(HTTPS) 포트만 허용하는 경우가 많기 때문에, 음성/영상 트래픽이라도 TCP 위에서 동작해야 접속이 가능한 경우가 많습니다. 

 

R6.

애플리케이션 계층에서 신뢰성을 자체 제공한다면 가능하다. 확인 응답 메커니즘과 재전송 메커니즘을 추가하는 등의 방법이 있다. 예시로는 QUIC 프로토콜이 있다.

 

R7.

IP헤더에 출발지 IP주소가 있다. C언어를 예시로들면, recvfrom()을 사용하여 가져올 수 있다. recvfrom() 함수는 운영체제가 IP 헤더에서 출발지 IP를 추출해 sockaddr 구조체에 채워준다. (참고:출발지 포트번호는 udp헤더에 있다.)

 

R8.

웹 서버는 각 지속 연결마다 연결 소켓을 생성한다. 각 연결 소켓은 4-튜플로 식별된다. 따라서 a,b는 서로 다른 소켓을 통과한다. 그러나 모두 서버의 80번 포트로 연결된다.

 

R9.

데이터의 순서 보장과 중복 수신을 방지하기 위해서 사용한다. 송신 측은 수신자가 보낸 ACK를 보고 어떤 패킷이 성공적으로 전달되었느지 확인할 수 있다. 재전송이 발생할 경우, 순서 번호가 없다면 수신자는 같은 데이터를 여러번 처리할수도 있다. 

 

R10.

타이머가 없다면, 데이터를 보내고 ACK를 수신할때까지 영원히 기다리므로 통신이 멈추게 된다.

타이머를 설정함으로써 타임아웃 이벤트가 일어나면 데이터를 재전송한다.

 

R11.

왕복지연을 알아도 타이머가 없으면 ACK를 영원히 기다린다.타이머는 필요하다

 

R12.

관련 웹사이트가 어디죠?

 

R13.

 

 

R14.

a. x

수신 측은 보낼 데이터가 없어도 ACK를 반드시 보내야 한다. piggyback은 보낼 데이터가 있을 때 ack를 함께 실어 보내는 기법일 뿐이다. 

b.x

rwnd=RcvBuffer-[LastByteRcvd-LastByteRead] , 즉 수신 버퍼의 여유 공간이다.

수신자가 데이터를 애플리케이션 계층으로 전달하여 버퍼가 비워지면 rwnd는 커지고, 버퍼에 데이터가 쌓이면 rwnd는 작아진다.

c.o

흐름 제어에 의해, ack안된 데이터의 양은 rwnd보다 작아야 한다.

d.x

e.o

rwnd값은 window size 필드에 나타난다.

f.o

g.데이터가 제대로 수신되지 않으면 가장 마지막으로 보낸 ack를 재전송하기 떄문에 반드시 42가 아니다.

 

R15.

a.20

b.90

 

R16

seg1: seq=43,ack=80

seg2: seq=80,ack=44

seg3: seq=44,ack=81

 

R17.