9장 연습문제
01) ① 데이터 링크
02) ① 흐름제어 ② 오류제어
03) ① 분할 ② 병합
04) 3-way Handshake
05) TCP
06) ① 포트 ② 소켓 ③ well-know 포트
07) ① SYN ② ACK
08) ① 슬라이딩 윈도우 ② window
09) ① ECE ② CWR
10) ① 세그먼트 ② 바이트
11) ④
∴ ④ 데이터 링크 계층은 단순히 물리적인 선로를 통해 데이터를 직접 전달하기 때문에 네트워크 계층의 중개
기능이 필요 없다.
12)①,③
∴ ① 양 끝단의 호스트에서 실행되는 프로세스 사이의 전송 속도는 흐름제어 기능이 조절한다.
③ 전송 계층에서 발생하는 오류는 논리적으로 구축된 각 계층의 소프트웨어가 동작하는 과정에서 데이터를 분실하는
경우가 대부분이다.
13)①,②,③
∴ ④ 3단계 설정의 마지막 응답은 데이터 전송과 함께 응답 기능을 수행한다.
⑤ 연결해제 방식에는 크게 두 가지로 나눌 수 있는데 일방적으로 연결 종료를 선언 할 수 있는 일방적 연결해제 절차
와 두 프로세스가 모두 종료를 선언해야 연결이 해제되는 점진적 연결 해제 절차가 있다.
14)①,②,③,④,⑤
15)①,③,
∴ ② Source Port/Destination Port에서 포트번호는 TCP와 UDP가 별도의 주소 공간을 갖기 때문에 같은 번호를
독립적으로 사용할 수 있다.
④ Acknowledgement Number는 수신 프로세스가 제대로 수신한 바이트 수를 응답하기 위해 사용하고 필드 값은
ACK 플래그 비트가 지정된 경우에만 유효하며, 다음에 수신을 기대하는 데이터의 순서 번호를 표시한다.
16)④,⑤
∴ ④ SYN 비트는 연결 설정 요구를 의미하는 플래그 비트이므로 가상회선 연결을 설정하는 과정에서 사용한다.
⑤ FIN 비트는 한쪽 프로세스가 더는 전송할 데이터가 없어 연결을 종료하고 싶다는 의사 표시를 상대방에게 알리는
데 사용한다.
17) ①,②,③,④,⑤
18) ③,⑤
∴ ① 데이터를 전송하기 전에 반드시 3단계 설정 방식을 사용하여 연결을 설정해야 하는 것은 아니다.
② 연결을 설정하고자 하는 프로세스는 TCP 헤더의 SYN 플래그를 지정한 세그먼트를 전송함으로써 연결
설정을 요구한다.
④ 데이터 전송 과정에서 프레임 변형 오류가 발생하면 긍정 응답 기능을 사용하여 오류를 복구한다.
19) ④
∴ ④ 라우터로부터 IP 헤더의 CE값을 받은 수신 프로세스는 모든 TCP 세그먼트에 TCP 헤더의 ECE 플래그를 지정하여
라우터가 감지한 혼잡을 송신 프로세스에 알려준다.
20) 오류제어, 흐름 제어, 데이터 순서화 등의 기능면에서 데이터 링크 계층과 유사하나 데이터 링크 계층이 물리적인
전송 선로로 직접 연결된 두 물리적 호스트 사이의 데이터 전송을 담당하는 반면, 전송 계층은 네트워크 끝단에
위치하는 통신 주체가 중간의 논리적 선로를 통해 데이터를 주고받는다.
21) 프로세스에 대한 주소 표현, 멀티플렉싱, 연결설정․해제를 고려해야 한다.
22) 3-Way handshake
[STEP 1]
A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK
응답을 기다리는 SYN_SENT 상태가 되는 것이다.
[STEP 2]
B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고
A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.
[STEP 3]
A클라이언트는 B 서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는 것 이다. 이때의
B서버 상태가 ESTABLISHED 이다.
위 와 같은 방식으로 통신하는 것이 신뢰성있는 연결을 맺어 준다는 TCP의3 Way handshake 방식이다.
23) 일반적 연결해제는 한쪽에서 일방적으로 연결을 종료를 선언할 수 있다. 하지만 점진적 연결 해제 방식은 한쪽이
종료를 선언해도 다른 한쪽에서는 데이터를 계속 전송할 수 있다.
24)
- SOURCE PORT/DESTINATION PORT 메시지를 보내고 받는 쪽의 포트
- SEQUENCE NUMBER : 뒤에서 나올 SYN플래그가 설정되어있다면, SEQUENCE NUMBER는 초기화 된다.
SYN이 설정이 되어있지 않다면 초기화된 SEQUENCE NUMBER + 1의 값이 들어간다. 다음부터는 순서대로 +1이
되어 대입이 된다.
- ACKNOWLEDGEMENT NUMBER : 다음에 받을 것으로 예상되는 SEQUENCE NUMBER가 대입이 된다.
- DATA OFFSET : TCP 헤더의 크기를 나타낸다. 최소 5 words 최대 15 words이다. 여기서 word는 32 bit이다.
- RESERVED : 나중을 위해 예약된 필드, 0으로 초기화 된다.
- CODE BITS : URG (1 bit) – URGENT POINTER 필드가 유효
- ACK (1 bit) : ACKNOWLEDGMENT필드를 유효
- PSH (1 bit) : 세그먼트 PUSH를 요청
- RST (1 bit) : 즉시 연결을 끊음(비정상적인 종료)
- SYN (1 bit) : sequence numbers 동기화
- FIN (1 bit) : 정상적인 종료
- CHECKSUM : 전송된 세그먼트가 잘 전송됐는지 검사한다.
- URGANT POINTER : 세그먼트가 긴급데이터를 포함한다는 것을 의미한다. URG가 설정되어있다면 마지막
긴급한 데이터의 위치에 대한 포인터를 갖는다.
- OPTION : 받는 측의 부가정보를 전달하기 위해 사용한다.
- PADDDING : 헤드의 크기를 맞추기 위해 사용한다.
25) 대표적인 서비스는 표준화하기 위함이다.
- FTP : 20(Data), 21(Control)
- telnet : 23
- SMTP : 25
- DNS : 53
- HTTP : 80
- SSH : 22
26) 클라이언트가 SYN 세그먼트를 보낸 후 서버는 SYN 세그먼트를 인식하고 클라이언트에게 ACK, SYN를 보낸다.
클라이언트는 ACK와 SYN를 받고 ACK를 보낸다.
27) TCP에서는 NAK 프레임을 지원하지 않기 때문에 세그먼트 분실과 세그먼트 변형이 동일하게 취급되어 송신자의
타임아웃 기능을 통해 재전송 한다.
28) 클라이언트가 FIN 세그먼트를 보내면 서버는 FIN 세그먼트를 인식하고 ACK를 보낸다. 더 이상 전송할 데이터가
없다면 즉시 FIN을 보내고, 데이터가 있다면 데이터 전송을 마치고 ACK을 보낸다. 클라이언트는 서버의 FIN을
보고 ACK를 보내고 서버는 클라이언트의 마지막 ACK를 확인하고 서버 종료, 클라이언트는 ACK를 보내고 일정
시간 대기하고 종료한다.
29) 데이터 전송 단계에서 혼잡을 인지한 라우터가 수신 프로세스에 혼잡을 통지한다. 그러면 수신 프로세스는 다시 송신 프로세스에 혼잡을 통지함으로써 송신 프로세스가 전송하는 데이터의 양을 줄이는 방식으로 혼잡제어가 이루어진다.