P1. 클라이언트 A가 서버 S로부터 HTTP를 통해서 웹 페이지를 요구한다고 하자. 이때 그의 소켓은 포트 33000으로 하였다.a. A에서 S로 보낸 세그먼트에 대한 소스와 목적지의 포트번호는 얼마인가?출발지: 33000목적지: 80 (특별히 말하지 않으면 HTTP 웹서버 80)b. S에서 A로 보낸 세그먼트에 대한 소스와 목적지의 포트번호는 얼마인가?출발지: 80목적지: 33000c. 클라이언트 A가 서버 S를 트랜스포트 프로토콜로서 UDP를 사용하여 접속할 수 있을까?HTTP는 신뢰성이 중요하기 때문에 하위 트랜스포트 프로토콜로 TCP를 사용하지만, UDP를 사용한다면 사용할 수는 있다고 생각한다. UDP를 사용한다면 웹 문서의 다운로드 지연이 줄어들 것이다.d. 클라이언트 A가 단일 TCP 연결상으로 여러 리소스들을 요구할 수 있을까?TCP는 연결 당 하나의 리소스만 받을 수 있다. 하지만 파이프라이닝 기법을 사용하면 여러 리소스를 받을 수 있다.P2. 그림 3.5에서 서버에서 클라이언트 프로세스로 되돌아오는 세그먼트의 출발지와 목적지의 포트값은 무엇인가? 트랜스포트 계층 세그먼트에서 네트워크 계층 데이터그램으로 운반된 IP주소는 무엇인가?호스트 A의 경우 출발지포트는 26145이고 목적지포트는 80으로 세그먼트를 보내고 있다.따라서 서버 B는 출발지포트 80과 목적지포트 26145를 사용하여 응답을 호스트A로 다시 보낸다.호스트 C의 경우 서버 B는 출발지포트 80과 목적지포트 26145, 7532와 함께 응답을 호스트C로 다시 보낸다.데이터그램에서 A 또는 C로 되돌아가는 IP주소는 출발지IP를 서버IP주소로 설정하고, 목적지 IP는 원래 서버로 전송한 요청의 클라이언트 주소로 설정된다.P3. UDP와 TCP는 체크섬에 1의 보수를 사용한다. 3개의 8비트 단어를 가정하자. 즉 01010011, 01100110, 01110100이다. 이 8비트(1바이트)합의 1의 보수는 무엇인가? (비록 UDP와 TCP가 체크섬을 계산할 때 16비트 워드를 사용하더라도, 이 문제에서 여러분은 8비트로 생각하라.) 모든 과정을 보여라. 왜 UDP는 단지 합만 사용하지 않고, 그 합의 1의 보수를 사용하는가? 1의 보수 기법으로, 수신자는 어떻게 오류를 검출하는가? 1비트 오류가 검출되지 않을 수 있는가? 2비트 오류는 어떠한가?
a. 텍스트와 3개의 이미지로 구성된 웹 페이지를 사용자가 요청한다. 이 페이지에 대해 클라이언트는 하나의 요청 메시지를 전송하고 4개의 응답 메시지를 수신하게 된다.- 거짓- HTTP 는 비지속과 지속 연결 모두를 이용할 수 있다. 비지속 연결의 경우에는 클라이언트는 여러 객체에 관한 요청을 하나의 메시지로 서버에 요구하고 각 개체의 응답메시지를 각각 받는다. 반면 지속 연결의 경우에는 전체 웹페이지의 여러 객체들을 하나의 지속 TCP 연결을 통하여 보낼 수 있다b. 2개의 서로 다른 웹 페이지(예: www.mit.edu/research.html 과 www.mit.edu/students.html)는 동일한 지속 연결로 전송될 수 있다.- 참- 지속 연결에서 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지한다. 같은 클라이언트와 서버 간의 이후 요청과 응답은 같은 연결을 통해 보내진다. 특히, 전체 웹 페이지를 하나의 지속 TCP 연결을 토해 보낼 수 있다. 또한 같은 서버에 있는 여러 웹 페이지들을 하나의 지속 TCP 연결을 통해 보내질 수 있다.c. 브라우저와 기점 서버 사이의 비지속 연결을 사용해서 하나의 TCP 세그먼트로 2개의 상이한 HTTP 요청 메시지를 전송할 수 있다.- 거짓- 비지속 연결의 경우 각 요청 객체에 대한 새로운 연결이 설정되고 유지되어야 한다. TCP 버퍼가 할당되어야 하고 TCP 변수들이 클라이언트와 서버 양쪽에 유지되어야 한다. 이는 수많은 다른 클라이언트의 요청을 동시에 서비스하는 웹 서버에게 심각한 부담을 줄 수 있다. 따라서 하나의 TCP 가 두 개의 HTTP 요청을 전달할 수 없다.d. HTTP 응답 메시지의 Date: 헤더는 응답에 포함된 객체가 언제 마지막으로 수정됐는지를 나타낸다.- 거짓- Date 헤더 라인은 HTTP 응답이 서버에 의해 생성되고 보낸 날짜와 시간을 나타낸다.
R2. 네트워크 구조와 애플리케이션 구조의 차이점은 무엇인가?애플리케이션 개발자 관점에서 네트워크 구조는 고정되어 있고, 애플리케이션에 특정 서비스 집합을 제공한다. 반면, 애플리케이션구조는 애플리케이션 개발자에 의해 설계되고,애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 지시한다.- 네트워크 구조: 네트워크 시스템 구성요소에 대해 논의하기 위한 구조로서 고정되고애플리케이션에 특정서비스 집합을 제공하는 것이다. 각 계층 간의 의사소통을 나타낸다.- 애플리케이션 구조: 애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한End-System에서 조직되는 방법을 알려주는 것이다. 제공자와 제공받는 측과의 관계를 나타낸다.R3. 두 프로세스 간의 통신 세션에서 어느 프로세스가 클라이언트이고 어느 프로세스가서버인가?두 프로세스 간의 통신 세션에서 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스를 클라이언트라 하고, 세션을 시작하기 위해 접속을 기다리는프로세스를 서버라고 한다.
P3. 일정한 속도로 데이터를 전송하는 응용을 생각해보자(예, 송신자가 매 k시간 단위마다 N비트 단위의 데이터를 생성한다. k는 작고 고정된 값이다.) 또한, 그러한 응용이 시작되면 상당히 긴 시간동안 계속해서 수행된다. 다음 질문들에 답하고 간략히 답에 대한 당위성을 설명하라.N비트 단위, k 작고 고정된 값 => 일정한 시간마다 나온다.회선교환은 서로 연결설정을 한다. 필요한 용량 확보 위함. 짧은 데이터를 보낸다면 연결 설정 부담이 생긴다.a. 패킷 교환 네트워크 혹은 회선 교환 네트워크 중 어느 것이 이 응용에 더 적절한가? 그 이유는?회선 교환 네트워크는 응용 프로그램이 예측 가능한 매끄러운 대역폭 요구 사항을 가진 긴 세션을 포함하기 때문에 응용 프로그램에 적합하다. 전송 속도를 알 수 있고 버스트가 발생 하지 않기 때문에 대역폭은 큰 낭비 없이 각 애플리케이션 세션에 대해 예약할 수 있다. 또한 연결을 설정하고 해제하는 오버헤드 비용은 일반적인 애플리케이션 세션의 긴 기간 동안 보완이 가능하다.정리 : 회선 교환 네트워크가 더 적절하다. 그 이유는 응용이 시작되면 상당히 긴 시간동안 계속해서 수행된다고 했으므로 회로 교환 네트워크는 장시간 긴 세션을 포함하기 때문에 적절하다고 생각한다.b. 패킷 교환 네트워크를 사용하고 이 네트워크상의 유일한 트래픽이 위에 기술된 것 같은 응용들로부터 온다고 가정하자. 더 나아가 이 응용 데이터 속도의 합이 각 그리고 모든 링크의 용량보다 작다고 가정하자. 어떤 형태의 혼잡제어가 필요한가? 그 이유는?최악의 경우 모든 응용 프로그램이 하나 이상의 네트워크 링크를 통해 동시에 전송한다. 그러나 각 링크에는 모든 응용 프로그램의 데이터 속도 합계를 처리할 수 있는 충분한 대역폭이 있으므로 혼잡(큐잉 지연)이 발생하지 않는다. 이러한 넉넉한 링크 용량을 감안할 때 네트워크에는 혼잡 제어 메커니즘이 필요하지 않다.