학습 범위: 네트워크 DAY 1 ~ DAY 11
복습 방식: 20문제 풀이 및 해설
학습 내용: Proxy, TCP 제어, DNS, IPv4 단편화, Wireshark, HTTP 상태 코드, Load Balancing, TLS, DHCP, CIDR, HTTP Cache, TCP/UDP, CA, SPoF, BGP
기존에 공부했던 네트워크 내용을 다시 복습해보자.
이번 복습도 하루에 20문제씩 풀면서 기억이 나지 않거나 헷갈리는 부분을 다시 정리하는 방식으로 진행한다.
회사 내부 직원들의 인터넷 요청을 대신 외부 서버로 전달하고 접속 기록이나 접근 정책을 관리하려고 한다.
어떤 프록시를 사용해야 할까?
① Forward Proxy
② Reverse Proxy
③ Load Balancer
④ Default Gateway
정답은 ① Forward Proxy
Forward Proxy는 클라이언트 측에서 클라이언트를 대신하여 외부 서버에 요청을 전달한다.
내부 사용자
|
v
Forward Proxy
|
v
외부 인터넷
반대로 Reverse Proxy는 외부 요청을 받아 내부 서버에 전달한다.
외부 사용자
|
v
Reverse Proxy
|
v
내부 Server
로드 밸런서는 특정 위치에 고정되는 개념이라기보다 여러 서버로 요청을 분산하는 역할이 핵심이다.
Forward Proxy
→ Client를 대신
Reverse Proxy
→ Server를 대신
Load Balancer
→ 여러 Server로 요청 분산
다음 두 상황은 각각 어떤 제어가 필요할까?
송신자가 너무 빠르게 데이터를 전송하여 수신자의 버퍼가 거의 가득 찼다.
송신자와 수신자는 데이터를 충분히 처리할 수 있지만 중간 네트워크에 패킷이 너무 많이 몰려 지연과 손실이 발생한다.
상황 A
→ Flow Control
상황 B
→ Congestion Control
Flow Control(흐름 제어)은 수신자가 처리할 수 있는 양보다 송신자가 너무 많은 데이터를 보내는 것을 방지한다.
Flow Control
→ 수신자가 감당할 수 있는가?
Congestion Control(혼잡 제어)은 네트워크 자체에 패킷이 지나치게 많이 몰리는 것을 방지한다.
Congestion Control
→ 네트워크가 감당할 수 있는가?
관련 윈도우는 다음과 같이 구분할 수 있다.
수신 윈도우
rwnd
→ Flow Control
혼잡 윈도우
cwnd
→ Congestion Control
DNS 재귀 리졸버가 도메인의 IP 주소를 찾을 때 일반적인 조회 순서는?
① TLD → Root → Authoritative
② Root → Authoritative → TLD
③ Root → TLD → Authoritative
④ Authoritative → Root → TLD
처음에는 ②번이라고 생각했다.
정답은 ③ Root → TLD → Authoritative
DNS Resolver
|
v
Root Name Server
|
v
TLD Name Server
|
v
Authoritative Name Server
|
v
DNS Record
해당 최상위 도메인(TLD)을 담당하는 서버를 알려준다.
"example.com?"
→ .com 담당 서버는 저쪽이야.
해당 도메인을 담당하는 권한 있는 네임 서버를 알려준다.
"example.com?"
→ example.com 담당 서버는 저쪽이야.
실제 도메인의 DNS 레코드를 제공한다.
example.com
→ IP Address
따라서
Root
→ TLD
→ Authoritative
순서로 기억한다.
단, DNS Cache가 있다면 일부 조회 과정은 생략될 수 있다.
다음 중 역할이 잘못 연결된 것은?
① Identification
→ 같은 원본 패킷의 조각인지 구분
② Fragment Offset
→ 원본 데이터에서 해당 조각의 위치 확인
③ MF
→ 뒤에 단편이 더 있는지 확인
④ Sequence Number
→ 같은 원본 IP 패킷의 단편인지 구분
정답은 ④번
Sequence Number는 IPv4 단편화가 아니라 TCP 데이터 순서 관리와 관련되어 있다.
IPv4 단편화에서는 다음 세 가지를 함께 기억한다.
Identification
→ 같은 원본 Packet인가?
Fragment Offset
→ 원본에서 어느 위치인가?
MF
→ 뒤에 Fragment가 더 있는가?
반면
TCP Sequence Number
→ TCP 데이터 순서 관리
에 사용된다.
다음 조건의 패킷만 표시하고 싶다.
출발지 IP
192.168.10.50
TCP 목적지 Port
443
처음에는 다음과 같이 작성했다.
sip:192.168.10.50 & TCP.443
하지만 Wireshark Display Filter 문법으로는 올바르지 않다.
정확한 필터는 다음과 같다.
ip.src == 192.168.10.50 && tcp.dstport == 443
각 항목의 의미는 다음과 같다.
ip.src
→ Source IP
ip.dst
→ Destination IP
tcp.srcport
→ TCP Source Port
tcp.dstport
→ TCP Destination Port
&&
→ AND
||
→ OR
따라서 Wireshark에서는 단순히 sip와 같은 형태가 아니라 정해진 Display Filter 문법을 사용해야 한다.
Reverse Proxy가 뒤쪽 WAS 서버에 요청을 전달했는데 유효하지 않은 응답을 받았다.
어떤 HTTP 상태 코드가 적절할까?
① 404
② 500
③ 502
④ 504
정답은 ③ 502 Bad Gateway
Client
|
v
Reverse Proxy
|
v
WAS
Reverse Proxy 또는 Gateway가 상위 서버로부터 정상적이지 않은 응답을 받으면 502 Bad Gateway가 발생할 수 있다.
502 Bad Gateway
→ 상위 Server에서 유효하지 않은 응답
504 Gateway Timeout
→ 상위 Server가 제한 시간 내 응답하지 않음
다음과 같이 요청 경로에 따라 서로 다른 서버로 보내고 싶다.
/images
→ Image Server
/api
→ API Server
어떤 로드 밸런서를 사용해야 할까?
① L2
② L4
③ L7
④ DNS Round Robin
정답은 ③ L7 Load Balancer
URL 경로는 HTTP 애플리케이션 계층의 정보이다.
따라서 HTTP 요청 내용을 보고 서버를 선택하려면 L7이 필요하다.
L4
→ IP
→ TCP/UDP Port
L7
→ URL
→ HTTP Header
→ Cookie
구조를 보면 다음과 같다.
Client
|
v
L7 Load Balancer
|
+---- /images → Image Server
|
+---- /api → API Server
TCP 송신자가 같은 ACK 번호를 반복해서 받았다.
재전송 타이머가 만료되기 전에 손실된 것으로 판단되는 세그먼트를 다시 전송하는 기능은?
① Slow Start
② Fast Retransmit
③ Flow Control
④ Selective Repeat
처음에는 ④ Selective Repeat라고 생각했다.
정답은 ② Fast Retransmit
Fast Retransmit은 동일한 ACK가 반복될 때 패킷 손실을 추정하여 재전송 타이머가 끝나기 전에 빠르게 재전송하는 방식이다.
일반적으로 TCP에서는 동일한 ACK를 3번 중복해서 받는 경우 손실 가능성을 판단한다.
Data 1 → 정상
Data 2 → 정상
Data 3 → 손실
Data 4 → 도착
Data 5 → 도착
Duplicate ACK
Duplicate ACK
Duplicate ACK
↓
Data 3 빠른 재전송
비슷한 용어들을 구분해야 한다.
Fast Retransmit
→ Duplicate ACK 기반 빠른 재전송
Go-Back-N
→ 손실 지점부터 이후 데이터 재전송
Selective Repeat
→ 손실된 데이터만 선택적으로 재전송
Slow Start
→ Congestion Control
TLS에서 실제 애플리케이션 데이터를 암호화할 때 대칭 키 암호화 방식을 사용하는 주된 이유는?
① 공개 키 방식보다 일반적으로 처리 속도가 빠르다.
② 대칭 키는 키가 필요 없다.
③ 대칭 키가 Server 인증까지 자동 수행한다.
④ 공개 키 방식은 인터넷에서 사용할 수 없다.
처음에는 ④번이라고 생각했다.
정답은 ①번
대칭 키 방식은 공개 키 방식과 비교했을 때 일반적으로 연산 비용이 적고 빠르기 때문에 실제 데이터를 암호화하는 데 적합하다.
TLS에서는 각각의 기술을 대략 다음과 같이 나눠서 이해할 수 있다.
공개 키 기술
→ 인증
→ 안전한 Key Exchange 지원
대칭 키
→ 실제 Application Data 암호화
즉,
TLS Handshake
→ Server 인증
→ 공유할 Session Key 마련
이후 실제 통신
→ Session Key를 이용한 대칭 키 암호화
방식으로 이해할 수 있다.
DHCP로 IP 주소를 할당받는 올바른 순서는?
① Discover → Offer → Request → ACK
② Discover → Request → Offer → ACK
③ Offer → Discover → ACK → Request
④ Request → Offer → Discover → ACK
정답은 ①번
순서는 앞글자를 이용하여 DORA라고 기억할 수 있다.
D
Discover
O
Offer
R
Request
A
ACK
처음에는 사용하지 않는 IP 주소를 찾는 과정이라고 생각했다.
정확히는 클라이언트가 DHCP 서버를 찾는 과정이다.
Client
"DHCP Server 있나요?
IP 주소가 필요합니다."
DHCP 서버가 사용할 수 있는 IP 주소를 제안한다.
Server
"이 IP를 사용하는 것은 어때?"
클라이언트가 제안받은 주소를 사용하겠다고 요청한다.
Client
"그 주소를 사용하겠습니다."
DHCP 서버가 최종적으로 승인한다.
Server
"확인. 그 IP를 사용해."
다음 IP 주소의
를 구해보자.
172.16.10.70/27
/27이므로 Host Bit는
32 - 27
= 5bit
이다.
전체 주소 수는
2^5
= 32개
따라서 32개 단위로 Subnet이 나뉜다.
0 ~ 31
32 ~ 63
64 ~ 95
96 ~ 127
...
70은
64 ~ 95
구간에 포함된다.
따라서
Network Address
172.16.10.64
Broadcast Address
172.16.10.95
Host Range
172.16.10.65
~
172.16.10.94
사용 가능한 Host 수는
2^5 - 2
= 30개
이다.
도메인 이름을 IPv4 주소와 연결하는 DNS Record는?
① AAAA
② A
③ MX
④ CNAME
처음에는 ④ CNAME이라고 생각했다.
정답은 ② A Record
DNS Record는 다음과 같이 구분한다.
A
→ IPv4 Address
AAAA
→ IPv6 Address
MX
→ Mail Server
CNAME
→ 다른 Domain Name의 Alias
예를 들어
example.com
→ A
→ 192.0.2.10
처럼 A 레코드가 IPv4 주소를 가리킬 수 있다.
CNAME은 IP 주소를 직접 나타내는 것이 아니라 다른 도메인 이름을 가리킨다.
www.example.com
|
v
CNAME
|
v
example.com
Browser가 Server에 리소스 변경 여부를 확인했는데 다음 응답을 받았다.
304 Not Modified
Browser는 어떻게 할까?
① 기존 Cache 삭제 후 다시 다운로드
② 기존 Cache 사용
③ 404 오류 표시
④ TCP 연결 종료
정답은 ② 기존 Cache 사용
Not Modified라는 이름 그대로 서버의 리소스가 기존과 비교하여 변경되지 않았다는 의미이다.
Browser
"이 파일 변경됐어?"
Server
"변경 안 됐어.
304 Not Modified"
Browser
"그러면 기존 Cache 사용할게."
캐시를 사용하면
와 같은 장점이 있다.
외부 사용자가 웹사이트에 접속한다.
요청은 먼저 Proxy Server가 받고 내부 WEB Server로 전달한다.
사용자는 내부 WEB Server의 실제 주소를 알 필요가 없다.
어떤 Proxy일까?
① Forward Proxy
② Reverse Proxy
③ NAT
④ DHCP
처음에는 ① Forward Proxy라고 생각했다.
정답은 ② Reverse Proxy
Reverse Proxy는 Server 측을 대신하여 외부 요청을 받는다.
외부 Client
|
v
Reverse Proxy
|
v
내부 WEB Server
외부 사용자는 Reverse Proxy와 통신하고 실제 내부 서버의 구조나 주소를 직접 알 필요가 없다.
Forward Proxy는 반대 방향이다.
내부 Client
|
v
Forward Proxy
|
v
외부 Internet
따라서 다음처럼 기억한다.
Forward Proxy
→ Client를 대신
Reverse Proxy
→ Server를 대신
다음 중 UDP의 특징이 아닌 것은?
① 3-Way Handshake가 없다.
② 기본적으로 순서를 보장하지 않는다.
③ 기본적으로 재전송을 통해 신뢰성을 보장한다.
④ 실시간 음성/영상에 활용될 수 있다.
정답은 ③번
UDP는 TCP처럼 기본적으로 재전송을 통해 신뢰성을 보장하지 않는다.
UDP의 주요 특징은 다음과 같다.
비연결형
3-Way Handshake 없음
순서 보장 없음
기본 재전송 없음
상대적으로 작은 Overhead
반면 TCP에서는
Connection 설정
재전송
순서 보장
Flow Control
Congestion Control
등의 기능을 제공한다.
크기가 2000 Byte인 IPv4 패킷이
MTU = 1500 Byte
인 구간을 지나야 한다.
그런데
DF = 1
로 설정되어 있다.
어떻게 처리될까?
① 단편화하여 전송
② 패킷 폐기 후 일반적으로 ICMP 메시지 전달
③ MTU를 2000으로 변경
④ TCP로 변환
처음에는 DF가 단편화 가능한 횟수와 관련된 값인지 생각했다.
하지만 DF는
Don't Fragment
의 약자이다.
DF = 0
→ Fragmentation 허용
DF = 1
→ Fragmentation 금지
현재 패킷은 2000 Byte이고 구간의 MTU는 1500 Byte이다.
따라서 단편화가 필요하지만 DF가 1이므로 라우터는 단편화할 수 없다.
결과적으로 패킷을 폐기하고 일반적으로 ICMP 관련 메시지를 전달한다.
DF = Don't Fragment = 단편화하지 마
HTTPS에서 CA의 주요 역할은 무엇일까?
① 모든 HTTPS Data를 직접 암호화
② 인증서를 발급하고 서명하여 Server 신뢰성을 검증할 수 있게 함
③ TCP 연결을 대신 수행
④ DNS를 IP로 변환
정답은 ②번
CA는
Certificate Authority
즉, 인증 기관이다.
주요 역할은
Digital Certificate 발급
Certificate 전자 서명
공개 키와 신원 정보 연결
신뢰 체계 제공
등이다.
Client는 Server가 보낸 인증서를 확인하면서
인증서 유효기간
Domain 일치 여부
Certificate Chain
CA 신뢰 여부
전자 서명
등을 확인할 수 있다.
CA가 HTTPS 통신 데이터를 모두 직접 암호화하는 것은 아니다.
다음 구조에서 WEB Server는 두 대로 이중화되어 있지만 Load Balancer는 한 대이다.
Client
|
v
Load Balancer
|
+---- WEB A
|
+---- WEB B
Load Balancer에 장애가 발생하면 어떻게 될까?
정답은
Load Balancer가 SPoF가 될 수 있고 서비스 접근이 중단될 수 있다.
WEB A와 WEB B 자체는 정상이어도 Client 요청이 Load Balancer를 통과해야 한다면 Load Balancer 장애로 서비스에 접근하지 못할 수 있다.
SPoF는
Single Point of Failure
의 약자이다.
처음에는
Simple Path Objective Failure?
와 비슷하게 기억하고 있었다.
정확한 의미는
하나의 구성 요소에 장애가 발생했을 때 전체 시스템이나 서비스에 큰 영향을 줄 수 있는 단일 장애 지점
이다.
Client
|
v
Load Balancer ← SPoF 가능
|
+---+---+
| |
v v
WEB A WEB B
따라서 고가용성을 구성할 때는 서버뿐 아니라 중간 장비에도 SPoF가 남아 있는지 확인해야 한다.
서로 다른 AS 사이에서 BGP 정보를 교환할 때 사용하는 방식은?
① iBGP
② eBGP
③ OSPF
④ RIP
정답은 ② eBGP
eBGP는
External BGP
로, 서로 다른 AS 사이에서 BGP 경로 정보를 교환한다.
AS 100
|
eBGP
|
AS 200
iBGP는
Internal BGP
로, 같은 AS 내부의 BGP Router 사이에서 BGP 정보를 교환한다.
AS 100
Router A
|
iBGP
|
Router B
여기서 주의할 것은
iBGP ≠ IGP
라는 것이다.
IGP는 RIP와 OSPF처럼 AS 내부 라우팅에 사용하는 라우팅 프로토콜 계열이다.
IGP
├─ RIP
└─ OSPF
BGP
├─ iBGP
└─ eBGP
또한 eBGP의 기준은 단순히 다른 Network가 아니라 다른 AS라는 점을 기억한다.
다음과 같은 구조가 있다.
사용자
|
v
Reverse Proxy
|
v
WEB Server
사용자가 웹사이트에 접속했는데
504 Gateway Timeout
응답을 받았다.
어떤 상황일까?
정답은
Reverse Proxy가 WEB Server로부터 제한 시간 안에 응답을 받지 못했을 가능성이 있다.
504 Gateway Timeout은 Gateway나 Proxy가 뒤쪽 Server에 요청을 전달했지만 정해진 시간 내에 응답하지 않은 경우 발생할 수 있다.
반면 502 Bad Gateway는 뒤쪽 Server에서 응답은 받았지만 유효하지 않은 응답인 경우와 관련된다.
502 Bad Gateway
→ 상위 Server의 응답에 문제
504 Gateway Timeout
→ 상위 Server의 응답 시간이 초과
쉽게 기억하면
502
→ 응답이 이상함
504
→ 응답을 기다리다가 시간 초과
| 문제 | 개념 | 핵심 복습 |
|---|---|---|
| Q3 | DNS 조회 | Root → TLD → Authoritative |
| Q5 | Wireshark | ip.src == IP && tcp.dstport == Port |
| Q8 | TCP 재전송 | Duplicate ACK → Fast Retransmit |
| Q9 | TLS | 대칭 키는 실제 데이터 암호화에 효율적 |
| Q12 | DNS Record | A = IPv4, AAAA = IPv6, CNAME = Alias |
| Q14 | Proxy | Forward는 Client 측, Reverse는 Server 측 |
| Q16 | IPv4 단편화 | DF = Don't Fragment |
| Q18 | SPoF | Single Point of Failure |
Forward Proxy
→ Client를 대신
Reverse Proxy
→ Server를 대신
Flow Control
→ 수신자가 감당 가능한가?
Congestion Control
→ Network가 감당 가능한가?
Fast Retransmit
→ Duplicate ACK를 보고 빠르게 재전송
Root
↓
TLD
↓
Authoritative
DNS Record는
A
→ IPv4
AAAA
→ IPv6
MX
→ Mail Server
CNAME
→ Alias
ip.src
→ Source IP
ip.dst
→ Destination IP
tcp.srcport
→ Source TCP Port
tcp.dstport
→ Destination TCP Port
예시:
ip.src == 192.168.10.50 && tcp.dstport == 443
502 Bad Gateway
→ 상위 Server 응답 문제
504 Gateway Timeout
→ 상위 Server 응답 시간 초과
Discover
→ Offer
→ Request
→ ACK
DORA
UDP
비연결형
3-Way Handshake 없음
순서 보장 없음
기본 재전송 없음
Identification
→ 같은 원본 Packet인지 확인
Fragment Offset
→ 원본에서 위치 확인
MF
→ 뒤에 Fragment가 더 있는가?
DF
→ Don't Fragment
DF = 0
→ 단편화 허용
DF = 1
→ 단편화 금지
공개 키 기술
→ 인증 및 Key Exchange 지원
대칭 키
→ 실제 Data 암호화
SPoF
Single Point of Failure
하나의 구성 요소에 장애가 발생했을 때 전체 서비스에 영향을 줄 수 있는 단일 장애 지점이다.
iBGP
→ 같은 AS 내부
eBGP
→ 서로 다른 AS 사이
주의:
iBGP ≠ IGP
다음 복습에서는 오늘 틀렸거나 헷갈렸던 내용을 다시 문제로 만나면서 반복해서 익혀보자.
Root → TLD → Authoritative 다시 확인하기A / AAAA / MX / CNAME 레코드 구분하기Single Point of Failure 기억하기DAY 4 복습 완료! ✅
#네트워크 #혼자공부하는네트워크 #네트워크공부 #TCP #UDP #DNS #HTTP #Wireshark #TLS #Proxy #BGP #정보보안 #복습