김찬진의 개발 블로그

네트워크를 수강하고 정리한 예상질문과 답변 본문

학교 공부/학교 공부

네트워크를 수강하고 정리한 예상질문과 답변

kim chan jin 2023. 3. 7. 10:46

▶ Peer-to-Peer(P2P) Architecture에 대해 서술

▷ 1. 중앙 서버를 거치지 않고 클라이언트 컴퓨터끼리 직접 통신하는 방식

▷ 2. Arbitrary end system(host, edge)이 직접적으로 소통함

▷ 3. Peers는 다른 peers로부터 서비스를 요청하고 그에 대한 보답으로 서비스를 제공

▷ 4. Peers의 유입은 새로운 서비스 능력을 향상시키고, 새로운 서비스가 요구됨

▷ 5. Peers는 간헐적으로 연결되고 IP주소를 바꾼다.

 

Client-Server의 File distribution time은 sequentially 한가

그렇다.

▷ 1개의 복사본을 보내는 데 걸리는 시간 = 파일의 크기 / 파일의 업로드 속도

▷ N개의 복사본을 보내는 데 걸리는 시간 = **N *** (파일의 크기 / 서버의 파일 업로드 속도)

 

churn란 무엇인가

▷ peer이 무리에 들어오거나 무리를 나가는 것을 의미함

 

torrent란 무엇인가

▷ 파일 chunk를 교환하는 peer 무리를 torrent라고 함

 

tracker란 무엇인가

▷ Torrent 내 어떤 peer에게 chunk가 있는지 추적하는 과정을 tracker라고 함

 

tracker의 장점에 대해 서술

▷ A파일이 5개의 chunk로 나뉘어져 있고 A가 그 중 2개의 chunk를 가지고 있는 상황을 가정할 때, A는 A는 A파일을 다운로드하기 위해 5개의 chunk를 모두 다운받을 필요 없고 A가 가지고 있지 않은 3개의 chunk만을 다운받으면 된다. 이 때 A는 자신과 가장 가까이에 있는 유저로부터 나머지 chunk를 다운받는다면 빠른 속도로 다운로드할 수 있다.

 

▶ P2P의 selfish peer를 방지하기 위한 방법에 대해 서술

▷ 일반적으로 유저들은 selfish하기 때문에 업로드보단 다운로드를 더 많이 할 것임. 따라서 업로드를 많이 할수록 P2P 다운로드 속도를 빠르게 해주는 메커니즘이 있음

 

▶ 특정 chunk를 가지고 있는 유저의 수가 적은 상황을 방지하기 위한 방법에 대해 서술

▷ 어떤 한 파일을 완전히 다운로드하기 위해선 그 파일을 구성하고 있는 모든 chunk를 다운로드 받아야 한다. 특정 chunk를 가지고 있는 소수의 유저가 나가버리면 파일을 온전히 다운로드 받지 못하는 문제가 생김. 따라서 소수의 chunk 먼저 다운로드 받는 방식으로 이러한 문제를 방지함

 

tit-for-tat이란?

▷ 좋은 partner peer를 남기고 selfish peer를 버리기 위한 전략

▷ 가장 많은 chunk를 제공하는 peer top4에게 chunk를 보내줌

▷ 10초마다 top를 재평가

▷ top4가 고정되는 것을 방지하기 위해 30초마다 랜덤으로 peer를 선택하고 chunk를 보냄

 

▶ CDN(Content Delivery Network)이란?

▷ 컨텐츠를 전세계적으로 분산된 서버에 저장해 클라이언트가 서버에 요청할 시 서버에서 직접 컨텐츠를 전달하는 것이 아니라 클라이언트에게 가장 가까운 CDN서버에서 컨텐츠를 전달할 수 있도록 하는 플랫폼

 

▶ 영상을 보낼 때 자원의 한계를 극복하기 위한 방법을 서술

▷ 픽셀의 차이만 보낸다

 

▶ 버퍼링이란?

▷ 버퍼에 컨텐츠를 담아두고 network delay 생길 때마다 미리 담아두었던 영상을 보여줌

 

▶ **DASH(Dynamic Adaptive Streaming over HTTP)**이란?

▷ 클라이언트의 단말기 쪽 네트워크 상황에 맞춰 적절한 비디오 화질을 선택하여 서비스를 받을 수 있는 기술

▷ DASH 서버에서 비디오 컨텐츠를 각기 다른 비트 rate를 갖는 여러 버전으로 인코딩한 다음, 인코딩된 비디오 데이터를 chunk단위로 분할함. 이 chunk들이 DASH 클라이언트의 요청에 따라 전달이 되는데, DASH 클라이언트에서는 자신의 상황에 따라서 비트 rate 적용 알고리즘을 수행하여 네트워크의 가용 대역폭을 계산하고 그 결과를 토대로 다음 비디오 chunk의 비트 rate를 결정함. 즉, DASH 클라이언트의 비디오 플레이어가 현재 단말 네트워크의 상태를 고려하여 적절한 비디오의 화질을 선택하여 서비스하도록 한다는 것.

 

socket이란?

▷ Application layer와 Transport layer 사이의 인터페이스

 

socket의 타입은 무엇이 있고 차이를 서술

UDP: unreliable datagram, out of order, no hand shaking, no connection,

TCP: reliable, byte-stream-oriented

 

▶ socket 프로그래밍에서 sendto, recvfrom, SOCK_DGRAM을 사용하는 소켓 타입은 무엇인가

▷ UDP

 

▶ socket 프로그래밍에서 send, recv, SOCK_STREAM을 사용하는 소켓 타입은 무엇인가

▷ TCP

 

▶ TCP, UDP에서 주고받는 메시지의 단위를 무엇이라 하는가

segment

 

multiplexing이란

▷ transport 계층**(4)에서 network 계층(3)**으로 내려갈 때 header를 붙여서(캡슐화) 보냄

 

demultiplexing이란

▷ network 계층**(3)에서 transport 계층(4)**으로 올라갈 때 header를 떼서 보냄

 

▶ TCP 4 tuple에 대해 서술

▷ source IP address, source Port number, destination IP address, destination Port number

 

▶ TCP data transfer의 방법에는 무엇이 있는지 서술

stop-and-wait

go-back-N(pipelined protocols)

selective repeat(pipelined protocols)

 

stop-and-wait에 대해 서술하고 단점을 서술

▷ sender가 packet 하나를 보내면 receiver는 ack 하나를 보내는 방식, 만약 sender가 보낸 packet이 중간에 소실된다면 receiver는 ack를 보내지 못하는데 sender가 ack를 일정 시간동안 받지 못한다면 timeout이 되어 sender가 다시 packet을 보내줄 때까지 기다린다

▷ packet을 하나 보내고 ack를 하나 보내는 방식이므로 시간이 소요됨

 

go-back-N에 대해 서술하고 단점을 서술

▷ sender가 receiver로부터 ack를 받지 못하더라도 sender가 일단 packet을 보내는 방식, 만약 packet을 받지 못했다면 그 다음 receiver가 packet을 받더라도 다 버리고(buffer에 저장X), 그에 따라 sender가 ack를 받더라도 다 무시한다(sender window 변화X). 일정 시간이 지난 이후 데이터의 손실 또는 duplicate가 발생했던 시점부터 packet(oldest)을 모두 보낸다.

▷ 만약 packet5,6,7,8,9를 보내는 상황에서 sender가 보낸 packet5 loss되었다면 receiver는packet6,7,8,9를 받더라도 다 버리고, 그에 따라 receiver가 ack6,7,8,9를 보내더라도 sender는 ack6,7,8,9를 무시한다. 이후 timeout이 되면 sender는 packet5만 보내도 되지만 packet5,6,7,8,9를 모두 보내야 한다.

 

selective repeat에 대해 서술

▷ sender가 receiver로부터 ack를 받지 못하더라도 sender가 일단 packet을 보내는 방식, 만약 packet을 받지 못했더라도 그 다음 receiver가 packet을 받으면 다 저장(buffer에 저장O)한다, 그에 따라 sender가 ack를 무시하지 않고 받는다(sender window 변화X). 일정 시간이 지난 이후 데이터의 손실 또는 duplicate가 발생했던 시점의 packet만 보낸다.(window의 첫번째)

 

▶ selective repeat의 딜레마를 서술

sender와 receiver는 서로의 상황을 알지 못한다. 만약 sender는 packet을 보냈고 receiver는 ack를 받지 못한 경우 sender window는 오른쪽으로 이동하지만 receiver window는 오른쪽으로 이동하지 못한다. 이러한 상황에서 만약 window의 크기가 seq의 크기의 절반을 초과한다면 서로 다른 요소를 바라볼 수 있다.

 

TCP의 특징을 서술

▷ point-to-point

▷ reliable, in-order byte

▷ pipelined

▷ full duplex data

▷ connection-oriented

▷ flow controlled

 

▶ TCP segment structure에서 sequence number 필드는 무엇을 의미하는가

전송되는 세그먼트의 가장 맨 앞의 숫자

 

▶ TCP segment structure에서 ACK number 필드는 무엇을 의미하는가

상대방으로부터 받아야 하는 다음 TCP 세그먼트 데이터 번호

 

▶ TCP segment structure에서 SYN 필드는 무엇을 의미하는가

연결 요청 플래그, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 초기에 시퀀스 번호를 보냄

 

▶ TCP segment structure에서 ACK 필드는 무엇을 의미하는가

상대방으로부터 패킷을 받았다는 걸 알려주는 필드, 보낸 사람의 시퀀스 번호에 데이터 크기를 더한 값을 ACK로 보냄

 

▶ TCP segment structure에서 RST 필드는 무엇을 의미하는가

재연결 종료, 비정상적인 세션 연결 끊기

 

▶ TCP segment structure에서 PSH 필드는 무엇을 의미하는가

받은 데이터를 즉시 목적지인 Application 계층으로 전송시키는 플래그

 

▶ TCP segment structure에서 URG 필드는 무엇을 의미하는가

다른 데이터에 비해 우선순위가 높다는 것을 표현할 때 사용

 

▶ TCP segment structure에서 FIN 필드는 무엇을 의미하는가

▷ 세션 연결을 종료시킬 때 사용, 더 이상 전송할 데이터가 없음을 나타냄

 

TCP reliable data transfer을 가능하게 하는 3가지 기술에 대해 서술

1. Pipelining of segments

2. Cumulative ACKs

3. Single retransmission timer

 

TCP timeout은 어떻게 설정해야 하는가?

RTT보다는 길어야 한다. 하지만 RTT는 다양하므로 너무 짧지도 너무 길지도 않게 설정해야 한다. Timeout이 너무 짧다면 불필요한 retransmission이 발생하고 timeout이 너무 길다면 segment loss에 늦게 반응한다.

 

SampleRTT란?

▷ ACK를 받기 전까지 segment transmission하는 데 걸린 시간

 

TCP Fast Retransmit에 대해 서술

▷ 동일한 데이터에 대해 sender가 3 ACK를 받는다면 timeout의 전조증상으로 인식하고 재전송

 

TCP Flow Control에 대해 서술

▷ 만약 receiver어플리케이션 계층의 소켓 버퍼로부터 데이터를 제거하는 속도보다 네트워크 계층의 데이터를 가져오는 속도가 더 빠를 때 receiver는 sender를 통제하여 너무 많이, 너무 빨리 데이터를 전송하여 발생한 오버플로우를 receiver의 버퍼에 일으키지 않도록 한다.

▷ TCP receiver-side buffer의 receive window 필드(rwnd, free buffer space)를 보고 rwnd가 작다고 판단하면 sender를 통제한다.

 

Congestion Control에 대해 서술

▷ 대형 네트워크를 통해 데이터가 전달되는데, 만약 한 라우터에 데이터가 몰릴 경우 자신에게 온 데이터를 모두 처리할 수 없게 된다. 이런 경우 호스트들은 재전송을 하게 되고 혼잡만 가중시켜 오버플로우나 데이터 loss만 발생시킨다. 이러한 네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터의 전송속도를 강제로 줄이는 것을 혼잡제어라고 한다.

 

Flow ControlCongestion Control차이에 대해 서술

Flow Control은 receiver와 sender 사이의 전송속도 차이를 다루는 반면, Congestion Control은 호스트와 라우터를 포함한 네트워크 관점에서의 전송속도 차이를 다룬다.

 

▶ TCP 3-way handshake에 대해 서술

▷ SYNbit, ACKbit 사용, 2 – 4 - 2

▷ 1. 클라이언트 연결 요청: SYNBit = 1, Seg = x

▷ 2. 서버 이해: SYNbit = 1, ACKbit = 1, ACKnum = x + 1, Seg = y

▷ 3. 서버 연결 완료: ACKbit = 1, ACKnum = y + 1

 

▶ Closing a TCP Connection에 대해 서술

▷ FINbit, ACKbit 사용, 2 – 2 – 2 – 2

▷ 1. 클라이언트 종료 요청: FINbit = 1, seq = x

▷ 2. 서버 이해: ACKbit = 1, ACKnum = x + 1

▷ 3. 서버 준비 완료: FINbit = 1, seq = y

▷ 4. 서버 종료 완료: ACKbit = 1, ACKnum = y + 1

 

AIMD(Additive Increase Multiplicative Decrease)에 대해 서술

▷ TCP congestion control의 방법으로 congestion avoidance로 알려져 있다.

▷ loss가 발생하기 전까지 매 RTT마다 cwnd를 segment size를 1만큼 증가시키고, loss가 발생하면 cwnd절반으로 줄인다.

 

TCP Slow Start에 대해 서술

▷ connection이 시작할 때 cwnd의 크기를 1부터(slow) 시작하고 이후부터 cwnd를 **2배(exponential)**로 늘려가는 방식

 

ssthresh은 무엇인지 서술

▷ 보낼 데이터 양의 제한선

 

TCP Tahoe은 무엇인지 서술

ssthresh 전까지는 exponential하게 증가시키다가 ssthresh 이후부터는 additive하게 증가시키고 loss가 발생하면 급격하게 cwnd를 감소시키는 방법,

AIMDSlow Start가 합쳐진 방법

 

exponential increase를 언제 linear하게 바꿔야 하는지 서술 (TCP Reno의 관점으로)

timeout이 발생하기 직전의 cwnd 값의 절반값에서 additive increase해야 한다.

 

Reno의 장점은 무엇인지 서술

▷ loss가 발생했을 때 cwnd를 급격히 감소시켰던 TCP AIMD와 달리 timeout이 발생하기 직전의 cwnd의 절반값으로

cwnd를 급격히 감소시켰기 때문에 fast recovery할 수 있다.

 

▶ 어떨 때 TCP Fairness이 달성되었다고 할 수 있는지 서술

▷ 만약 K개의 TCP sessionR이라는 대역폭의 병목 링크를 공유한다면, 각각의 TCP session들은 R/K의 대역폭을 가질 때 TCP Fairness라고 말할 수 있다.

 

▶ is TCP fair?

▷ AIMD, Slow Start, TCP Tahoe, TCP Reno와 같은 TCP 정책을 사용한다면 시간이 지남에 따라 TCP session들은 비슷한 광대역을 공유하게 되므로 공평하다고 볼 수 있다.

 

▶ UDP는 Fair할 필요가 있는가?

▷ multimedia apps는 속도가 중요할 뿐 송수신하는 데이터의 invalidity은 어느정도 용인하기 때문에congestion control에 의한 rate throttled가 필요 없다. 따라서 UDP는 Fair할 필요가 없다.

 

ECN(Explicit Congestion Notification)이란 무엇인가?

라우터에 congestion 상황이 발생했을 때 IP header의 2비트가 마크된다.(ECN=11). Congestion indication은 destination에 전달되고 destination에서는 ECE 비트를 set해서(ECE=1) 다시 sender에게 보냄으로써 네트워크 단에 congestion이 발생했음을 알린다. 그럼 네트워크 단에서도 Congestion Window를 제어하는 Scheme을 사용할 수 있다.

 

▶ frame, segment, packet, message application 각각은 어떤 계층에 논의되는가?

▷ frame 2계층(Link)

▷ segment 3계층(Network or Internet)?

▷ packet 2계층(Link), 3계층(Network or Internet), 4계층(Transport)

▷ message application

 

▶ 3계층(Network or Internet)에서 sender와 receiver가 하는 일은?

▷ sender는 segments를 datagrams로 캡슐화하여 2계층(Link)으로 보낸다

▷ receiver는 segment를 4계층(Transport)으로 deliver한다.

 

▶ network-layer(3계층)의 2가지 중요한 기능에 대해 서술

▷ 첫번째는 forwarding으로, packets을 라우터의 input에서 적절한 라우터의 output으로 이동시키는 기능이다. Forwarding은 1 hop의 거리를 이동하는 것을 의미한다. (Data plane)

▷ 두번째는 routing으로, packets을 보고 source에서부터 destination까지의 경로를 결정(최적화)하는 기능이다. Routing은 1 hop 보다 큰 거리를 이동하는 것을 의미한다. (Control plane)

 

▶ data plane이란?

▷ router input port에 도착한 datagram을 어떻게 router output port로 forward시킬지 결정하는 기능

▷ local, pre-router function

 

▶ control plane이란?

▷ source host에서 destination host까지(end-end path) 어떤 라우터를 만나게 할 것인가를 결정하는 기능(traditional routing algorithms & software defined networking(SDN))

network-wide logic

 

▶ traditional routing algorithm이란?

각 라우터마다 가지고 있는 라우팅 알고리즘이 control plane에서 상호작용하여 routing table을 각 라우터마다 만들어낸다. Datagram이 각 라우터에 올 때마다 라우터는 routing table을 활용해 경로를 결정

 

software defined networking(SDN)이란?

따로 만들어진 remote controller가 각 라우터에 있는 control agents(CA)를 제어. 각 라우터들은 서로 상호작용하지 않음**(중앙집중 방식, Logically centralized control plane)**

▶ 라우터의 주요 2가지 기능에 대해 서술

▷ control plane: 라우팅 알고리즘과 프로토콜(RIP, OSPF, BGP)을 작동시킴(SW)

▷ data plane: 들어오는 datagram을 나가는 링크로 forwarding시킴(HW)

 

▶ switching fabric이란?

packets을 input port에서 outport port로 전달해주는 과정. 각각의 input port와 output port에는 queue가 존재하여 먼저 도착한 packet이 아직 출력되지 못했다면 queue에서 대기하며 자신의 차례를 기다림. Queueing 하는 데 시간이 걸리므로 switching fabric을 어떻게 구성하는지가 관건

 

▶ queueing delay and loss는 왜 발생하는가?

▷ input buffer overflow 때문

 

▶ HOL(Head of the Line) blocking queue란?

▷ queue의 가장 맨 앞에 queue된 datagram이 다른 datagram이 forward하는 것을 막는 것

 

▶ Switching fabrics에는 어떤 종류가 있는가?

▷ memory, bus, crossbar

 

Switching via memory란?

▷ 가장 초기 형태의 라우터들이 사용한 방법

각 입력포트로 들어오는 모든 패킷들은 메모리로 복사되었다가 선택된 출력포트로 내보내짐. 따라서 모든 입력포트들은 하나의 메모리를 공유하게 됨. 패킷 하나 당 입력포트에서 메모리로, 메모리에서 출력포트로의 이동을 위해 메모리 버스에 2번의 접근이 필요하기 때문에 시간이 소요된다는 단점이 있음. 메모리의 대역폭(bandwidth)에 따라 속도가 좌우됨

 

Switching via bus란?

입력포트들과 출력포트들 사이에 하나의 공유 버스를 두고 이를 사용하는 방법. 공유 버스라는 하나의 통로를 통해 패킷이 이동하기 때문에 역시 대역폭에 따라 스위칭의 속도가 제한됨. 또한 하나의 버스만을 사용하기 때문에 충돌(Bus contention)을 피해가 위해 한 사이클 당 하나의 패킷만을 처리할 수 있다는 단점이 있음. 메모리의 대역폭(bandwidth)에 따라 속도가 좌우됨

 

Switching via interconnection network(Corssbar)란?

▷ n개의 입력포트와 n개의 출력포트가 연결된 2n개의 버스로 구성하여 switching via memory와 switching via bus를 활용한 방법보다 빠른 속도로 패킷을 전달하는 방법

비용이 많이 드는 단점이 있음

 

▶ banyan networks란?

Switching via interconnection 방법에서 입력포트를 n/2개로 줄인 방법

 

▶ scheduling이란?

▷ router에 queue된 datagram이 output port로 나가는 데 시간이 소요되므로, 최고의 성능을 내기 위해 내보낼 datagram의 우선순위를 조정하는 기능

 

▶ buffering이란?

▷ transmission rate보다 더 빠른 fabric(구조)로부터 datagram이 도착할 때 필요함

▷ arrival rate via switch가 output line speed를 초과할 때 버퍼링이 필요함

▷ output port buffer overflow 때문에 queueing delay and loss 발생

 

FIFO(First In First Out)

▷ queue에 도착한 순서대로 내보내는 것

▷ discard policy: tail drop(새로 들어오는 패킷 버리기), priority(우선순위 낮은 패킷 버리기), random(무작위 버리기)

 

priority scheduling

▷ 우선순위가 가장 높은 패킷부터 queue하고 내보냄

▷ 다른 우선순위를 의미하는 다수의 클래스

▷ 각 클래스는 마킹이나 헤더 정보에 의존함

 

RR(Round Robin) scheduling

▷ 우선순위를 높은 패킷과 낮은 패킷을 번갈아가며 queue하고 내보냄

▷ 다른 우선순위를 의미하는 다수의 클래스

 

WFQ(Weighted Fair Queuing)

▷ 패킷의 각 우선순위에 임의로 비중을 두어 queue하고 내보냄

 

▶ IPv4에서 fragmentation reassembly를 위해 필요한 헤더 정보를 서술

▷ 16-bit identifier, flags, fragment offset

 

▶ IPv4에서 source IP address와 destination IP address의 bit 크기를 서술

▷ 32 bit

 

▶ IPv4와 IPv6의 차이는?

header Length 삭제

▷ IPv4에서는 헤더의 크기가 최소 20바이트에서 최대 60바이트였음. 이처럼 IPv4 헤더의 크기는 가변적이기 때문에 IPv4 헤더의 크기를 의미하는 Header Length 필드가 꼭 필요했음. 하지만 IPv6 헤더의 크기는 320비트로 고정이기 때문에 더 이상 Length가 필요 없어짐

16-bit Identifier, flags, fragment offset 삭제

▷ 16-bit identifier, flags, fragment offset은 IPv4 패킷을 fragmentation(분할)할 때 사용되는 필드들임. 하지만 IPv6 네트워크에 들어서 라우터가 분할할 필요가 없어짐

checksum 삭제

▷ IPv4 네트워크의 link간 오류 정정을 라우터가 수행했음. Bit loss를 판단하기 위해 checksum이 필수였음. 하지만 전송기술이 급격하게 발전하면서 link간 패킷 전송이 에러 없이 전달하고 있기 때문에 checksum이 필요 없어짐

Flow Label(20bit) 생김

▷ Flow Label의 용도는 real-time traffic처럼 매우 중요도가 높은 traffic을 기타 다른 패킷들보다 더 빨리 처리하기 위해 만든 것.

Total Length -> Payload Length 변경

TTL -> hop limit 변경

▷ IPv6 packet이 라우터를 거칠 때마다 hop limit의 숫자가 1씩 감소함. 라우터는 자신이 수신한 패킷을 라우팅하기 전에 hop limit 값을 조사함. 만약 hop limit의 값이 1이라면 해당 packet을 전달하지 않고 버림

src addr, des addr: 32bits -> 128bits 변경

 

▶ IPv4와 IPv6 사이 변환

▷ 모든 라우터가 동시다발적으로 업그레이드될 수 없음 = no flag days

tunneling: IPv6에 payload를 주거나**(encapsule, 헤더 붙임)** IPv4에서 payload를 떼서**(decapsule, 헤더 뗌)** 서로 넘어갈 수 있도록 함

 

IP fragmentation이 왜 필요한가?

다른 link 타입이므로 다른 MTU를 가질 수밖에 없음. MTU를 맞추기 위해 IP fragmentation 필요함

하나의 datagram이 여러 개의 datagrams로 나뉠 수 있음

▷ 오직 final destination에 도착했을 때에만 reassembled 되어야 함

▷ 관련된 fragment들을 식별하고 나열하기 위해 IP header를 사용

 

▶ 4000 바이트의 datagram을 1500 바이트의 MTU로 전달하려고 할 때 어떻게 fragmentation해야 하는지 서술 (이 때, header는 20바이트라 가정)

▷ 4000(20+3980) = 1500(=20+1480) + 1500(=20+1480) + 1040(20+1020)

 

▶ frament의 ID를 보고 무엇을 알 수 있는가?

▷ 서로 연관된 fragment임을 알 수 있음

 

▶ frament의 fragflag를 보고 무엇을 알 수 있는가?

▷ fragflag=1 이라면 fragmentation 되었음을, fragflag=0 이라면 fragmentation 되지 않았음을 의미함

 

▶ frament의 offset을 보고 무엇을 알 수 있는가?

▷ ID를 보고 서로 연관된 fragment임을 알 수 있고, 이 fragment들을 순서에 맞춰 나열할 때 offset가 필요하다.

 

fragflag=1, offset 0 은 무엇을 의미하는가?

▷ fragment의 시작을 의미

 

fragflag=0, offset n 은 무엇을 의미하는가?

▷ fragment의 끝을 의미

 

IP address란?

호스트, 라우터 인터페이스를 식별하기 위해 부여된 위치 주소

 

interface란?

호스트, 라우터physical link 사이가 연결되는 지점

호스트는 보통 1개 또는 2개의 인터페이스를 가짐(wired Ethernet, wireless 802.11)

라우터는 보통 다수의 인터페이스를 가짐

 

▶ IP addressing의 network IDhost ID에 대해 서술

▷ network ID를 통해 라우터를 찾을 수 있고, host ID를 통해 호스트를 찾을 수 있다.

 

▶ 많은 호스트를 운용하는 데 효과적인 클래스는?

class A

 

▶ 많은 네트워크를 운용하는 데 효과적인 클래스는?

class C

 

▶ 클래스 단위로 IP address를 분류하는 방법의 한계는?

▷ 클래스 단위로 IP address를 분류하는 방법은 적절한 네트워크의 크기로 구분할 수 없음

 

▶ IP addressing의 한계 때문에 등장한 개념 2가지를 적고 각 개념에 대해 서술

▷ subnets과 supernet.

▷ subnet: 더 큰 class를 할당 받고 쪼개 쓰기, Class B의 network ID는 8bit인데

▷ supernet: 더 작은 class를 할당 받고 더해 쓰기

 

▶ longest prefix matching

▷ 주어진 destination address에 따라 forwarding table를 볼 때, destination address와 매칭되는 longest address prefix를 사용하는 방법

 

▶ CIDR(Classless InterDomain Routing)란?

 

▶ DHCP(Dynamic Host Configuration Protocol)이란?

▷ 새로운 호스트가 네트워크에 접속할 때 네트워크 서버로부터 IP address를 동적으로 얻도록 해줌

 

▶ DHCP의 시나리오를 설명

▷ 1. DHCP discover: 새로운 호스트(클라이언트)가 네트워크에 도착하면 호스트는 DHCP 서버가 있는지 찾는다

▷ 2. DHCP offer: DHCP 서버가 호스트에게 IP address를 제공한다

▷ 3. DHCP request: DHCP 서버가 호스트에게 동적으로 할당해준 IP address를 사용하겠다고 요청한다

▷ 4. DHCP ack: 호스트가 IP address를 사용함을 인정한다

 

DCP 서버가 DHCP ACK를 표준화할 때 어떤 정보를 포함하는가?

1. 호스트(클라이언트)의 IP address

2. first-hop 라우터의 IP address

3. DNS 서버의 이름과 IP address

 

▶ NAT이란?

▷ Network Address Translation

▷ private IP address는 인터넷에 나가지 못하는 non-routable address임. Private IP address를 routable한 public IP address로 convert해주는 것을 NAT라고 함.

 

▶ NAT가 필요한 이유?

IPv4의 주소부족으로 서브넷팅된 private IP는 public IP로 나가거나 반대로 들어올 수 없음. 이를 가능하게 하기 위해선 NAT을 통해 private IP를 public IP로 변환해주거나 public IP를 private IP로 변환해줘야 함

 

▶ public IP, private IP에 대해 설명

public IP는 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP가 제공하는 IP 주소. 외부에 공개되어 있는 IP

private IP는 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소. IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크 상의 PC나 장치에 할당됨.

 

▶ private IP만으로 인터넷에 직접 연결할 수 있는가?

▷ 불가능. Private network에서 public network으로 데이터를 보내든, public network에서 private network으로 데이터를 보내든 NAT가 필수임

 

▶ NAT의 장점?

▷ 1. 주소가 노출되지 않아 security 보장, 공격을 받지 않을 수 있음

▷ 2. 내 local network 안에서 device의 주소를 마음껏 바꿀 수 있고, 상위 ISP에게 알려줄 필요도 없음

 

▶ NAT의 과정을 설명. Private network에 존재하는 client가 public network에 존재하는 server에게 initiate하는 경우

▷ 1. Private network에 존재하는 client가 public network에 존재하는 server에게 initiate

▷ 2. 라우터에 NAT가 달려있어 client의 IP가 public network로 나갈 수 없음을 인지

▷ 3. 라우터가 Client의 IP address와 port번호를 NAT에 기록하고 public IP, port로 변환

▷ 4. 서버가 요청을 받고 응답할 때에도 라우터가 변환해줬던 public IP, port로 응답함

▷ 5. 라우터에 응답이 들어오면 private IP, port에서 public IP, port로 변환하여 적었던 NAT table을 보고 public IP, port에서 private IP, port으로 변환

 

▶ NAT가 논란의 여지가 있는 이유?

▷ 라우터의 NAT가 public IP, port와 private IP, port 사이를 변환함. 라우터는 네트워크 계층(layer3)인데 port는 4계층(link)임. Layering을 망침

 

▶ IPv4와 IPv6의 차이는?

header Length 삭제

▷ IPv4에서는 헤더의 크기가 최소 20바이트에서 최대 60바이트였음. 이처럼 IPv4 헤더의 크기는 가변적이기 때문에 IPv4 헤더의 크기를 의미하는 Header Length 필드가 꼭 필요했음. 하지만 IPv6 헤더의 크기는 320비트로 고정이기 때문에 더 이상 Length가 필요 없어짐

16-bit Identifier, flags, fragment offset 삭제

▷ 16-bit identifier, flags, fragment offset은 IPv4 패킷을 fragmentation(분할)할 때 사용되는 필드들임. 하지만 IPv6 네트워크에 들어서 라우터가 분할할 필요가 없어짐

checksum 삭제

▷ IPv4 네트워크의 link간 오류 정정을 라우터가 수행했음**. Bit loss를 판단하기 위해 checksum이 필수였음. 하지만 전송기술이 급격하게 발전하면서 link간 패킷 전송이 에러 없이 전달하고 있기 때문에 checksum이 필요 없어짐**

Flow Label(20bit) 생김

▷ Flow Label의 용도는 real-time traffic처럼 매우 중요도가 높은 traffic을 기타 다른 패킷들보다 더 빨리 처리하기 위해 만든 것.

Total Length -> Payload Length 변경

TTL -> hop limit 변경

▷ IPv6 packet이 라우터를 거칠 때마다 hop limit의 숫자가 1씩 감소함. 라우터는 자신이 수신한 패킷을 라우팅하기 전에 hop limit 값을 조사함. 만약 hop limit의 값이 1이라면 해당 packet을 전달하지 않고 버림

src addr, des addr: 32bits -> 128bits 변경

▷ IPv4의 주소부족문제를 개선하기 위해 주소공간 확장

 

IPv4와 IPv6 사이 변환이 필요한 이유

▷ 현재 IPv4와 IPv6를 혼용하며 사용하고 있음. 모든 라우터가 동시다발적으로 업그레이드될 수 없음(no flag days)

▷ 따라서 tunneling이 필요함. tunneling이란 IPv6에 payload를 주거나**(encapsule, 헤더 붙임)** IPv4에서 payload를 떼서(decapsule, 헤더 뗌) 서로 넘어갈 수 있도록 함

 

Destination-based Forwarding이란?

▷ link layer의 header는 무시하고 destination IP주소만을 가지고 포워딩하는 방식. Control plane에 의해 생성된 forwarding table을 참고하여 패킷을 전달한다.

 

Generalized Forwarding이란?

▷ SDN서버(remote controller)가 CA로부터 받은 forwarding table을 보고 routing algorithm을 돌린 후 어떻게 routing할지 결정하고 CA에게 어떻게 forwarding할지 알려주는 방법

 

OpenFlow data plane abstraction이란?

헤더 필드에 의해 정의되는 4가지 규칙을 적용하여 generalized forwarding을 해줌. 데이터를 간결하게 해주는 역할

pattern: 패킷 헤더 필드의 값들과 매칭해본다

actions: matched packet을 drop, forward, modify, send to controller

priority: 겹치는 패턴의 모호성을 없앰

counters: 어느 곳으로 보냈는지 count하여 네트워크의 traffic volume 파악

 

▶ Control plane의 2가지 형태는?

per-router control, 각각의 라우터마다 라우팅 알고리즘이 구현되어 있고 forwarding table을 유지하고 있어서 서로 메시지를 주고받아 routing하는 형태. 여기서 forwarding하는 부분은 data plane이고 routing하는 부분은 control plane

software defined networking(SDN), logically centralized control이 도입된 형태. remote하게 떨어져 있는 controller(SDN서버)가 각각의 **local control agent(CA)**와 interact한다. CA에서는 forwarding table을 계산한다. 라우터별로 CA가 있고 중앙 remote controller에서는 CA로부터 정보를 받아서 routing algorithm을 돌린다. CA와 remote controller는 서로 interact하면서 각각 라우터의 정보를 주고받는다.

 

OpenFlow란?

▷ SDN에서 control plane과 data plane이 서로 통신하는 데 필요한 표준 통신 규격. **Logically centralized routing controller(remote controller, SDN서버)**에서 control plane을 담당하고 라우터에서 forwarding을 담당하므로 이 둘을 연결시키는 openflow가 필요함. (per-router control plane처럼 라우터 내부에 control plane과 data plane 모두가 존재하지 않음)

 

SDN에서 왜 OpenFlow가 필요한가?

▷ **Logically centralized routing controller(remote controller, SDN서버)**에서 control plane을 담당하고 라우터에서 forwarding을 담당하므로 서로 다른 인터페이스를 사용함. 이 둘이 통신할 때마다 서로 다른 인터페이스들을 연결해주는 것이 바로 openflow임. (per-router control plane처럼 라우터 내부에 control plane과 data plane 모두가 존재하지 않음)

 

▶ Data plane과 Control plane의 차이점은?

Control plane은 네트워크 전체의 logic. Source host부터 destination host까지 datagram을 router를 통해 어떻게 router시킬지 결정하는 것. Traditional routing algorithmSDN(software-defined networking) 2개의 방식이 존재

Data plane은 router마다 local하게 존재하는 forwarding function. Router의 input port에 도착한 datagram를 router의 output port로 어떻게 forwarding할지 결정하는 것. Forwarding table을 갖는다.

 

Flow란? Flow Table이란?

Flow는 패킷을 처리해주는 규칙의 단위. 예를 들어 하나의 SDN Switch에서 MAC이 A인 패킷을 5번 포트로 보내고 싶다면 하나의 Flow가 생성되고 스위치의 Flow Table에 저장됨

 

logically centralized routing controller란?

▷ remote하게 떨어져 있는 controller(SDN서버)가 각각의 local control agent(CA)와 interact한다. CA에서는 forwarding table을 계산한다. 라우터별로 CA가 있고 중앙 remote controller에서는 CA로부터 정보를 받아서 routing algorithm을 돌린다. CA와 remote controller는 서로 interact하면서 각각 라우터의 정보를 주고받는다.

 

SDN을 써야 하는 이유는?

네트워크 관리가 쉬워짐. 라우터 설정오류를 회피할 수 잇고 트래픽 flow의 유연성을 증가시킴

table-based forwarding이 라우터를 프로그래밍하는 것을 가능하게 해줌. Remote controller(SDN서버)에서 라우팅 알고리즘을 바꾸면 라우터에게도 적용시킬 수 있다. (per-router 에서는 라우터 일일이 implementation해야 했음)

▷ per-router일 때 각각의 라우터에서 control plane에서 routing을, data plane에서 forwarding을 담당했었음. 하지만 SDN일 때에는 remote controller(SDN)이 CA로부터 받은 forwarding table을 보고 routing algorithm을 돌린 후 어떻게 forwarding할지 CA에게 알려준다. 즉, SDN은 각각의 라우터에서 control plane의 구현이 필요없다는 것이다.

 

link state algorithm에는 global routing algorithm 또는 Dijkstra algorithm이 속한다. 참? 거짓?

▷ 참

c(x,y) : x에서 y로 갈 때 cost, 없으면 무한대

D(v) : source에서 destination 까지 현재 cost value

p(v) : 이전 node 가 뭔지

N’ : 가장 최소 cost 로 갈 때 사용한 node

 

distant vector algorithmdecentralized information을 다루고 bellman-ford equation이 이에 속한다. 참? 거짓?

▷ 참

 

DV algorithm의 3가지 특성에 대해 서술

iterative, 이웃 노드끼리 더 이상 정보를 교환하지 않을 때까지 프로세스가 반복된다는 점

asynchronous, 모든 노드가 서로 정확히 맞물려 동작할 필요없다는 점

distributed, 각 라우터는 직접 연결된 이웃노드로부터 정보를 받고 계산을 수행하며 계산된 결과를 다시 이웃에 배포한다는 점

 

Dijkstra algorithmbellman-ford algorithm을 비교하라

Dijkstra algorithm은 네트워크 전체에 대한 완벽한 정보가 필요함. Link state algorithm이라 불림.

bellman-ford algorithm은 이웃 노드와 정보를 교환하여 반복적이고 분산된 방식으로 수행. Distant vector algorithm이라 불림

 

link state algorithmdistant vector algorithm을 비교하라

link state algorithm에서는 한 라우터가 목적지까지의 모든 경로를 자신의 라우팅 테이블에 저장한다.

라우터가 모든 경로를 알고 있기 때문에 Convergence Time이 짧다장점과 교환이 일어나는 경우에도 테이블에 변화가 있는 라우터만을 교환하기 때문에 트래픽을 절약할 수 있다는 장점이 있다.

라우터가 모든 라우팅 정보를 관리해야 하기 때문에 메모리 소모가 크다는 단점과 라우터가 SPF 계산 등 여러가지 계산을 해야 하기 때문에 라우터 CPU의 부담이 크다단점이 있다.

종류에는 OSPF(Open Shortest Path First), IS-IS, Dijkstra algorithm가 있다.

distant vector algorithm은 거리와 방향만을 위주로 만들어진 라우팅 알고리즘. 라우터는 목적지까지의 모든 경로를 자신의 라우팅 테이블 안에 저장하는 것이 아니라 목적지까지의 거리와 그 목적지까지 가려면 어떤 인접 라우터를 거쳐서 가야하는 방향만을 저장함.

라우팅의 구성 자체가 간단하다는 장점과 한 라우터가 모든 라우팅 정보를 가지고 있지 않아서 메모리를 절약한다는 장점이 있다.

라우팅 테이블에 아무런 변화가 없더라도 정해진 시간마다 한 번씩 라우팅 테이블의 업데이트가 일어나기 때문에 트래픽이 낭비된다는 단점Convergence Time이 느리다단점이 있다.

종류에는 RIP(Routing Information Protocol), IGRP(Interior Gateway Routing Protocol), BGP(Border Gateway Protocol), Bellman-Ford algorithm이 있다.

* Convergence Time: 라우팅 테이블에 생겨난 변화를 모든 라우터가 알 때까지 걸리는 시간

 

link state algorithmdistant vector algorithm을 비교하라

LS와 DV 알고리즘은 경로를 계산할 때 서로 대비되는 방법을 취한다.

LS 알고리즘은 전체 정보를 필요로 한다. 각 노드는 모든 노드와 broadcast를 통해 통신하지만, 오직 자신에 직접 연결된 링크의 비용만 알린다. 즉, 모든 link의 정보를 다 알고 router가 계산을 시작한다. (정확한 정보를 모두에게)

DV 알고리즘에서 각 라우터는 오직 직접 연결된 이웃과만 메시지를 교환하지만, 자신으로부터 네트워크 내 (자신이 알고 있는) 모든 라우터들로의 최소 비용 추정값을 이웃들에게 제공한다.

 

▶ global informationdecentralized information을 비교하라

global information모든 라우터가 완벽한 topology와 link cost 정보를 가진다. Link state algorithm이 이에 속한다.

decentralized information라우터가 물리적으로 연결된 이웃과 그 이웃까지의 link cost를 안다. 이웃과 정보를 교환하며 반복계산과정을 거친다. Distant-vector algorithm이 이에 속한다.

 

▶ Distant Vector algorithm의 단점은 무엇인가? 해결책 2가지는 무엇인가?

count to infinity 현상이 일어날 수 있다. local한 link의 cost가 안 좋아졌을 때, 나머지 모든 router들이 자신의 distance vector를 계산하는데 적용되는 시간이 굉장히 오래 걸려서 중간에 destination으로 가는 pkt들이 loop를 돌 수 있다.

Sol1. Split horizon, A — B — C 일 때, Da(c)=C(A, B) + Db(C), A에서 B로 가는 cost, B가 알려준 B에서 C로 가는 cost. 이 B가 알려준 정보를 A가 B에게 다시 알려주는 짓은 하지 말자!

Sol2. Split horizon with poison reverse, 알려주되 너한테 얻은 정보라는 것 까지도 알려주자!

만약 z가 y를 통해 목적지 x로 가는 경로 설정을 했다면, z는 y에게 x까지의 거리가 ∞라고 알린다.

즉, z는 y에게 Dz(x) = ∞ 라고 알림으로써 y는 z에게 x로 가는 경로가 없다고 믿으므로, y는 z를 통해 x로 가는 경로를 시도하지 않을 것이다.

이 방법이 모든 블랙홀을 막아주진 않음.

https://hororolol.tistory.com/309

 

▶ Intra AS Routing이란?

▷ 동일한 관리 제어하에 있는 라우터의 그룹을 **AS(Autonomous Systems)**라고 하는데, AS 내부에서 동작하는 라우팅 알고리즘을 Intra AS Routing이라고 함. **IGP(Interior Gateway Protocol)**라고 부르기도 함

▷ 종류에는 **RIP(Routing Information Protocol(DV)), OSPF(Open Shortest Path First(LS)), IGRP(Interior Gateway Routing Protocol(DV))**이 있음

▷ focus on performance

 

▶ Inter AS Routing이란?

▷ 동일한 관리 제어 하에 있는 라우터의 그룹을 **AS(Autonomous Systems)**라고 하는데, AS와 AS 사이에서 동작하는 라우팅 알고리즘을 Inter AS Routing이라고 함.  **EGP(Exterial Gateway Protocol)**라고 부르기도 함.

▷ 종류에는 **BGP(Border Gateway Protocol(DV))**가 있음.

▷ focus on policy

 

OSPF란?

▷ Open Shortest Path First, link state를 area 내에서 flooding(broadcast)하고 dijkstra algorithm을 사용하는 link state algorithm, 라우터는 링크 상태가 변경될 때마다 링크 상태 정보를 broadcast. 변경되지 않았더라도 정기적인 broadcast.

LS

 

BGP란?

Border Gateway Protocol, AS의 경계에 있는 라우터(ASBR)에게 적용되는 프로토콜. 여러 AS를 통과하도록 라우팅하기 위해 필요한 프로토콜

DV

eBGP: AS 밖으로 정보를 내보내는 프로토콜

iBGP: AS 안으로 정보를 들여보내는 프로토콜

 

▶ OSPF의 계층이란?

▷ 라우터의 broadcast limit을 정하기 위해 AS를 두 area로 나눔, 하나는 backbone area 또 다른 하나는 (local) area

최상위 계층 AS boundary router(ASBR): 다른 AS와의 경계에 있는 라우터. **OSPF(LS)**와 BGP(DV) 동시에 수행

중간 계층 backbone router: Area Border Router들을 연결하기 위한 라우터. area간의 트래픽을 라우팅,

최하위 계층 Area Border Router(ABR): area 외부로 패킷을 라우팅하기 위한 라우터.

 

Hot potato routing이란?

▷ 목적지까지의 cost는 고려하지 않고 자신이 속한 AS를 최대한 빠르게 벗어나는(최소 비용으로) path를 선택하는 알고리즘

 

SDN에서 왜 OpenFlow가 필요한가?

▷ **Logically centralized routing controller(remote controller, SDN서버)**에서 control plane을 담당하고 라우터에서 forwarding을 담당하므로 서로 다른 인터페이스를 사용함. 이 둘이 통신할 때마다 서로 다른 인터페이스들을 연결해주는 것이 바로 openflow임. (per-router control plane처럼 라우터 내부에 control plane과 data plane 모두가 존재하지 않음)

 

SDNnetwork-control application, SDN controller, SDN-controlled switch 3가지 부분으로 나뉜다. 각각에 대해 서술

network-control application: 핵심적인 routing, load balance, access control과 같은 부분이 있다. 여기서 중요한 것은 unbundled이다. 밑에 있는 하드웨어와 독립되어 있다. routing vendor 또는 SDN controller와 분리시킬 수 있다. 이 부분만 다른 vendor를 통해 할 수 있다. 다만 API를 통해서만 하면 된다.

SDN controller: controller는 network OS로 생각하면 된다. Network에 대한 상태정보를 갖고 있다. 그래서 실제 application들과 SDN-controlled switches들의 중간역할을 하게 된다. 그래서 SDN controller는 각각 분산적으로 구현이 된다. performance, scalability, fault-tolerance 등을 해결하기 위한 역할을 한다.

SDN-controlled switch: data plane은 SDN control 되어있는 SDN-controlled switch들이다. 이것들은 스위치 기능을 해주는 하드웨어이다. 이 내부에는 flow table이 있어 table 기반의 switch control이다. software에 의해 control 되는 API가 존재하는데 이 API는 OpenFlow를 통해서 단일화되어 있는데, 어떤 것이 control 가능한지, 어떤 것이 안되는지 이런 것들이 정의되어 있다. 그리고 이 controller하고 communication해야 하므로 이에 대한 protocol이 있는데, 이 protocol은 OpenFlow에 의해서 정의가 되어있다.

 

OpenFlow Controller가 무엇인가?

SDN Controller(control plane)SDN-Controlled switch(data plane)는 서로 공통된 정보 OpenFlow message를 주고받는다. OpenFlow Controller는 OpenFlow message를 만들기 위해 3가지 클래스들을 만들어 놓았다.

controller-to-switch messages (Controller -> Switch, 위에서 아래로)

asynchronous (Switch -> Controller, 아래에서 위로)

symmetric

 

ICMP가 무엇인가? 왜 필요한가?

▷ Internet Control Message Protocol, 인터넷 프로토콜의 비신뢰적인 특성을 보완하기 위한 프로토콜로, 패킷 전송 중 에러발생 시 에러 발생원인을 알려주는 기능을 제공한다 그래서 host나 router에서 사용된다. 주로 error reporting에 많이 사용된다. ping을 사용하여 echo (한 번 보내면 다시 오는)를 잘 갖고 오는지 확인한다.

그래서 destination network가 unreachable하거나 destination host가 unreachable하다… 등등 이런 여러 에러 메시지들 또는 ping같은 것에 의해서 사용되는 것이 ICMP이다.

ICMP 자체는 네트워크 계층의 프로토콜인데, IP 위에 올라간다. ICMP message는 type, code를 정의해놓고 8byte 정도의 message로 IP datagram에 넣는다

 

SNMP가 무엇인가? 종류는 무엇이 있는가? 왜 사용하는가?

▷ router, switch, host 등의 **managed device(또는 agent)**들이 데이터를 전달하며 하나의 관리체계를 만든다. 그것을 **Management Information Base(MIB)**라고 부른다. agent들은 데이터를 가지고 있고 MIB 내에 모든 각각 agent들의 object들의 현재 상태들이 저장된다. 이 MIB를 운영하는 하나의 주체가 필요한데 이것을 managing entity라고 한다. Managing entity는 각 agent의 데이터를 주거나 받기 위해 프로토콜이 필요하다. 가장 대표적인 프로토콜이 **SNMP(Simple Network Management Protocol)**이다.

 

SNMP 프로토콜이 MIB정보를 managed device(또는 agent)들과 주고받기 위한 2가지 방법을 서술

request/response: request를 보내고 그에 대응한 response를 받는 방식임.

trap mode: managed device(또는 agent) 자신에게 변화가 생겼을 때 변화에 대한 것들을 managing entity 서버에 전달해준다. 특별하고 예외적인 상황을 보고해주는 방식임.

 

▶ link layer service의 특징 대해서 서술

framing, link access. Datagram을 frame단위로 encapsulate해서 headertrailer를 붙이고 frame으로 만들어준다. Local sourcelocal destination을 식별하기 위해 frame에는 MAC을 붙인다. Shared medium에서 충돌이 나지 않도록 channel access에 대해 정의한다.

reliable delivery between adjacent nodes. Network layer는 end-to-end인 반면, link layer은 이웃한 두 node간의 reliable한 전송이다. 특히 link가 어떤 특징을 가지고 있는지에 따라 전송방법을 달리 해야 한다. 가령 무선 link인 경우 error가 많이 발생하므로 error를 복구할 수 있는 전송방법을 사용해야 한다. Link layer에서 error를 해결하면 그 위 layer인 TCP에서 편해진다.

flow control. Transport layer에서도 그랬듯이 link layer에서도 보낼 수 있는 bandwidth가 정해져 있다. 그것을 초과하지 않도록 control해준다.

error detection. link에서 생기는 error를 detect해준다.

error correction. 정보를 더 많이 넣어서 보내준다면 적당한 수준의 error에 대해 detection 뿐만 아니라 correction도 가능하다.

half-duplex and full-duplex. Half-duplex는 두 노드 중 한쪽이 보내면 한쪽은 받아야 한다. 양쪽이 동시에 보낼 수 없다. Full-duplex는 양쪽이 동시에 보내도 서로 받을 수 있다. 당연히 full-duplex가 cost가 더 들어간다.

 

NIC가 무엇인가?

▷ link layer는 모든 host에 구현되어 있다. Link layer는 adaptor 또는 chip에 구현되어 있는데 adaptor는 **NIC(Network Interface Card)**라고 불린다. NIC는 CPU와 통신해서 data를 처리하는 것을 관리한다. NIC에는 controllerphysical이 있는데 이 부분이 link layer, physical layer로 되어있다. 이 위 계층들은 CPU를 통해서 처리된다.

 

▶ adaptor communicating에 대해 서술

Sending host의 NIC에서 datagram을 frame으로 encapsulate하고 error checking할 수 있는 bits, rdt, flow control 할 수 있는 기능들을 header나 trailer에 추가해서 receiving host의 NIC로 보낸다. Receiving host는 header나 trailer를 보고 error의 유무를 확인하고 신뢰성이 있는지, flow control에 대한 부분들을 확인한다. 문제가 없다면 datagram을 NIC의 밖으로 빼내어 위 계층으로 전달한다.

 

EDC가 무엇인지? 3가지 종류에 대해 서술

EDCframe의 정보가 유효한지 확인하기 위해 data에 추가적으로 붙이는 bits이다. EDC가 보내지는 과정에서 변형될 수 있기 때문에 100% reliable하진 않다.

1. Parity bit. 보통 7개의 bit 뒤에 하나의 parity bit를 추가하여 에러를 검출하는 방법. 하나의 비트만 바뀌어도 error를 detect할 수 있지만, 짝수 개의 오류는 detect할 수 없다는 한계가 있다. 이를 보완한 것이 two-dimensional bit parity이다. 이는 보내는 비트를 행렬로 표현하고 각각의 행과 열마다 parity를 체크한다. 만약 d행 j열이라면 d+j+1 parity bit를 EDC로써 붙인다. 이는 correction도 가능하게 해준다. 하지만 error가 두 개 이상일 때 동작되지 않는다는 한계가 있다.

▷ 2. Checksum. 비트들끼리 더하기. 초과비트 뒤로 보내서 더하기. 1의 보수 취하기. Checksum은 주로 network layer에서 사용한다.

▷ 3. CRC(Cyclic Redundancy Check). Sending host와 receiving host는 pattern G를 알고 있고Pattern G가 r+1 bits 라고 가정해보자. 보내려는 데이터를 D라고 했을 때 D에 0을 r개만큼 붙인다. 즉 D * 2^r를 해준다는 말이다. 이 과정을 거친 D를 G로 나눈다. 나눗셈을 진행할 때에는 뺄셈이 아닌 XOR연산으로 해야 한다. 나눗셈의 나머지를 R이라고 하고, sending host가 보내려는 데이터 D에 R을 붙여서 보낸다. 이 때의 R을 CRC bits라고 한다. 만약 이 과정까지 error가 없었다면 receiving host가 pattern G로 나눗셈을 했을 때 나머지 R이 0이 되어야 한다. Receiving host가 나눗셈을 했을 때 나머지가 0이 되면 error가 없다고 판단하고 나머지가 1이라면 error라고 판단한다.

 

CRC이 무엇인지?

▷ link layer에서 많이 쓰이는 error detection 중 한 방법. CRC는 다음과 같은 방법으로 이뤄진다.

▷ Sending host와 receiving host는 pattern G를 알고 있고Pattern G가 r+1 bits 라고 가정해보자. 보내려는 데이터를 D라고 했을 때 D에 0을 r개만큼 붙인다. 즉 D * 2^r를 해준다는 말이다. 이 과정을 거친 D를 G로 나눈다. 나눗셈을 진행할 때에는 뺄셈이 아닌 XOR연산으로 해야 한다. 나눗셈의 나머지를 R이라고 하고, sending host가 보내려는 데이터 D에 R을 붙여서 보낸다. 이 때의 R을 CRC bits라고 한다. 만약 이 과정까지 error가 없었다면 receiving host가 pattern G로 나눗셈을 했을 때 나머지 R이 0이 되어야 한다. Receiving host가 나눗셈을 했을 때 나머지가 0이 되면 error가 없다고 판단하고 나머지가 1이라면 error라고 판단한다.

 

multiple access links이 무엇인지?

▷ point-to-point는 직접적으로 데이터를 전송한다. 하지만 shared link에서 데이터 전달은 shared link로 데이터를 전송하고 데이터는 링크 전체를 돌게 된다. 그럼 다른 매체들도 수신할 수 있다. 수신 시 두 개 이상의 신호가 겹치면(충돌하면) 데이터 수신율이 떨어진다. 에러가 날 가능성이 높아진다는 것이다. 이를 multiple access links라고 한다. Shared link에서 어떻게 node가 channel을 공유할지 결정하는 distributed algorithm을 multiple access protocol이라 한다. 이 때 사용하는 것이 medium access control이라는 기술이다.

 

▶ 이상적인 multiple access protocol은 무엇인가?

▷ 1. Rate가 R bps인 broadcast 채널이 있고 하나의 node가 전송한다면 rate R로 전송하면 된다.

▷ 2. 만약 M개의 node가 전송한다면 평균적으로 R/M rate로 보내는 것이 이상적이다.

▷ 3. 중앙집중화가 되면 안되므로 transmission을 관리하는 노드가 있어서는 안된다.

▷ 4. 보내는 타이밍을 관리하는 clock이나 slot이 있으면 안된다.

 

channel partitioning에 대해 서술하고 종류에 대해 서술

TDMA(Time Division Multiple Access), channeltime 단위로 쪼개고 라운드로빈 방식으로 frame을 전달하는 방식이다. 채널을 쪼갤 때 노드의 수에 맞춰 고정적으로 자르기 때문에 간단하다는 장점이 있지만 IDLE한 환경의 네트워크에서는 효율이 좋지 않다는 단점이 있다.

IDLE한 환경의 네트워크에서는 효율이 좋지 않은 단점을 극복하는 방법 등장

 

taking turns에 대해 서술하고 종류에 대해 서술

polling, master 노드와 slave 노드가 존재한다. Master는 전송해도 되는 slave를 순서대로 지정한다. Slave는 지정받은 번호표에 맞춰 전송을 시작한다. 간단하고 충돌을 걱정하지 않아도 되고 채널을 낭비하지 않는다는 장점이 있지만 master가 slave의 전송 순서를 정하는 것에도 overhead가 발생할 수 있고 master가 다운되면 시스템 전체가 다운될 수 있다는 단점(single of failure)이 있다.

 

token passing, 하나의 네트워크에 참여한 모든 노드들은 token을 공유한다. 해당 token을 가진 노드만이 데이터를 전송할 수 있다. 자신의 전송이 끝나면 옆 노드에게 token을 전달하면서 순서대로 데이터를 전송한다. Token을 돌리는 데에 대한 오버헤드와 token 시스템이 죽으면 시스템 전체가 죽는 단점이 있다. 또한 token이 순서대로 돌고 있을 경우에 생기는 latency(지연)도 존재한다. 가령 A~Z 노드 순서대로 token을 전달하면서 frame을 전송할 수 있는데 A~Y는 전송할 데이터가 없고 Z 노드가 데이터를 전송해야 한다면 A~Y가 token을 모두 전달한 이후에야 frame 전송이 가능하다.

 

random access에 대해 서술하고 종류에 대해 서술, 스토리를 가지고 설명

sending host가 보낼 frame이 있다면 즉시 보내는 방법

충돌이 너무 많이 발생하고 조금만 frame이 겹치더라도 이전 전송과정을 모두 취소해야 하는 비효율성이 있다. Channel을 slot으로 나눔으로써 충돌을 줄이는 방법 등장

Channel을 sense 하고 idle하면 보내고 busy하면 보내지 않음으로써 충돌을 줄이는 방법 등장

전파지연 때문에 발생할 수 있는 충돌에 어떻게 대응할지

무선통신에서 송신signal과 수신signal의 차이를 정확히 측정하고 충돌여부를 검사하기 쉽지 않기 때문에 CSMA/CD 방법이 적합하지 않았음. 무선통신에 적합한 충돌 회피 방법이 등장

 

▶ CSMA/CD 알고리즘에 대해 서술

▷ 1. NIC가 datagram을 상위계층으로부터 받는다.

▷ 2. NIC가 channel이 idle한지 본다. idle한 것이 sense 됐으면 전송한다. 만약 busy하다면 idle해질 때까지 기다린다. idle이면 전송한다.

▷ 3. idle이여서 전송하였다.

▷ 4. 보냈는데 만약에 다른 detection이 됐다면 바로 취소(abortion)해야 한다. 취고하고 jam signal이라는 것을 보낸다.

▷ 5. 충돌이 났으니까 바로 이어서 보내면 또 충돌이 날 것이니 한 템포 쉬었다가 보낸다. 다음 보내는 것은 확률 p로 정하는데 어떤 확률로 보낼 것인지 정해주는 protocol이 있다. 바로 binary backoff 방식이다. 어떤 충돌이 났을 때 0에서 3까지의 숫자를 뽑는다. 뽑은 시간만큼을 기다렸다가 재전송한다. 만약 0을 뽑았으면 바로 전송하고 3을 뽑으면 3*512bit time 쉬는 것이다. 그런데 idle을 기다리는 얘들이 많을 수도 있다. 이러면 0에서 3까지 뽑으면 같은 숫자를 뽑아 다시 충돌날 확률이 높다. 그래서 다시 충돌이 나면 0에서 7까지 뽑는다. 그래도 또 충돌이 많이 난다면 다시 0에서 15까지 뽑는다. 성공할때까지 진행한다. 최대로 1023까지 늘어난다. 1023까지 해보고 계속 충돌이 난다면 취소한다. 이것은 충돌이 문제가 아니라 네트워크의 문제라고 보는 것이다.

 

Back off란 무엇인가?

▷ CSMA/CD의 경우 충돌이 발생했을 때 바로 재전송을 하면 충돌이 날 가능성이 높기 때문에 충돌이 나지 않을 확률(일정시간)을 계산하여 재전송한다. 이러한 재전송 방법을 backoff라고 한다.

▷ CSMA/CA의 경우 애초에 충돌을 회피하는 random access protocol이므로 ACK를 받게 되는데, 일정시간동안 ACK를 받지 못한다면 충돌이 발생했다고 판단한다. 그 때 backoff를 하게 된다.

▷ backoff는 다음과 같은 방식으로 이뤄진다. 어떤 충돌이 났을 때 0에서 3까지의 숫자를 뽑는다. 뽑은 시간만큼을 기다렸다가 재전송한다. 만약 0을 뽑았으면 바로 전송하고 3을 뽑으면 3*512bit time 쉬는 것이다. 그런데 idle을 기다리는 얘들이 많을 수도 있다. 이러면 0에서 3까지 뽑으면 같은 숫자를 뽑아 다시 충돌날 확률이 높다. 그래서 다시 충돌이 나면 0에서 7까지 뽑는다. 그래도 또 충돌이 많이 난다면 다시 0에서 15까지 뽑는다. 성공할때까지 진행한다. 최대로 1023까지 늘어난다. 1023까지 해보고 계속 충돌이 난다면 취소한다. 이것은 충돌이 문제가 아니라 네트워크의 문제라고 보는 것이다.

 

▶ channel partitioning MAC protocol, random access MAC protocol, taking turns MAC protocol 간의 차이점을 서술

channel partitioning MAC protocol. Channel을 frequency, time 등의 기준으로 공평하게 나눠서 사용하는 방법이다. 하지만 load가 낮은 상황에서는 효율성이 떨어진다. 가령 channel이 10개가 있고 사용자는 1명뿐인 상황에서 channel을 10개 쓰면 전송률이 높겠지만 channel을 1개만 쓰기 때문에 효율이 떨어진다.

random access MAC protocol. Low load에서는 효율적이다. Load가 적을 때 누군가가 random하게 접해서 쓰면 된다. 하지만 high load인 경우에 충돌이 발생해서 동작하기 어려워진다.

taking turns MAC protocol. 참여하고 있는 모든 node들이 항상 보낼 것이 있다는 전제가 있다. 따라서 보내지 않을 때 리소스는 그냥 날아가게 된다.

 

▶ MAC address과 IP address의 차이는 무엇?

IP address는 32 bit이고 network계층에서 관리한다. MAC address는 48 bit이고 link 계층에서 관리한다. MAC address는 LAN address, physical address 라고도 불린다. IP 주소는 논리적 주소이며 MAC 주소는 물리적 주소이다. IP주소는 집주소, MAC주소는 주민번호 같은 개념이다. 같은 IP주소라도 MAC주소가 다르면 구별할 수 있다. 그렇다고 MAC주소만 사용하면 되지 않을까 싶지만 그렇지 않다. 만약 MAC주소만 사용하게 된다면 라우팅 테이블에 너무 많은 정보가 기록되어 다운되고 말 것이다. IP주소와 MAC주소를 모두 사용하는 것이 효율적이다. 이 때 필요한 것이 ARP이다.

 

▶ MAC address(LAN address, physical address)의 특징에 대해 서술

▷ 제조사에서 network card를 만들고 고유한 MAC address를 부여한다.

▷ MAC address는 flat address라서 network ID, host ID를 구분하지 않는다.

▷ LAN card를 다른 컴퓨터에 옮길 수 있고 다른 local area로 갈 수 있다. IP address는 옮길 수 없다.

 

ARP가 무엇?

Address Resolution Protocol, 주소 결정 프로토콜, 네트워크 상에서 IP주소를 MAC주소로 대응시키기 위해 사용되는 프로토콜이다. 즉 ARP는 IP주소와 MAC주소를 일대일 매칭 시켜 LAN에서 목적지를 찾아갈 수 있도록 하는 프로토콜이다. IP주소와 MAC주소를 일대일로 대응하여 정리하는 테이블을 ARP Table이라고 한다.

 

ARP Table의 IPMAC의 매핑관계를 확인하는 것은?

▷ TTL, 20분마다 IP 주소와 MAC주소의 매핑이 유효한지 체크한다.

 

▶ ARP protocol의 2가지 유형에 대해 서술

A노드와 B노드가 같은 네트워크에 존재할 때, 같은 네트워크에 존재하는 두 노드가 통신할 때는 라우터를 거칠 필요가 없다. 해당 네트워크 안에서 B가 어디에 있는지만 찾으면 된다. 따라서 A는 'B를 찾고 있다' 라는 ARP 쿼리 패킷을 브로드 캐스트한다. 이때 해당 네트워크에 존재하는 모든 네트워크는 해당 ARP 쿼리를 받지만, 목적지를 확인한 후 '나는 B가 아닌데'라고 하며 해당 쿼리 패킷을 버린다. 그러나 B는 해당 쿼리를 확인한 후 '어? 나를 찾네?' 라는 것을 깨닫고 '내 MAC 주소는 이거야~' 라며 A에게 유니캐스트를 한다. A는 B에 해당하는 IP, MAC 주소를 자신의 ARP 테이블에 저장한다. 이후에 A가 B에게 메시지를 보낼 때는 더 이상 위의 과정 필요없이 바로 B의 MAC 주소를 적어넣으면 된다.

A노드와 B노드가 서로 다른 네트워크에 존재할 때, 이때는 라우터를 거쳐서 통신이 이루어져야 한다. A는 메시지에 B의 IP 주소를 넣을 수 있지만 MAC 주소는 모르기 때문에 넣을 수 없다. 이때 A는 MAC주소에 B가 아닌 B로 가는 길에 존재하는 라우터의 MAC주소를 적는다. 아래와 같다. A가 보내고자 하는 메시지의 목적지 MAC 주소는 B의 MAC 주소가 아니라 라우터 R의 MAC 주소인 것을 주목해서 보자. 라우터 R은 해당 메시지를 받으면 목적지 IP를 조사한 후에 해당 IP는 노드 B를 향한다는 것을 알아챈다. (이때 라우터 R은 B의 네트워크 영역와 연결된 라우터이기 때문에 B의 IP와 MAC 주소를 이미 알고 있다.) 따라서 R은, 패킷에 적혀있던 자신의 MAC 주소를 지운 후, B의 MAC 주소를 적어 넣는다. 여기서 끝나는 것이 아니라! MAC의 송신지(MAC src)를 A가 아닌 라우터 R로 바꾼다.

 

Multiple Access Control ProtocolMedia Access Control의 차이는 무엇?

▷ Multiple Access Control Protocol

▷ Media Access Control

 

이더넷이 무엇?

▷ 유선 LAN 기술. 간단하고 가격이 싸서 대세가 되었음. 하나의 chip에서 multiple speed가 가능함. Broadcom 회사가 이더넷을 만들었음. Speed가 10Mbps에서 10Gbps까지 올라감. local뿐만 아니라 backbone망에서도 사용됨

 

유선 이더넷 프레임은 어떻게 구성되어 있는지

preamble. 어떤 이더넷 상에서 데이터를 전송하는데 데이터의 시작부분을 detection하기위해**(sender와 receiver의 비트 동기화를 위해)** 사용. 10101010이 7번 반복되고 마지막 바이트로 10101011가 붙어서 모두 8바이트가 동기화를 위해 사용됨. 이러한 패턴 bit를 읽고 preamble이라고 판단되면 정보를 읽기 시작함.

dest address, MAC address. 데이터를 frame의 형태로 network layer protocol에게 전달한다

source address, MAC address. 데이터를 frame의 형태로 network layer protocol에게 전달한다

type, 상위 layer 프로토콜이 무엇인지 명시함 (대게 IP이지만 다른 것도 가능)

data(payload),

CRC(Cyclic Redundancy Check), receiver에서 error check하고 error detected이면 frame drop

 

premble이 왜 필요한지

▷ 어떤 이더넷 상에서 데이터를 전송하는데 데이터의 시작부분을 detection하기위해 사용. 10101010이 7번 반복되고 마지막 바이트로 10101011가 붙어서 모두 8바이트가 동기화를 위해 사용됨. 이러한 패턴 bit를 읽고 preamble이라고 판단되면 정보를 읽기 시작함.

 

▶ 망 구성 방식에는 무엇이 있는지

bus, 90년대 쓰였던 방법. 여러 컴퓨터들이 하나의 bus 케이블에 연결되어 있음. Bus 케이블에 결함이 생기면 모든 host는 전송이 불가함.

star, 오늘날 쓰이는 방법, 중앙에 switch(layer 2)가 있음. Swtich가 MAC 주소를 보고 어디로 보낼지 보고 전송함. (라우터는 layer3임)각각의 host는 분리된 이더넷 프로토콜을 수행함. Bus 방식과 달리 케이블에 결함이 생기더라도 서로 붕괴하지 않음.

 

이더넷 스위치가 무엇인지?

Link layer의 device이다. host가 전송한 frame들을 store했다가 알맞은 host에게 forward한다. 라우터하고 비슷한데, 라우터는 network layer에서 작동하는 것이다. switch는 MAC 주소만 보고 어디로 갈지 forward 하는 것이다. Switch는 buffer를 갖고 있고 충돌하지 않고 보내면서 받는 full duplex 기능도 있다. 그래서 동시에 frame이 전달되더라도 충돌되지 않게 switch buffer에 넣었다가 전송한다. 보통 내부망 하나를 구성할 때는 router를 거쳐 밖으로 나가기 전에 이더넷 스위치로 구성이 된다.

들어오는 MAC address를 검사해서 selectively forward 한다. outgoing link 중에 하나 또는 그 이상으로 forwarding을 선택적으로 하는 것이다. 그리고 CSMA/CD를 통해 access한다.

host가 중간에 스위치가 있는지 알지 못하고 그냥 보낸다. 이더넷 스위치는 투명한 역할을 한다.

plug-and-play이다. 들어가면 self-learning도 한다. 스스로 학습해서 frame이 들어오면 어디로 갈지 스스로 정해서 돌아가게 된다. 별도로 네트워크 관리자가 작업해주지 않아도 된다.

 

plug and play가 무엇인지?

▷ 스위치의 개수가 많아지면 각 포트마다 연결되어 있는 컴퓨터들의 MAC주소를 저장하는 것은 어렵다. 일일이 관리자가 작업하는 것이 불가능하므로 스위치에 플러그만 꽂으면 switch가 알아서 frame이 들어오면 어디로 보낼지 정하면서 돌아가게 하는 것을 plug and play라고 한다.

 

self-learning이 무엇인지?

스위치는 어떤 interface를 통해서 어떤 host에게 도달할 수 있는지를 학습한다. Switch에 frame이 도착하면 frame을 보낸 sender의 위치를 학습하고 이를 switch table에 기록한다. 처음 기록할 때에는 공백이고 기록할 때 MAC address와 interface의 쌍으로 기록한다. (TTL도 갱신한다. 매핑이 변동될 수 있으므로) 이후 frame을 알맞은 host로 전송할 수 있게 된다.

 

이더넷 스위치가 frame destination을 모를 경우 어떻게 하는가?

만약 어떤 host가 이제 막 스위치와 연결되었다면 switch가 이 frame이 도착(또는 출발)되어야 할 MAC 주소를 모를 수 있다. 이럴 경우 switch는 모든 host에게 flooding(broadcast) 한다. 자신의 MAC 주소임을 판단한 host는 받아들이고 switch에게 응답한다. 자신의 MAC 주소임이 아니란 것을 판단한 host들은 switch의 요청을 버린다. Switch는 그 응답을 보고 switch table에 기록하고 전송한다.

 

스위치 테이블 왜 필요한지? 6개의 host가 1개의 switch에 물려있는 상황

plug and play, self-learning을 하기 위해서 switch table이 필요하다.

▷ 스위치의 개수가 많아지면 각 포트마다 연결되어 있는 컴퓨터들의 MAC주소를 저장하는 것은 어렵다. 일일이 관리자가 작업하는 것이 불가능하므로 스위치에 플러그만 꽂으면 switch가 알아서 frame이 들어오면 어디로 보낼지 정하면서 돌아가게 하는 것을 plug and play라고 한다.

어떤 interface를 통해서 어떤 host에게 도달할 수 있는지를 학습하는 것을 self-learning이라고 한다. Switch에 frame이 도착하면 frame을 보낸 sender의 위치를 학습하고 이를 switch table에 기록한다. 처음 기록할 때에는 공백이고 기록할 때 MAC address와 interface의 쌍으로 기록한다. (TTL도 갱신한다. 매핑이 변동될 수 있으므로) 이후 frame을 알맞은 host로 전송할 수 있게 된다.

 

스위치 테이블과 포워딩 테이블의 차이?

switch table, switch가 plug and play, self-learning, flooding을 하기 위해 필요한 table. MAC 주소만을 src address, dest address로 사용한다는 점이 forwarding table과의 차이점임. Switch는 MAC 주소를 학습하여 switch table에 기록하고 알맞은 MAC 주소로 frame을 전달함. 즉, switch table은 link layer 에서만 사용되는 개념

forwarding table, 전달받은 패킷을 어느 input port에서 output port로 보낼 것인가를 나타낸 표. 스위치와 라우터 모두 forwarding table을 관리함. 즉 link layer과 network layer 모두에서 사용되는 개념. 하지만 스위치는 flooding, MAC address learning 기술을 사용하면서 forwarding table을 학습하는 반면, 라우터는 라우팅 알고리즘, IP address를 사용하면서 forwarding table을 산출함

 

스위치와 라우터의 공통점과 차이점?

▷ 스위치와 라우터 모두 store-and-forward방식을 사용하고 forwarding table을 사용한다는 점이 공통점

스위치는 MAC 주소만을 사용하는 link layer(2) 디바이스, 라우터는 IP주소만을 사용하는 network layer(3) 디바이스이라는 점이 차이점이다. 또한 스위치는 flooding, MAC address learning 기술을 사용하면서 forwarding table을 학습하는 반면, 라우터는 라우팅 알고리즘, IP address를 사용하면서 forwarding table을 산출한다는 점이 차이점. 또한 내부망은 바깥 네트워크보다 작아서 flood 방식이 가능하지만 라우터는 규모가 커서 flood가 불가능하여 라우팅 알고리즘을 사용해야 한다는 점이 차이점

 

이더넷의 특징은?

unreliable, handshaking 하지 않음.

connectionless, ACK나 NAK를 보내지 않음. 이러한 것들은 다른 계층(TCP 등)에서 한다.

 

▶ 이더넷의 MAC 프로토콜은?

▷ unslotted CSMA/CD with binary backoff

 

이더넷 프로토콜은 어떻게 구성되어 있는가?

link, 공통의 MAC 프로토콜과 frame format

physical, 각기 다른 속도를 제공하는 physical layer media(copper, fiber)들이 존재.

 

▶ 실제 기관의 network는 어떻게 구성되어 있는가?

▷ 바깥으로 나갈 때는 라우터가 있고, 내부에는 이더넷 스위치들이 있다. 내부망에 web server와 mail server도 있을 수 있다. 내부망에서는 IP주소를 보지 않고 이더넷으로 학습한 MAC 주소로만 주고받을 수 있다

.

▶ 왜 라우터가 스위치 기능을 포함하는 것인지?

▷ 길이 길어지면 전송과정 중 loss가 발생 가능. 라우터에 스위치 기능이 있다면 라우터끼리 전달해서 목적지까지 전송할 수 있음.

 

VLAN이 왜 필요한지. VLAN 방식에는 어떤 것이 있는지

▷ Virtual Local Area Network. VLAN이란 물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술이다. 한 건물에 여러 기업이 상주하고 있을 때 각 기업간의 네트워크 망은 분리되어 보안이 유지되어야 한다. 이럴 때 VLAN을 이용하여 네트워크를 분리해야 한다.

port-based VLAN. Switch의 Port number로 VLAN을 구분해서 운영할 수 있다. 하나의 물리적 스위치가 다수의 가상 스위치로 작동한다. Traffic을 isolation할 수 있다. 그래서 membership을 dynamic하게 관리할 수 있다. VLAN 사이의 forwarding은 라우터를 통해서 가야한다. (MAC 주소 기반으로 VLAN을 정의할 수도 있다.)

 

AP, 기지국, BS에 대하여 서술

▷ AP(Access Point), 기지국(BS) 등. 이런 무선 송수신기 하나가 network infrastructure에 붙어있다. AP는 유선 네트워크와 연결되어서 그 지역의 유선 네트워크와 무선 네트워크 사이 패킷을 전달해주는 역할을 수행한다.

 

wireless hosts에 대하여 서술

▷ wireless hosts에는 laptop, smartphone 등이 있다

▷ laptop은 stationary

▷ smartphone은 mobile

▷ 무선이라고 해서 반드시 이동성을 의미하는 것은 아니다

 

wireless link에 대하여 서술

▷ 모바일과 기지국 간의 link를 말함.

▷ 전형적으로 mobile을 BS에 연결하기 위해 사용됨.

▷ Wireless link는 backbone link로서 사용되기도 함.

▷ 하나의 cell에 다수의 사용자가 동시에 접근한다면 multiple access protocol 사용

date rate가 가변적이다. 모바일이 처해있는 환경, 동시에 사용하는 접속자의 수에 따라 달라진다.

transmission distance(전송 최대거리)도 가변적이다. 기상환경, mobile와 BS간의 거리에 따라 달라진다.

 

infrastructure mode가 무엇?

▷ 기지국을 통해서 통신하는 mode(방식)을 말함

handoff 발생, 디바이스가 기지국을 바꿈. 2G 시절에 전화하면서 이동하면 끊기는 지점이 있었음. 네트워크(cell)이 바뀌는 영역이어서 그랬음. 지금 LTE나 5G에서는 handoff가 거의 없음

 

▶ ad hoc mode가 무엇?

▷ 기지국 없이 단말들이 스스로 네트워크를 구성하는 것이다. 스스로 망을 만들어서 통신하는 형태이다.

 

▶ 무선 인프라 4가지 종류(infrastructure, singlehop)

BS존재 single hop, host는 더 큰 인터넷과 연결시켜주는 BS와 연결한다 (WiFi, WiMAX, cellurlar)

BS존재 multiple hops, host는 더 큰 인터넷과 연결하기 위해 무선 노드들을 통해 의존해야 한다.

BS미존재 single hop, BS도 없고, 더 큰 인터넷에 대한 연결도 없음 (Bluetooth, ad hoc nets)

BS미존재 multiple hops, BS도 없고, 더 큰 인터넷에 대한 연결도 없음, 다른 무선 노드에 연결하기 위해 의존해야 함

 

wireless link의 특성은?

▷ 물질을 통해 전달될수록 신호세기가 감소. 그렇다고 신호세기를 마냥 강하게만 할 수는 없음. 비용을 고려해야 하기 때문임. 신호와 노이즈의 비율 즉, SNR(Signal to Noise Ratio)을 적절히 설정하는 것이 좋음. SNR 높아질수록 BER(Bit Error Rate) 낮아지고 SNR 낮아질수록 BER 높아짐

▷ 많은 source로부터 간섭이 있음. Signal attenuation(신호 상쇄), A와 B가 통신하고, B와 C가 통신하고 있는데 A와 C 사이에 장애물이 있어서 A에서 C로 신호를 보내도 신호가 상쇄된다. 이러한 문제를 Signal attenuation

Hidden Terminal Problem. A와 B가 통신하고, B와 C가 통신하고 있는데 A와 C 사이에 장애물이 있어서 A와 C는 통신을 못하고 있어서 서로를 인지하지 못하고 있다. 그래서 B와 C가 통신하고 있는 줄 모르고 A는 B에게 데이터를 보낸다. B는 A와 C 사이에서 충돌이 난 것이다. 이러한 문제를 Hidden Terminal Problem이라고 한다. 이러한 문제를 해결하기 위해 CSMA/CA 가 나왔다.

▷ path가 다양함.

 

CDMA란 무엇인가?

▷ 네트워크 내에 존재하는 호스트들이 공유 매체를 통해 통신할 때, 여러 송신자에 의해서 전송되는 신호가 수신측에서 간섭되지 않게 해주는 프로토콜이 필요하다. 유선통신의 경우 channel partitioning, random access, taking turns 등의 방법이 있었다. 무선통신의 경우 송신signal과 수신signal의 차이를 정확히 측정하고 충돌여부를 검사하기 쉽지 않기 때문에 CSMA/CD 대신 CSMA/CA를 사용했음. 이와 더불어 무선통신은 CDMA 방식을 사용함. Code Division Multiple Access는 각 사용자들에게 할당된 코드(chipping sequence)를 데이터에 곱하여 신호를 인코딩하고, 인코딩한 값에 코드를 곱하고 코드의 펄스 개수로 나누어 디코딩하는 방식임. CDMA방식을 통해 다수의 사용자가 공존할 수 있고 최소한의 간섭으로 전송할 수 있도록 해준다.

 

chipping code이 무엇인지?

▷ sender가 보내려는 2진 데이터 신호를 2진 코드 chip code와 곱하여(변조하여) 사용주파수 전역으로 확산시켜 전송하게 해준다. 대역폭 이용효율은 떨어지지만 SNR을 향상시켜준다.

 

▶ 802.11 LAN architecture에 대해 서술

▷ 무선 host가 BS(Base Station)과 통신

▷ BS = AP(Access Point) = BSS(Basic Service Set) = cell 이 있음

▷ ad hoc mode version도 있음

 

indirect CoA, direct CoA 차이

▷ 노드가 home network에서 있을 때는 home network address(영구적인 주소)를 사용한다. 노드가 visited network로 이동하면 foreign agent가 home agent에게 접촉해서 이동 노드가 자신의 네트워크 영역 내에 있음을 알림. 결과적으로 foreign agent는 이동 노드의 존재를 알게 되고 home agent는 이동 노드의 위치 CoA를 foreign으로부터 받고 등록한다.

indirect routing 경우, 이동 노드와 통신하길 원하는 correspondent는 mobile의 home network address를 사용하여 패킷을 보낸다. 그럼 home agent는 패킷을 intercept하고 foreign agent에게 forward한다. Foreign agent는 packet을 받고 mobile에게 forward한다. Mobile이 correspondent에게 직접 응답한다.

만약 mobile이 또 다른 foreign network로 이동하면 home agent는 새로운 foreign agent를 등록하고 mobile의 CoA를 갱신한다. 이후 패킷의 전송과정은 위에서 서술했던 과정과 동일하다.

이동성과 visited network 변경이 투명하므로 지속적인 연결이 가능은 하지만 C와 mobile이 같은 network에 존재한다면 비효율적인 triangle routing 문제가 발생함

direct routing 경우, 세션 시작 시 단 한번만 correspondent가 home agent에게 CoA를 request하고 이동 노드의 foreign address를 receive한다. Correspondent는 CoA를 알아냈으므로 (wide area network를 거치지 않고) 직접 foreign agent에게 forward 한다. 이동 노드는 correspondent에게 직접 reply한다.

Triangle routing 문제를 해결하긴 했지만 이후 이동 노드가 또 다른 vistied network로 이동할 경우correspondent가 단 한 번만 CoA에 대하여 request하므로 이동 노드까지 forward할 수 없다는 문제와 CoA가 투명하게 공개되지 않는다는 문제가 있음.

Accommodating mobility with direct routing 경우, 첫 visited network의 foreign agent를 anchor foreign agent로 사용해서 가장 마지막 CoA를 등록한다. 그럼 이동 노드가 또 다른 visited network로 이동하더라도 anchor foreign agent가 새로운 foreign agent으로 forward시켜줄 수 있다.

 

anchor foreign agent 가 무엇인가?

▷ direct routing에서 Triangle routing 문제를 해결하긴 했지만 이후 이동 노드가 또 다른 vistied network로 이동할 경우 correspondent가 단 한 번만 CoA에 대하여 request하므로 이동 노드까지 forward할 수 없다는 문제가 있었다. 이러한 문제를 해결하기 위한 기술이 anchor foreign agent이다. 첫 visited network의 foreign agent를 anchor foreign agent로 사용해서 가장 마지막 CoA를 등록한다. 그럼 이동 노드가 또 다른 visited network로 이동하더라도 anchor foreign agent가 새로운 foreign agent으로 forward시켜줄 수 있다.

 

RTS, CTS 방식 설명

무선통신에서 송신signal과 수신signal의 차이를 정확히 측정하고 충돌여부를 검사하기 쉽지 않기 때문에 CSMA/CD 방법이 적합하지 않았음. 무선통신에 적합한 충돌 회피 방법이 등장

CSMA/CA, frame이 random access 하기 전에 sender가 channel을 reserve 하는 방법. AP가 A 또는 C로부터 frame을 받을 수 있다는 가정. 만약 A가 AP에게 frame을 보내고 싶다면 A는 AP에게 RTS를 보내고 AP는 RTS(Request To Send)를 받는다. RTS는 자신(A)이 AP에게 frame을 보내도 되는지 물어보는 의미이다. AP는 CTS(Clear To Send)를 A와 B 모두에게 보낸다. CTS는 자신(AP)이 A로부터 패킷을 받을 것이고 그에 대응한 ACK를 A에게 보낼 테니 그 시간(defer)동안 아무도 자신에게 패킷을 보내지 말라는 의미이다. 이후 AP는 A로부터 패킷을 받는다. A가 보낼 데이터가 더 이상 없다면 AP는 A로부터 패킷을 잘 받았다는 것을 알리기 위해 A와 B 모두에게 ACK를 보낸다. RTS와 CTS를 주고받음으로써 충돌을 회피해버렸다. 무선통신은 충돌이 발생할 일을 애초에 만들지 않는다는 것이 CSMA/CD와의 가장 큰 차이점이다.

 

▶ 왜 DIFS가 SIFS보다 길어야 하는지?

DIFS는 무선매체가 idle 상태임을 감지한 후에 다음 동작까지 기다려야 할 최소한의 시간이다. SIFS는 데이터를 받은 이후 ACK를 전송하기 전까지의 시간이다. 만약 A가 AP에게 frame을 전송하는 상황이라고 가정해보자. 만약 B가 SIFS보다 DIFS를 더 길게 설정한다면 B는 AP의 defer(AP의 CTS 전송부터 AP의 ACK 전송까지의 과정)가 끝났더라도 AP의 SIFS보다 B의 DIFS가 더 긴 시간이므로 B가 AP에게 패킷을 보내지 않게 되고 충돌을 회피할 수 있게 된다.

 

hidden terminal, signal 상쇄에 대하여 서술

Signal attenuation(신호 상쇄), A와 B가 통신하고, B와 C가 통신하고 있는데 A와 C 사이에 장애물이 있어서 A에서 C로 신호를 보내도 신호가 상쇄된다. 이러한 문제를 Signal attenuation이라고 함.

Hidden Terminal Problem. A와 B가 통신하고, B와 C가 통신하고 있는데 A와 C 사이에 장애물이 있어서 A와 C는 통신을 못하고 `있어서 A와 C는 서로를 인지하지 못하고 있다. 그래서 B와 C가 통신하고 있는 줄 모르고 A는 B에게 데이터를 보낸다. B는 A와 C 사이에서 충돌이 난 것이다. 이러한 문제를 Hidden Terminal Problem이라고 한다. 이러한 문제를 해결하기 위해 CSMA/CA가 나왔다.

 

▶passive scanning과 active scanning 차이점

passive scanning은 많은 AP들이 beacon frame을 host에게 보냄. Host는 listen하고 많은 AP 중 하나를 선택하여 연결한다.

active scanning은 host가 AP에게 자신이 들어왔다고 probe request를 broadcast한다. AP가 이에 반응하면 host는 가장 신호가 강한 AP랑 연결한다

 

▶ 802.11 frame에 대하여 설명

▷ Address1: 해당 frame을 받기 위한 무선 host 또는 AP의 MAC 주소

▷ Address2: 해당 frame을 전송하기 위한 무선 host 또는 AP의 MAC 주소

▷ Address3: AP에서 라우터 인터페이스로 전달하기 위한 라우터 인터페이스의 MAC 주소

▷ Address4: 오로지 ad hoc mode에서 사용되기 위한 MAC 주소

 

Rate adaptation이란?

▷ mobile이 이동하거나 SNR이 변동할 때 BS(Base Station) 또는 mobile은 transmission rate가 급격히 변동할 수 있다는 것

▷ transmission rate을 향상시키기 위해 신호세기를 증가시킬 수만은 없다. 즉 강한 modulation(변조)만이 좋은 것은 아니라는 것이다. 비용 문제 때문이다. Mobile이 BS로부터 멀어질수록 SNR이 감소하면 BER이 증가한다. Mobile이 BS와 가까워진다면

 

▶ cell과 MSC(Mobile Switching Center)의 차이?

cell = BS = AP(Access Point) = BSS(Basic Service Set, cell은 모바일 유저를 네트워크로 연결시켜준다. BS와 모바일 간의 physical layer와 link layer 프로토콜을 air-interface라고 한다.

MSC는 cell과 wired tel. net을 연결시켜준다. Call setup을 관리한다. Mobility를 다룬다.

 

▶ mobile-to-BS radio spectrum에는 두 기술을 혼용하여 사용한다.

▷ FDMA, 자원을 frequency 기준으로 분할하여 사용

▷ TDMA, 자원을 time 기준으로 분할하여 사용

▷ CDMA, 자원을 code 기준으로 분할하여 사용

 

2G, 3G, 4G 차이

▷ 2G, 2G voice network architecture에서는 기지국을 BTS라고 부른다. BTS들이 하나의 **BSC(Base Station Controller)**에 묶여있고, BSC가 **MSC(Mobile Switching Center)**에 묶인 형태이다.

▷ 3G, 3G voice and data network architecture에서는 2G와 비슷하게 BTS들이 radio network controller에 묶여있고, controller는 MSC에 묶여있다. 3G에서 추가된 것이 SGSN, GGSN인데 이는 데이터를 병렬적으로 처리해서 인터넷망과 연결하기 위함이다.

▷ 4G, 4G LTE가 되면서 전화망에 묶여있던 게 사라지고 사실상 인터넷망이 되었다. GW(GateWay) 라는 것이 BTS들에 연결되었다. S-GW, P-GW 종류가 있는데 여러가지 mobility를 컨트롤하기 위한 MME(Mobility Management Entity) 기능을 하는 서버가 들어간다. HSS는 모든 사용자의 DB를 관리한다.

 

hard handoff, soft handoff의 차이?

▷ hard handoff, 이전 기지국(old BSS)과의 연결을 끊고 새 기지국(new BSS)과 연결

▷ soft handoff, 이전 기지국(old BSS)과의 연결을 끊지 않고 새 기지국(new BSS)과 연결한 이후에 이전 기지국과의 연결을 끊음

 

▶ anchor MSC가 무엇?

▷ call하는 동안 handoff가 수 회 발생할 경우, direct routing에서 방문했던 가장 첫번째 MSC(Mobile Switching Center)를 anchor MSC라고 정의한다. Call은 anchor MSC를 통해 라우팅된 상태로 유지된다. mobile이 새로운 MSC로 이동하면 새로운 MSC가 MSC chain에 등록된다. 중간에 연결되었던 MSC들을 생략하는 minimization방법인 multi-MSC chain도 있음

 

▶ 보안의 3대요소는?

▷ 기밀성, 무결성, 가용성

 

▶ 방화벽 IDS

▷ 외부의 인터넷망으로부터 공격이 들어올 수 있기 때문에 방화벽을 세우고, 방화벽에 실제로 intrusion이 있는지 detection하는 system을 IDS라고 한다.

 

▶ WEP, Wired Equivalent Privacy

▷ 유선랜은 선만 연결하지 않으면 데이터를 확인할 수 없지만 무선은 통신매체가 전파이기 때문에보안장치를 만든다는 것이 쉽지 않다. WEP는 무선에서도 유선의 보안 서비스를 제공하자는 것이다.

 

▶ VPN이란?

▷ 가상 사설 네트워크는 IP주소를 마스킹하고 데이터를 암호화하여 수신 권한이 없는 사람이 읽을 수 없도록 한다.

 

▶ IPsec에 대해 설명하고 종류 서술

▷ network layer의 보안을 강화하기 위해 AH프로토콜, ESP프로토콜을 활용한다. AH는 인증, 무결성을 제공하지만 기밀성을 제공하진 않는다. ESP는 인증, 무결성, 기밀성을 모두 제공한다.

 

▶ SSL

▷ TCP는 보안 기능을 제공하지 않기 때문에 Application layer와 TCP layer 사이에 보안과 관련된 layer를 둔다. 이 때의 layer를 SSL(Secure Sockets Layer)이라 한다.

 

Secure e-mail 설명, 비대칭키 같이 사용

▷ Alice는 plain text를 대칭키로 암호화하고 그 대칭키 또한 Bob의 공개키 비대칭키로 암호화한다. 이후 Bob이 암호문을 전송받으면 비공개키 비대칭키로 복호화하여 대칭키를 얻어낸다. 그 대칭키로 복호화하여 plain text를 얻어낸다.

 

▶ hash쓰는 이유 초록

▷ 긴 문자열을 짧은 문자열로 줄여주므로 빠르게 암호화할 수 있기 때문이다.

 

RSA 비대칭 방식

비대칭키 공개키 암호화 방식이다. 큰 정수의 소인수분해가 어렵다는 점을 이용하여 암호화한다. 공개키로 암호화하고 비공개키로 복호화한 값과 비공개키로 암호화하고 공개키로 복호화한 값이 같다는 특징이 있다.

 

public key cryptography 의 특징 서술

▷ 1. Secrect key를 공유하지 않음

▷ 2. Public key는 sender, receiver 모두 알고 있음

▷ 3. Private key는 receiver만 알고 있음

 

DES AES

▷DES와 AES는 모두 대칭키 블록 암호화 방식이라는 것이 공통점이지만 DES는 64 bits 블록크기를 사용하며 AES는 128 bits 블록크기를 사용한다는 차이점이 있다. AES는 더 이상 안전하지 않은 DES를 대체하기 위해 등장한 암호 알고리즘이다.

 

대칭키 암호화 방식

▷ Alice가 암호화할 때 사용하는 key와 Bob이 복호화할 때 사용하는 key가 동일하다고 해서 대칭키라고 한다. 대칭키에서 핵심은 대칭키를 공유하는 과정에서 탈취되지 않도록 하는 것이다.

 

▶ RTP, Real Time Protocol

▷ 비디오, 오디오 같은 실시간 데이터를 전송하기 위한 프로토콜

 

▶ RTCP, Real Time Control Protocol

▷ RTP 데이터 전송 상태를 감시하고 제어하는 프로토콜

 

▶ VoIP, Voice-over-IP

▷ 3G에서 4G로 넘어오면서 전화망을 없애고 인터넷망으로 보이스를 포함한 데이터를 보내기 시작했다. VoIP는 IP 네트워크를 통해 보이스를 전달하는 기술을 의미한다.

'학교 공부 > 학교 공부' 카테고리의 다른 글

[23/09/07] 소프트웨어 디자인패턴 1주차  (0) 2023.09.07
Comments