오늘도 네트워크 복습 20문제를 진행했다.
이번 복습에서는 특히
등을 복습했다.
다음과 같은 환경이 있다.
PC A
PC B
PC C
│
Hub
PC A가 PC B에게 Ethernet Frame을 전송한다.
Hub는 PC B의 MAC Address를 알지 못한다.
이때 Hub는 Frame을 어떻게 처리할까?
또한 Hub에 연결된 장치들이 하나의 Collision Domain을 공유하는 이유는 무엇일까?
drop한다?
collision Domain 충돌 도메인을 공유하는 이유라..
네트워크 혼잡 상황을 방지 하기 위해?
❌
Hub는 MAC Address를 이해하지 못한다.
따라서 특정 Destination MAC Address를 보고 원하는 Port로만 Frame을 보내는 기능이 없다.
Hub가 한 Port에서 신호를 받으면 다른 Port로 그대로 전달한다.
즉,
PC A
│
Hub
├── PC B
└── PC C
PC A가 PC B에게 Frame을 보내더라도 Hub는
PC B에게만 전달
하지 못하고 다른 Port에도 Frame을 전달한다.
이러한 동작을 Flooding이라고 볼 수 있다.
Hub는 또한 Half-Duplex 방식으로 동작하며 하나의 전송 매체를 여러 장치가 공유한다.
따라서 두 장치가 동시에 데이터를 보내면 충돌이 발생할 수 있다.
Hub
→ 하나의 Collision Domain
Hub
→ MAC Address 인식 X
→ 들어온 신호를 다른 Port로 전달
→ Half-Duplex
→ Collision 발생 가능
→ 하나의 Collision Domain
처음에는 Hub가 모르는 MAC Address의 Frame을 Drop한다고 생각했다.
하지만 Hub는 애초에 MAC Address를 기반으로 판단하지 못한다.
Switch는 MAC Address Table을 만들 때 다음 중 어떤 주소를 학습할까?
① Destination MAC Address
② Source MAC Address
③ Source IP Address
④ Destination IP Address
2
⭕ 정답
정답은
② Source MAC Address
이다.
Switch가 Frame을 수신하면
Source MAC Address
+
Frame이 들어온 Port
를 확인한다.
예를 들어
Source MAC : AA:AA:AA:AA:AA:AA
입력 Port : Port 1
이라면 Switch는 MAC Address Table에
AA:AA:AA:AA:AA:AA → Port 1
처럼 저장한다.
Switch
→ Source MAC Address를 보고 학습
다음과 같이 VLAN이 구성되어 있다.
PC A → VLAN 10
PC B → VLAN 10
PC C → VLAN 20
PC D → VLAN 20
PC A가 Broadcast Frame을 전송한다.
PC C와 PC D도 해당 Broadcast를 받을까?
다른 vlan이라서 frame이 전송 되지 않을 것같은데
⭕ 정답
VLAN은 하나의 물리적인 LAN을 논리적으로 나누는 기술이다.
VLAN 10
→ 하나의 Broadcast Domain
VLAN 20
→ 또 다른 Broadcast Domain
따라서 VLAN 10에서 발생한 Broadcast는 VLAN 20으로 전달되지 않는다.
PC A Broadcast
VLAN 10
→ PC B 수신
VLAN 20
→ PC C, PC D 수신 X
서로 다른 VLAN끼리 통신하려면 일반적으로 Layer 3 Routing이 필요하다.
VLAN
→ Broadcast Domain 분리
NIC의 역할은 무엇이며 NIC와 관련된 대표적인 주소는 무엇일까?
자산을 식별하는 장치?
mac 주소?
△
MAC Address는 맞았다.
하지만 NIC의 역할은 자산을 식별하는 것이 아니다.
NIC는
Network Interface Controller
의 약자이다.
컴퓨터와 Network 전송 매체를 연결해주는 장치이다.
쉽게 말하면
Computer
↕
NIC
↕
Network
구조라고 볼 수 있다.
Ethernet Adapter나 Wi-Fi Adapter 등이 NIC에 해당할 수 있다.
NIC에는 통신 과정에서 사용되는 MAC Address가 있다.
NIC
→ Host와 Network를 연결하는 Interface
대표 주소
→ MAC Address
NIC = 자산 식별 장치
라고 생각했지만,
정확히는
Host ↔ Network 연결 장치
이다.
다음 특징에 해당하는 Cable은 무엇일까?
구리선을 사용한다.
RJ-45 Connector를 많이 사용한다.
빛을 이용한다.
빠르고 장거리 전송에 유리하다.
A : UTP
B : Fiber Cable
⭕ 정답
A는 정확히는 Twisted Pair Cable이다.
대표적으로
UTP
STP
FTP
등이 있다.
일반적인 LAN 환경에서는 UTP Cable을 매우 많이 사용한다.
Twisted Pair
→ 구리선
→ RJ-45
B는 Fiber Optic Cable이다.
Fiber Optic Cable
→ 빛 사용
→ 빠른 전송
→ 장거리 통신에 유리
Switch의 MAC Address Table에 오래전에 학습했지만 더 이상 사용하지 않는 MAC Address가 있다.
Switch는 이 정보를 어떻게 처리할까?
사용안하는 MAC Address는 저장된지 오래된 mac 주소부터 삭제한다?
⭕ 정답
방향은 맞았다.
Switch는 일정 시간 동안 사용되지 않은 MAC Address Entry를 MAC Address Table에서 제거한다.
이를
Aging
이라고 한다.
단순히 무조건 가장 오래된 순서대로 하나씩 지우는 개념보다는
일정 시간 동안 갱신되지 않은 Entry
→ 만료
→ 삭제
라고 이해하는 것이 정확하다.
필요한 이유는 장치가 다른 Port로 이동했는데 기존 정보가 계속 남아 있으면 잘못된 Port 정보를 사용할 수 있기 때문이다.
Learning
→ MAC 학습
Forwarding / Filtering
→ Frame 전달 여부 판단
Aging
→ 오래 사용되지 않은 Entry 제거
Hub, Switch, Router는 각각 Collision Domain과 Broadcast Domain을 어떻게 나눌까?
1 : hub
2 : switch, router
△
두 Domain을 정확히 구분할 필요가 있다.
Hub에 연결된 모든 장치
→ 하나의 Collision Domain
Switch는 Port마다 Collision Domain을 분리한다.
Port 1 → Collision Domain
Port 2 → Collision Domain
Port 3 → Collision Domain
현대 Ethernet의 Full-Duplex 환경에서는 실제 충돌 자체는 사실상 발생하지 않는다.
Broadcast Domain을 분리하지 않는다.
기본적인 Switch도 Broadcast Domain을 분리하지 않는다.
Broadcast Frame은 같은 VLAN 내부의 Port로 전달된다.
VLAN 10 → Broadcast Domain 1
VLAN 20 → Broadcast Domain 2
Router는 Broadcast Domain을 분리한다.
Collision Domain
Hub
→ 하나를 공유
Switch
→ Port별 분리
Broadcast Domain
Hub
→ 분리 X
Switch
→ 기본적으로 분리 X
VLAN
→ VLAN별 분리
Router
→ 분리
다음 설명에 해당하는 전송 방식을 작성하시오.
모든 Host에게 데이터를 전송한다.
특정 Group에 속한 Host에게 데이터를 전송한다.
같은 Group에 속한 여러 Host 중 가장 가까운 Host에게 데이터를 전송한다.
1. Broadcast
2. Multicast
3. Anycast
⭕ 정답
Unicast
→ One-to-One
Broadcast
→ One-to-All
Multicast
→ One-to-Group
Anycast
→ Group 중 가장 가까운 Host
Browser가 이전에 받아둔 Resource를 가지고 있다.
Server에게 Resource 변경 여부를 확인했더니 다음 응답을 받았다.
304 Not Modified
Browser는 어떻게 동작할까?
브라우저는 이미 저장된 리소스를 재사용? 한다
304 Not Modified는 리소스가 수정된게 없다는 뜻
⭕ 정답
정확하다.
304 Not Modified
→ Resource가 변경되지 않음
따라서 Browser는 동일한 Resource를 다시 다운로드할 필요가 없다.
기존 Cache
→ 그대로 사용
Browser
→ Resource가 변경되었는지 확인
Server
→ 304 Not Modified
Browser
→ 기존 Cache 재사용
다음 HTTP Request를 보고 Start Line에 들어 있는 정보를 설명하시오.
GET /hello?q=world HTTP/1.1
GET 프로토콜
/? 경로
HTTP 버전
⭕ 정답
단,
GET = Protocol
부분만 수정이 필요했다.
HTTP Request Start Line은 다음과 같이 구성된다.
Method + Request Target + HTTP Version
예를 들어
GET /hello?q=world HTTP/1.1
은
GET
→ HTTP Method
/hello?q=world
→ Request Target
HTTP/1.1
→ HTTP Version
이다.
GET
→ Protocol X
→ HTTP Method O
다음 HTTP Header의 의미를 설명하시오.
Host: example.com
Content-Type: application/json
HOST = 요청할 도메인
Content-Type = 지원하는 형식
△
Host는 맞았다.
Host: example.com
→ 요청 대상 Host / Domain 정보
Content-Type은
지원하는 형식
보다는
Message Body에 들어있는 데이터의 형식
을 의미한다고 이해하는 것이 좋다.
Content-Type: application/json
→ Body가 JSON 형식
Host
→ 요청 대상 Host
Content-Type
→ 현재 Message Body의 데이터 형식
다음 Domain Name을 보자.
mail.google.com
Subdomain은 무엇일까?
그리고 왜 전체를 FQDN이라고 볼 수 있을까?
mail?
△
mail이라는 방향은 맞았다.
mail.google.com
에서
google.com
을 기준으로 보면
mail.google.com
은 Subdomain이다.
앞쪽의
mail
은 Subdomain을 구분하는 Label이다.
FQDN은
Fully-Qualified Domain Name
의 약자이다.
Domain 계층을 모두 표현하여 특정 Host를 식별할 수 있는 전체 Domain Name을 의미한다.
mail.google.com
→ 전체 Domain Name
→ FQDN
hosts 파일에는 어떤 정보가 저장될까?
DNS와 비교했을 때 어떤 역할이라고 볼 수 있을까?
도메인 정보?
△
단순히 Domain 정보만 저장하는 것이 아니라
Domain Name ↔ IP Address
대응 관계를 저장한다.
예를 들어
192.0.2.10 example.com
과 같은 형태이다.
쉽게 말하면 hosts 파일은 내 PC에 저장된
개인 전화번호부
와 비슷하다.
Domain Name
→ 사람 이름
IP Address
→ 전화번호
처럼 대응시켜 생각할 수 있다.
hosts
→ Domain Name과 IP Address의 대응 관계 저장
같은 Network에 있는 PC B의 IP Address는 알고 있지만 MAC Address를 모른다.
이때
ARP Request
ARP Reply
는 각각 Broadcast일까 Unicast일까?
Broadcast
Unicast?
⭕ 정답
ARP Request
→ Broadcast
ARP Reply
→ 일반적으로 Unicast
PC A가 PC B의 MAC Address를 모르면 같은 LAN에
이 IP 쓰는 장치 누구야?
MAC Address 알려줘!
라는 ARP Request를 Broadcast한다.
해당 IP를 사용하는 PC B가 자신의 MAC Address를 알려주는 ARP Reply를 PC A에게 보낸다.
ARP Request
→ Broadcast
ARP Reply
→ Unicast
PC A가 여러 Router를 거쳐 Server까지 Packet을 보낸다.
Router를 하나 지날 때마다 다음 중 어떤 값이 바뀔까?
1. Source IP
2. Destination IP
3. Source MAC
4. Destination MAC
1번?
각 라우터 마다 ip 가 다르고 목적지 ip는 정해져있으니까?
❌
일반적인 Routing 환경에서는
3. Source MAC
4. Destination MAC
이 바뀐다.
Router는 Frame을 수신한 뒤 기존 Layer 2 Header를 제거한다.
그리고 다음 Network 구간으로 전송하기 위해 새로운 Ethernet Frame을 만든다.
따라서 각 Hop마다 MAC Address가 달라질 수 있다.
예를 들어
PC A
↓
Router A
↓
Router B
↓
Server
라고 하면
Source MAC
→ PC A MAC
Destination MAC
→ Router A MAC
Source MAC
→ Router A의 송신 Interface MAC
Destination MAC
→ Router B MAC
이처럼 MAC Address는 바뀐다.
하지만 일반적인 Routing 상황에서
Source IP
→ PC A
Destination IP
→ 최종 Server
는 계속 유지된다.
단 NAT가 적용된다면 IP Address도 변경될 수 있다.
IP Address
→ 일반적으로 End-to-End 유지
MAC Address
→ Hop마다 변경 가능
Router마다 IP Address가 다르기 때문에 Source IP도 바뀐다고 생각했다.
하지만 Router는 Packet의 최종 목적지를 변경하는 것이 아니라 다음 Hop으로 전달하는 역할을 한다.
다음 URL에 접속한다.
http://www.example.com/hello?q=world
HTTP Request가 다음과 같다면
GET ? HTTP/1.1
?에 들어갈 Request Target은 무엇일까?
/hello?q=world
⭕ 정답
정확하다.
URL
http://www.example.com/hello?q=world
에서 Request Target은
/hello?q=world
이다.
따라서 Start Line은
GET /hello?q=world HTTP/1.1
이 된다.
Ping에서 사용하는 ICMP Message의 Type 값은 무엇일까?
Echo Request
Echo Reply
각각 작성하시오.
?
❌
정답은
Echo Request
→ Type 8
→ Code 0
Echo Reply
→ Type 0
→ Code 0
이다.
Ping을 보내는 쪽에서
Echo Request
를 보내고,
상대 장치가 응답하면
Echo Reply
를 반환한다.
Ping
Request
→ Type 8
Reply
→ Type 0
DNS Resolver가 example.com의 IP Address를 이미 Cache에 가지고 있다.
Cache의 TTL도 아직 유효하다.
이 경우 다시
Root
→ TLD
→ Authoritative Name Server
순서로 조회할까?
해당 단계 건너뛰고 연결
⭕ 정답
맞다.
유효한 DNS Cache가 있다면 Resolver는 Cache에 저장된 IP Address를 사용한다.
따라서 다시
Root
↓
TLD
↓
Authoritative
과정을 수행할 필요가 없다.
DNS Cache 존재
+
TTL 유효
↓
Cache의 IP 사용
↓
해당 Server로 연결
DNS Cache를 사용하면 불필요한 Query를 줄일 수 있고 DNS 응답 속도도 빨라진다.
다음 두 HTTP Status Code의 차이는 무엇일까?
301 Moved Permanently
302 Found
음 모르겠네
302는 요청을 찾을수 없다인거같은데
❌
둘 다
3xx
→ Redirection
계열이다.
영구적 Redirect
자원이 새로운 위치로 완전히 이동한 경우이다.
기존 URL
→ 새로운 URL로 영구 이동
일시적 Redirect
자원의 위치가 임시로 변경된 경우에 사용한다.
302
→ Resource를 찾을 수 없음
이라고 생각했다.
하지만 Resource를 찾을 수 없는 것은
404 Not Found
이다.
301
→ Permanent Redirect
302
→ Temporary Redirect
404
→ Not Found
Hub 환경처럼 충돌이 발생할 수 있는 Ethernet 환경에서 사용하는 CSMA/CD란 무엇일까?
모르겠ㄲ다 ㅋㅋ
❌
CSMA/CD는
Carrier Sense Multiple Access with Collision Detection
의 약자이다.
하나씩 보면
Carrier Sense
→ 다른 장치가 통신 중인지 확인
Multiple Access
→ 여러 장치가 하나의 전송 매체를 공유
Collision Detection
→ 충돌이 발생했는지 감지
Hub 환경은 여러 장치가 하나의 Collision Domain을 공유하고 Half-Duplex 방식으로 통신하기 때문에 충돌이 발생할 수 있다.
따라서 CSMA/CD와 같은 방식이 사용된다.
추가로 일반적인 동작을 이해하면
전송 매체 확인
↓
비어 있으면 전송
↓
충돌 발생 여부 확인
↓
충돌 발생
↓
전송 중단
↓
일정 시간 대기
↓
다시 전송 시도
정도로 이해할 수 있다.
CSMA/CD
→ Collision이 발생할 수 있는 Ethernet 환경
→ 대표적으로 Hub 환경
총 문제
20문제
Q2
Q3
Q5
Q6
Q8
Q9
Q10
Q14
Q16
Q18
총 10문제
Q4
Q7
Q11
Q12
Q13
총 5문제
Q1
Q15
Q17
Q19
Q20
총 5문제
Hub
→ MAC Address 인식 X
→ Frame을 다른 Port로 전달
→ Half-Duplex
→ Collision 발생 가능
→ 하나의 Collision Domain
처음에는 Hub가 모르는 Destination MAC Address를 Drop한다고 생각했는데 잘못된 개념이었다.
NIC
→ Network Interface Controller
→ Host와 Network를 연결
→ MAC Address 사용
NIC를 자산 식별 장치로 생각하지 않도록 주의한다.
Hub
→ Collision Domain 공유
Switch
→ Port별 Collision Domain 분리
Switch
→ 기본적으로 Broadcast Domain 분리 X
VLAN
→ Broadcast Domain 분리
Router
→ Broadcast Domain 분리
Content-Type
→ 지원 가능한 형식 X
→ 현재 Message Body의 데이터 형식
예)
Content-Type: application/json
→ Body가 JSON
hosts
→ 단순 Domain 정보 X
Domain Name
↕
IP Address
대응 관계를 저장
오늘 가장 중요한 부분 중 하나이다.
IP
→ 일반적으로 End-to-End 유지
MAC
→ Hop마다 변경
예)
PC
→ Router 1
→ Router 2
→ Server
각 구간마다 Source / Destination MAC Address는 달라질 수 있다.
하지만 일반적인 Routing에서는 Source / Destination IP Address는 유지된다.
단 NAT가 존재하면 IP Address는 변경될 수 있다.
Echo Request
→ Type 8 / Code 0
Echo Reply
→ Type 0 / Code 0
암기할 것.
Request = 8
Reply = 0
301
→ Moved Permanently
→ 영구 Redirect
302
→ Found
→ 일시적 Redirect
404
→ Not Found
→ 요청한 Resource를 찾을 수 없음
오늘
302 = 찾을 수 없음
으로 잘못 기억하고 있었다.
CSMA/CD
→ Carrier Sense Multiple Access with Collision Detection
Hub와 같이 Collision이 발생할 수 있는 Ethernet 환경과 연결해서 기억한다.
Carrier Sense
→ 통신 중인지 확인
Multiple Access
→ 여러 장치가 공유
Collision Detection
→ 충돌 감지
Hub
→ MAC 모름
→ Collision Domain 하나
Switch
→ Source MAC 학습
→ Port별 Collision Domain
VLAN
→ Broadcast Domain 분리
NIC
→ Host와 Network 연결
304
→ Resource 변경 X
→ 기존 Cache 사용
HTTP Start Line
→ Method + Request Target + HTTP Version
Content-Type
→ Body의 데이터 형식
hosts
→ Domain Name ↔ IP Address
ARP Request
→ Broadcast
ARP Reply
→ Unicast
Routing
→ IP는 일반적으로 유지
→ MAC은 Hop마다 변경
ICMP Echo Request
→ Type 8
ICMP Echo Reply
→ Type 0
301
→ 영구 Redirect
302
→ 일시 Redirect
404
→ Not Found
CSMA/CD
→ Collision Detection
오늘은 Layer 2 영역인
Hub
Switch
VLAN
Collision Domain
Broadcast Domain
에서는 기본 개념은 어느 정도 잡혀 있었지만 세부 동작에서 헷갈리는 부분이 있었다.
특히
Hub가 Frame을 어떻게 처리하는지
Collision Domain과 Broadcast Domain의 차이
는 다시 확인할 필요가 있다.
또한 Routing 부분에서는
Router를 지나면 IP가 변경된다
고 생각했는데,
일반적인 Routing에서는
IP Address
→ 유지
MAC Address
→ Hop마다 변경
된다는 점을 다시 정리했다.
HTTP에서는
304
Request Target
Host
등은 잘 이해하고 있었지만
Content-Type
301 / 302
에서 일부 혼동이 있었다.
추가로
ICMP Type
CSMA/CD
는 기억이 거의 나지 않았기 때문에 다음 복습에서 다시 확인해야겠다.
다음 복습에서는 오늘 틀렸거나 애매했던 내용을 단순히 같은 문제로 반복하기보다는 다른 상황에 적용해보면서 다시 확인한다.
특히
Hub / Switch 실제 Frame 전달 과정
Collision Domain
vs
Broadcast Domain
Router 통과 시
IP / MAC 변화
ICMP Type
HTTP Redirect
CSMA/CD
를 다시 복습한다.