27단원 'IP와 전송'의 다섯 레슨에서 6문제, 앞 단원(24·25)에서 2문제를 섞었고, 끝에 실기 꼴 3문제가 있습니다. 앞 단원 문제가 어느 레슨인지는 정답을 펼치면 보입니다. 주소·길·스케줄링 계산은 종이에 적어 가며 풀어 보세요. 실기 꼴은 종이에 답을 끝까지 쓴 뒤 펼치세요. 띄어쓰기만 다르면 같은 답입니다.
문제 1
다음 가운데 사설 IP 주소가 아닌 것을 고르세요.
- ① 10.250.3.4
- ② 172.16.9.1
- ③ 172.31.200.3
- ④ 172.32.0.8
정답
④ — B 클래스의 사설 주소 범위는 172.16.0.0~172.31.255.255라, 둘째 옥텟이 32인 172.32.0.8은 범위 밖입니다. 인터넷에서 쓰는 공인 주소입니다.
- ① 둘째 옥텟 250을 보고 범위를 넘었다고 봤습니다. 10으로 시작하는 주소는 뒤 옥텟과 상관없이 모두 사설(10.0.0.0~10.255.255.255)입니다.
- ② 사설 주소는 10과 192.168로 시작하는 것뿐이라고 봤습니다. 172.16.0.0~172.31.255.255도 B 클래스의 사설 범위입니다.
- ③ 셋째 옥텟 200을 보고 범위 밖으로 봤습니다. 범위를 가르는 것은 둘째 옥텟이고, 31까지 사설입니다.
다시 볼 레슨: IP 주소와 IPv6
문제 2
주소 10.4.4.100/27이 속한 서브넷의 브로드캐스트 주소로 알맞은 것을 고르세요.
- ① 10.4.4.96
- ② 10.4.4.127
- ③ 10.4.4.223
- ④ 10.4.4.255
정답
② — /27은 마지막 옥텟의 앞 3비트까지가 네트워크 부분이라 서브넷 크기가 2⁵ = 32입니다. 100은 96부터 127까지인 서브넷에 들고, 호스트 비트 다섯을 모두 1로 채운 96 + 31 = 127이 브로드캐스트 주소입니다.
- ① 호스트 비트를 모두 0으로 채웠습니다. 100 AND 224 = 96은 이 서브넷의 네트워크 주소입니다.
- ③ 마스크의 마지막 옥텟 224를 서브넷 크기로 읽었습니다. 서브넷 크기는 256 − 224 = 32입니다.
- ④ 마지막 옥텟 여덟 비트를 모두 호스트 부분으로 봤습니다. /24일 때의 브로드캐스트 주소입니다.
다시 볼 레슨: 서브넷과 CIDR
문제 3
클라이언트가 순서 번호 7000을 담은 SYN을 보내 TCP 연결을 청했습니다. 서버가 돌려보내는 둘째 세그먼트의 (가) 제어 비트와 (나) 확인 응답 번호로 알맞은 것을 고르세요.
- ① (가) ACK · (나) 7000
- ② (가) ACK · (나) 7001
- ③ (가) SYN+ACK · (나) 7000
- ④ (가) SYN+ACK · (나) 7001
정답
④ — 3-way 핸드셰이크의 둘째 번에 서버는 받았다는 확인(ACK)과 자기 순서 번호의 시작을 알리는 SYN을 한 세그먼트에 함께 보냅니다. 확인 응답 번호는 다음에 받을 번호인데, SYN이 번호 하나를 차지해 7000을 받으면 7001입니다.
- ① 서버가 확인만 보낸다고 보고, 받은 번호를 그대로 돌려준다고도 봤습니다. 서버도 SYN을 함께 보내고, 확인 응답 번호는 다음에 받을 번호입니다.
- ② 서버가 확인만 먼저 보낸다고 봤습니다. 그러면 서버의 SYN이 따로 가야 해 네 번 오가게 됩니다. 둘째 번에 둘을 한 번에 보냅니다.
- ③ 받은 순서 번호를 그대로 돌려준다고 봤습니다. SYN이 번호 하나를 차지하므로 7001을 돌려줍니다.
다시 볼 레슨: TCP와 UDP
문제 4
TCP로 보내던 쪽의 혼잡 창이 20일 때 손실을 알아챘습니다. (가) 확인이 오지 않아 시간 초과로 알았을 때와 (나) 같은 확인 응답을 세 번 잇달아 받아 알았을 때, 보내는 쪽이 줄여 놓는 혼잡 창의 크기로 알맞은 것을 고르세요.
- ① (가) 1 · (나) 1
- ② (가) 1 · (나) 10
- ③ (가) 10 · (나) 1
- ④ (가) 10 · (나) 10
정답
② — 시간 초과로 알면 임곗값을 그때 창의 절반인 10으로 내리고 창을 1로 되돌려 느린 시작부터 다시 합니다. 중복 ACK 셋으로 알면 빠진 세그먼트를 곧바로 다시 보내고(빠른 재전송), 창을 1이 아니라 절반인 10으로 줄여 혼잡 회피로 이어 갑니다(빠른 회복).
- ① 손실이면 늘 창을 1로 되돌린다고 봤습니다. 중복 ACK 셋으로 알면 1이 아니라 절반으로 줄입니다.
- ③ 두 경우를 거꾸로 봤습니다. 창을 1로 되돌리는 것은 시간 초과 쪽입니다.
- ④ 손실이면 늘 절반으로 줄인다고 봤습니다. 시간 초과면 창을 1로 되돌립니다.
다시 볼 레슨: 흐름 제어와 혼잡 제어
문제 5
RIP의 (가) 길을 정하는 방식과 (나) 쓸 수 있는 가장 긴 길의 홉 수로 알맞은 것을 고르세요.
- ① (가) 링크 상태 · (나) 15
- ② (가) 링크 상태 · (나) 16
- ③ (가) 거리 벡터 · (나) 15
- ④ (가) 거리 벡터 · (나) 16
정답
③ — RIP는 이웃이 보내 준 거리표에 이웃까지의 1을 더해 길을 고르는 거리 벡터 방식입니다. 홉 수 15까지 쓰고, 16은 '갈 수 없음'을 뜻합니다.
- ① 방식을 OSPF의 것으로 봤습니다. 링크 상태를 모두에게 알려 같은 지도를 만드는 것은 OSPF입니다.
- ② 방식을 OSPF의 것으로 봤고, 16도 쓸 수 있는 홉 수로 봤습니다. 16은 갈 수 없다는 표시입니다.
- ④ 16을 쓸 수 있는 가장 긴 길로 봤습니다. 16은 '갈 수 없음'이라 15홉까지 씁니다.
다시 볼 레슨: 라우팅 프로토콜
문제 6
라우터 여섯(R1~R6)이 아래 링크로 이어져 있습니다. R1에서 R6으로 갈 때 (가) OSPF가 고르는 길과 (나) RIP(홉 수)가 고르는 길로 알맞은 것을 고르세요.
| 링크 | 비용 |
|---|---|
| R1–R3 | 1 |
| R1–R4 | 2 |
| R2–R3 | 2 |
| R2–R4 | 3 |
| R2–R5 | 1 |
| R3–R4 | 5 |
| R4–R5 | 6 |
| R5–R6 | 1 |
- ① (가) R1–R3–R2–R5–R6 · (나) R1–R4–R5–R6
- ② (가) R1–R3–R2–R5–R6 · (나) R1–R3–R2–R5–R6
- ③ (가) R1–R4–R5–R6 · (나) R1–R4–R5–R6
- ④ (가) R1–R4–R5–R6 · (나) R1–R3–R2–R5–R6
정답
① — OSPF는 다익스트라로 비용 합이 가장 작은 길을 구합니다. R1에서 R3(1) → R4(2) → R2(3) → R5(4) → R6(5) 차례로 확정되어 R1–R3–R2–R5–R6(비용 5, 4홉)입니다. R2는 R3를 거친 1 + 2 = 3이 R4를 거친 2 + 3 = 5보다 작고, R5는 R2를 거친 3 + 1 = 4가 R4를 거친 2 + 6 = 8보다 작습니다. RIP는 비용을 보지 않고 홉만 세어, 3홉인 R1–R4–R5–R6(비용 9)을 고릅니다.
- ② RIP도 비용 합으로 골랐습니다. RIP는 링크 비용이 적혀 있어도 홉 수가 가장 적은 길을 고릅니다.
- ③ OSPF도 홉이 적은 길이 가장 싸다고 봤습니다. R1–R4–R5–R6은 3홉이지만 R4–R5 비용이 6이라 합이 9입니다.
- ④ 두 프로토콜이 길을 고르는 값을 맞바꿨습니다. 비용 합은 OSPF, 홉 수는 RIP의 잣대입니다.
다시 볼 레슨: 라우팅 프로토콜
문제 7
네 프로세스를 라운드 로빈(할당량 2)으로 스케줄링합니다. 할당량을 다 쓴 프로세스는 준비 줄 맨 뒤로 갑니다. 평균 대기 시간으로 알맞은 것을 고르세요.
| 프로세스 | 도착 시각 | 실행 시간 |
|---|---|---|
| K | 0 | 3 |
| L | 1 | 4 |
| M | 3 | 2 |
| N | 6 | 2 |
- ① 1.5
- ② 2.25
- ③ 2.75
- ④ 5.5
정답
③ — 대기 시간은 반환 시간 − 실행 시간으로 K 5 − 3 = 2, L 8 − 4 = 4, M 4 − 2 = 2, N 5 − 2 = 3이고, (2 + 4 + 2 + 3) ÷ 4 = 2.75입니다. 시각 4에는 시각 3에 온 M이 할당량을 다 쓴 L보다 앞에 섭니다.
- ① 처음 CPU를 받을 때까지만 셌습니다(K 0 · L 1 · M 2 · N 3). 선점에서는 여러 토막으로 나뉘어 돌아, 사이사이 기다린 시간까지 반환 시간 − 실행 시간으로 셉니다.
- ② 할당량 없이 도착 순으로 끝까지 돌렸습니다. FCFS의 평균 대기 시간입니다.
- ④ 평균 반환 시간을 셌습니다(5 · 8 · 4 · 5). 대기 시간은 거기서 실행 시간을 뺍니다.
| 토막 | 돈 프로세스 | 그 뒤 준비 줄 |
|---|---|---|
| 0~2 | K(남은 1) | L K |
| 2~4 | L(남은 2) | K M L |
| 4~5 | K(끝) | M L |
| 5~7 | M(끝) | L N |
| 7~9 | L(끝) | N |
| 9~11 | N(끝) | — |
다시 볼 레슨: CPU 스케줄링: 선점
문제 8
프레임 넷이 빈 채로 시작해 참조열 1 2 2 3 1 4 4 5 3 2 1이 차례로 옵니다. 8번째 참조 5가 올 때 처음으로 페이지 하나를 내보내야 했고, 페이지 1을 내보냈습니다. 어느 교체 알고리즘인지 고르세요.
- ① FIFO
- ② OPT
- ③ LRU
- ④ LFU
정답
① — 8번째 참조가 올 때 프레임에는 1·2·3·4가 있습니다. 가장 먼저 들어온 1을 내보냈으니 FIFO입니다. 1은 5번째에 다시 썼지만, FIFO는 들어온 때만 봅니다.
- ② 다시 쓰이는 것 가운데 가장 늦게(11번째) 쓰이는 1을 골랐습니다. OPT는 다시 쓰이지 않는 페이지가 있으면 그것을 먼저 내보내, 뒤의 3 2 1에 나오지 않는 4를 내보냅니다.
- ③ 1이 먼저 들어왔으니 가장 오래전에 쓴 것으로 봤습니다. LRU는 마지막으로 쓴 때를 봐, 5번째에 다시 쓴 1이 아니라 3번째 뒤로 쓰지 않은 2를 내보냅니다.
- ④ 1을 덜 쓴 페이지로 봤습니다. 들어온 뒤 1·2·4는 두 번씩 썼고 3만 한 번이라, LFU는 3을 내보냅니다.
다시 볼 레슨: 페이지 교체 알고리즘
문제 9 (실기)
카페 공유기 뒤의 손님 노트북들이 인터넷을 씁니다. (가)는 영문 약어로, (나)는 한글 이름으로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 노트북이 보낸 패킷이 밖으로 나갈 때 공유기가 출발 주소를 통신사에서 받은 주소 하나로 바꾸고, 응답이 돌아오면 그 노트북의 주소로 되돌려 넣는 일
- (나) 노트북들이 받은 192.168.0.x처럼, 다른 카페 안에서도 똑같이 쓰여 인터넷에서는 길을 찾을 수 없는 주소
정답
받는 답: (가) NAT · (나) 사설 IP 주소
(가)의 실마리는 '나갈 때 출발 주소를 바꾸고, 돌아올 때 되돌린다', (나)는 '여러 곳이 안에서 겹쳐 쓴다'와 '인터넷에서는 길을 찾지 못한다'입니다.
- 같은 이름의 다른 꼴: (가) 네트워크 주소 변환·Network Address Translation — 한글 이름과 원어입니다. 문제가 영문 약어로 물었습니다. (나) Private IP Address — 영문입니다. 문제가 한글 이름으로 물었습니다.
- 틀리는 꼴 IPv6 — (가)에: 주소 길이를 128비트로 늘려 모자람을 푸는 판입니다. (가)는 있는 주소를 바꿔 끼웁니다.
- 틀리는 꼴 공인 IP 주소 — (나)에: 인터넷에서 쓰는, 겹치지 않는 주소입니다. 공유기가 통신사에서 받은 바깥쪽 주소가 이것입니다.
다시 볼 레슨: IP 주소와 IPv6
문제 10 (실기)
학교가 10.20.30.0/24를 받아 실습실마다 서브넷 하나씩 나눠 줍니다. 실습실마다 PC 30대와 프린터 1대, 모두 31대가 주소를 받아야 하고, 서브넷 크기는 모두 같게 가장 작게 잡습니다. 서브넷은 10.20.30.0부터 차례로 셉니다. (가) 서브넷 마스크를 CIDR 표기(/숫자)로, (나) 셋째 서브넷의 네트워크 주소를 주소/숫자 꼴로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
정답
받는 답: (가) /26 · (나) 10.20.30.128/26
장치에 줄 수 있는 주소는 2ʰ − 2개입니다. 호스트 비트가 5개면 30개라 한 대가 모자라고, 6개면 62개라 들어갑니다. 서브넷 크기는 2⁶ = 64라 서브넷이 .0 · .64 · .128 · .192에서 시작하고, 셋째는 .128입니다.
| 차례 | 계산 | 결과 |
|---|---|---|
| 호스트 비트 | 2⁵ − 2 = 30은 모자라고 2⁶ − 2 = 62 | 6비트, /26 |
| 서브넷 크기 | 2⁶ = 64 | 0 · 64 · 128 · 192 |
| 셋째 서브넷 | 128부터 64개 | 10.20.30.128/26 |
- 같은 값의 다른 꼴: (가) 255.255.255.192 — 마스크 꼴입니다. (나) 10.20.30.128 —
/26을 뺀 꼴입니다. 문제가 CIDR 표기로 쓰라고 했습니다. - 틀리는 꼴 (가) /27 · (나) 10.20.30.64/27: 2를 빼지 않고 2⁵ = 32 ≥ 31로 셌습니다. /27은 장치에 줄 수 있는 주소가 30개라 한 대가 모자랍니다.
- 틀리는 꼴 (나) 10.20.30.192/26: 첫 서브넷을 .64부터 셌습니다. 서브넷은 10.20.30.0부터 셉니다.
다시 볼 레슨: 서브넷과 CIDR
문제 11 (실기)
프로그램을 올렸다 내리기를 거듭한 주기억장치에 빈 영역이 여기저기 흩어졌습니다. (가)·(나)의 이름을 영문으로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 쓰는 영역을 모두 한쪽 끝으로 옮겨 적어, 떨어져 있던 빈 영역까지 큰 덩어리 하나로 모읍니다. 옮기는 동안 프로그램이 멈춥니다.
- (나) 막 비워진 영역의 바로 옆 영역도 비어 있어, 두 빈 영역을 하나로 합칩니다.
정답
받는 답: (가) Compaction · (나) Coalescing
(가)의 실마리는 '쓰는 영역을 옮겨 떨어진 빈 영역까지 모은다', (나)는 '이웃한 빈 영역을 옮기지 않고 합친다'입니다.
- 같은 이름의 다른 꼴: (가) 압축 · (나) 통합 — 한글 이름입니다. 문제가 영문으로 물었습니다.
- 틀리는 꼴 Compression — (가)에: 한글로는 같은 '압축'이지만, OSI 표현 계층이 하는 압축처럼 데이터의 크기를 줄이는 일입니다. 빈 영역을 한쪽으로 모으는 압축은 Compaction입니다.
- 틀리는 꼴 Coalescing — (가)에: 이웃한 빈 영역만 합칩니다. (가)는 쓰는 영역을 옮겨 떨어진 빈 영역까지 모읍니다.
- 틀리는 꼴 Compaction — (나)에: 쓰는 영역을 옮겨야 합니다. (나)는 아무것도 옮기지 않고 이웃한 빈 영역만 합칩니다.
다시 볼 레슨: 기억장치 배치와 단편화