오예 !!!

Chap.3 Transport Layer (1) 본문

💻/컴퓨터 네트워크

Chap.3 Transport Layer (1)

당도최고치악산복숭아 2021. 10. 13. 14:43

1. 호스트 A와 호스트 B가 통신하고 있고, 이때 중간에 세개의 라우터 R1, R2, R3를 거쳐간다고 가정한다. (즉, A – R1 – R2 – R3 – B 로 연결되어 있고, A와 B외에 다른 호스트는 연결 되어있지 않음) 이때 호스트 B의 transport 계층에서 아래 network 계층으로부터 받은 PDU를 열었을 때 보이는 해더는 A, R1, R2, R3 중 누가 작성한 것인가?

-> A

 

2. TCP 서버와 통신하는 어떤 클라이언트가 TCP 연결을 close 하면 해당 서버는 그 클라이언트와 통신하기 위해 사용한 socket과 더불어 welcome socket도 close 한다.

-> 거짓

 

3. (in-depth question) UDP 혹은 TCP가 demux 할 때 소켓을 식별하는 port번호 뿐만 아니라 IP 주소도 함께 사용한다. 그런데 이미 network 계층에서 자신의 IP 주소로 잘 도착한 것을 확인하고 transport 계층으로 올려준 것인데 굳이 IP 주소까지 다시 확인하고 소켓을 찾아서 demux해야하는 이유는 무엇인가? 즉, socket을 생성할 때 identification으로 자신의 port 번호 외에 IP 주소까지 사용하는 이유는 무엇인가?

** 힌트: 교과서(강의 슬라이드)는 호스트가 하나의 IP 주소를 가지는 경우를 가정하고 설명하고 있으나, 서버 혹은 클라이언트 호스트도 둘 이상의 network interface를 가질 수 있음.

-> (서버, 클라이언트 무관하게) 호스트가 둘 이상의 IP 주소를 가지고 있을 경우 ( 둘 이상의 network interface를 가지고 있어 둘 이상의 IPv4 주소를 가지는 경우, 혹은 하나의 network interface에 IPv4주소와 IPv6 주소를 모두 가지고 있는 경우), 다른 IP 주소를 destination IP주소로 하여 도착한 패킷은 transport 해더의 destination port 번호가 동일하더라도 다른 소켓으로 전달되야 한다. 이렇게 각 다른 IP로 도착하는 패킷을 구별하기 위해서 application process가 소켓을 열 때 port 번호외에 IP 주소도 함께 식별하도록 하는 것이다. (추가적으로 설명하면 포트번호는 IP 주소 당 관리된다. 만일 어떤 DNS 서버가 두개의 NIC를 장착하고 있고 각각 IPv4 주소를 23.24.25.26 과 23.24.25.27로 설정한 경우, 두개의 소켓 (23.24.25.26, 53), (23.24.25.27, 53)을 생성한다.)

 

4. receiver TCP가 받은 TCP 세그먼트 해더의 sequence number 필드 값은 body에 실려있는 데이터의 첫번째 바이트에 붙여진 sequence number이다. 

-> 참

 

5. TCP는 application 계층에서 보낸 메세지 단위로 loss를 감지하고 재전송을 수행한다.

-> 거짓

 

6. TCP 서버는 자신과 통신하는 여러 클라이언트들과 하나의 소켓으로 메시지를 주고받는다.

-> 거짓

 

7. receiver TCP가 받은 TCP 세그먼트 해더의 ACK flag bit가 0 인 경우에도 ack number 필드를 처리한다.

-> 거짓

 

8. Transport layer의 기본 기능을 설명하고 있다. 빈칸을 아래에서 골라 drag-and-drop 방식으로 채워 완성하시오.

"Transport 계층의 상위 계층에 해당하는 <Application> 계층에서 구동하고 있는 <Process>들 간의 <Message> 교환을 지원하는 것으로, sending host transport 계층에서는 sending/receiving process  <Port number> transport 계층 PDU<Header> 에 넣어 전송하는데 이를 <Mux>라고 한다. 반대로receiving host transport 계층에서는 sending host가 알려준 정보를 이용하여 receiving process(socket)를 찾아 데이터를 전달하게 되는데 이를 <Demux> 라고 한다

한마디로 transport 계층의 기본기능은  destination host의 특정 NIC 카드로 도착한 메시지들을 기다리는 수신 process를 찾는 과정이며 이때 NIC 카드에 설정된 3계층 <IP> 주소와 4계층에서 사용하는 포트 번호를 각 3계층/4계층 해더의  <Destination> 필드의 값과 같은지 비교하여 결정한다."

 

9. TCP가 point-to-multipoint (multicast) 방식의 communication 구현에는 부적절한 이유가 아닌것은?

하나를 선택하세요.

a. 기본적인 Multicast 통신은 sender가 메시지를 보내기만 하지 받지는 않으므로 receiver 측이 sender가 보낸 세그먼트(패킷)에 대해 일일이 잘 받았는지 응답(response 혹은 ACK)을 보내는 TCP 와는 맞지 않기때문이다.

b. Multicast는 sender 소켓이 한번 전송하면 중간 라우터에서 여러 수신자에게 전송하는 것을 구현하는 방식이다. 그러므로 sending rate을 조정하는 flow control을 하기 위해서 어느 receiver 버퍼의 상태를 반영해야하는지 알 수가 없기 때문이다.

c. 만일 TCP로 multicast를 구현한다면 sender가 보낸 메시지를 여러 수신자들 중 한 수신자라도 제대로 받지 못한 경우 재전송이 일어나며, 이는 정상적으로 메시지를 받은 나머지 수신자들에게도 불필요하게 재전송이 일어나 네트워크 자원의 낭비가 발생하게 되기때문이다.

d. 한마디로 reliable data transfer (rdt) 서비스를 하기 때문이다.

e. TCP가 UDP 처럼 error checking을 하기 때문이다.

-> e

 

10. 빈 칸을 채우시오.

Application 계층에서 생성된 message 크기가 전송될 링크의 transmission rate인 R 값보다 클 경우 메시지는 더 작은 크기의 패킷으로 쪼개져 전송된다. 이 작업이 transport 계층에서 수행되는 것을  <TCP Segmentation>이라하고, network 계층에서 수행되는 것을 <IP Fragmentation>이라 한다.

 

11. TCP 서버는 UDP 서버와는 달리 자신과 통신하는 각 클라이언트들과 연결된 소켓(socket)에 해당 클라이언트 호스트의 IP 주소와 프로세스 포트번호를 추가로 기록하고 있다.

-> 참

 

12. UDP의 checksum과 TCP의 checksum은 알고리즘이 다르다.  

-> 거짓

 

13. TCP는 양쪽 호스트에서 sending을 동시에 수행하는 full duplex 통신을 지원할 수 있다.

-> 참

 

14. end host에 있는 transport 계층에서 UDP 혹은 TCP가 하는 error checking이 필요한 이유가 아닌 것은?

하나를 선택하세요.

a. 16-bit 거리 차이로 flip된 비트 에러는 감지할 수 없기 때문이다. 

b. 중간 라우터의 버퍼 메모리에서 발생하는 에러는 중간 노드들의 2계층에서 실행하는 error checking으로는 감지할 수 없기 때문이다.

c. 4계층에서 error checking을 하면 송신 호스트 (source)의 NIC 카드에서 발생한 bit 에러를 수신 호스트 (destination)에서 감지할 수 있기 때문이다.

d. 호스트를 포함하여 end-to-end path에 연결된 모든 네트워크 장비들이 error checking과 reccovery를 수행하는 2계층 프로토콜을 사용하지 않을 수 있기 때문이다.

-> a

 

15. UDP가 error checking 후 bit error를 감지한 경우 반드시 application에게 report 하도록 표준화되어있다.

-> 거짓

 

16. reliable data transfer를 구현할 때 수신측에서 이미 정상적으로 받은 데이터를 다시 수신하게 되는 경우 가 아닌것은?

하나를 선택하세요.

a. 수신측에서 데이터를 정상으로 받은 후 전송한 ACK이 중간 네트워크에서 loss된 경우

b. 송신측 타이머의 timeout 값을 너무 짧게두어 정상적으로 전송된 데이터의 ACK이 timeout 이후에 도착한 경우

c. 송신측이  전송한 데이터가 loss 되었으나  타이머의 timeout 값을 너무 길게 설정해서 늦게  retransmission을 하게되는 경우 

-> c

 

17. multicast 혹은 broadcast communication에는 UDP가 더 적절한 이유는 두 방식 모두 sender가 receiver의 response (ACK)을 받지 않는데 이는 UDP 동작과 일치하기 때문이다.

-> 참

 

18. UDP 소켓이 상위계층 어플리케이션 프로토콜에게 메시지를 전달할 때 마다 해당 메시지를 전송한 프로세스의 IP 주소와 포트번호를 항상 전달하는 이유는 어떤 프로세스와 통신하는지 정보를 UDP가 관리하고 있지 않기 때문이다.

-> 참

'💻 > 컴퓨터 네트워크' 카테고리의 다른 글

chap.5 Network Layer (2)  (0) 2021.12.01
chap.5 Network Layer - Control plane (1)  (0) 2021.11.24
chap.4 Network Layer (2)  (0) 2021.11.17
chap.4 Network Layer (1)  (0) 2021.11.10
Chap.3 Transport Layer (2)  (0) 2021.10.20
Comments