CS Interview

네트워크 - CS 면접 총정리

게임이 더 좋아 2021. 11. 23. 23:42
반응형
728x170

 

업데이트 (22.06.01)


 

OSI

 

 

라우팅

더보기

Routing

 

경로 제어 프로토콜
IGP

EGP

BGP

 

 

 

네트워크 계층

더보기

패킷

 

Mac Address, IP address

 

Circuit Switching, Packet Switching

 

IPv4, IPv6

 

전송 계층

더보기

TCP, UDP

[컴퓨터(Computer Science)/네트워크, Network] - TCP vs UDP 비교

 

 

트래픽 제어

 

흐름 제어

Stop-and Wait

 

Sliding Window

 

 

혼잡 제어

 

 

 

기타

더보기

VPN

[컴퓨터(Computer Science)/네트워크, Network] - VPN, Virtual Private Network, 우회하는 원리

 

SSL

[컴퓨터(Computer Science)/네트워크, Network] - SSL, Secure Sockets Layer 란 무엇일까? (+HTTPS)

 

Cookie 와  Session

[컴퓨터(Computer Science)/네트워크, Network] - 쿠키, Cookie 와 세션, Session

 

DNS

[컴퓨터(Computer Science)/네트워크, Network] - Domain Name System, DNS란 무엇일까?

 

Ping, Tracert

[컴퓨터(Computer Science)/네트워크, Network] - 핑과 추적루트, PING and TRACERT(traceroute)

 

Client & Server

[컴퓨터(Computer Science)/네트워크, Network] - 클라이언트와 서버, Client & Server

 

Unicast, Multicast, Broadcast

[컴퓨터(Computer Science)/네트워크, Network] - 유니캐스트, 브로드캐스트, 멀티캐스트 (Uni, Broad, Multi)

 

 POP3, IMAP

[컴퓨터(Computer Science)/네트워크, Network] - POP3 vs IMAP ( ++ SMTP) 이메일 서버의 작동방식 차이

 

DHCP

[컴퓨터(Computer Science)/네트워크, Network] - Dynamic Host Configuration Protocol, DHCP란? 동적 호스트 설정 프로토콜

 

NAT

[컴퓨터(Computer Science)/네트워크, Network] - NAT란? Network Address Translation, 네트워크 주소 변환 [네트워크]

 

NAS, SAN

[컴퓨터(Computer Science)/네트워크, Network] - NAS, SAN의 서버 저장방식 차이

 

Ethernet

[컴퓨터(Computer Science)/네트워크, Network] - What is Ethernet? 이더넷이 뭘까?

 

Network Byte Order

[컴퓨터(Computer Science)/네트워크, Network] - 네트워크 바이트 오더 [네트워크]

 

QoS

[컴퓨터(Computer Science)/네트워크, Network] - Network Service, 네트워크 품질 [네트워크]

 

 

 

 

 


 

개념 질문

 

Q. Internet이란?

더보기

A. 

인터넷이란 TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망이다. 

 

Q. 프로토콜이란 무엇인가?

더보기

A. 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약을 말한다.

 

통신을 제어하기 위한 표준 규칙, 절차의 집합으로 하드웨어와 소프트웨어, 문서를 모두 규정한다.

 

프로토콜은 크게 5가지 기능을 수행한다.

1. Fragment, Reassemble단편화와 재결합

데이터를 단편화(쪼개서) 전송함으로써 빠르고 오류를 제어하기 쉽다.

2. Encapsulation, 캡슐화

단편화된 데이터에는 송,수신지 주소, 오류 검출 코드, 프로토콜 제어정보 등 것들이 담겨져 있다.

정보 데이터에서 오류가 생기는 것을 막기 위해 캡슐화를 해서 보낸다.

3. Flow Control, 흐름 제어

수신 측이나 송신 측에서 움직이는 데이터 양이나 속도를 조절한다.

(Sliding Window 기법 같은)

4. Error Control, 오류 제어

전송 중 발생하는 오류를 검출하고 정정하여 정보의 신뢰성을 높인다.

5. Synchronization, 동기화

송,수신측이 같은 상태를 유지하도록 타이밍을 맞추는 기능이다.

 

 

 

Q. TCP/IP란 무엇인가?

더보기

A. 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 인터넷의 표준 프로토콜이다. 

TCP/IP는 결합해서 얘기하는 것을 의미한다.

TCP는 전송 계층에 해당하고, IP는 네트워크 계층에 해당된다.

 

Q. OSI 7 계층에 대해서 말해보시오.

더보기

A. 

1. Physical, 물리

2.Data Link, 데이터링크

3. Network, 네트워크

4. Transport, 전송

5. Session, 세션

6. Presentation, 표현

7. Application, 응용

 

Q. OSI 각 계층이 하는 일은 무엇인가?

더보기

A. 

1. Physical, 물리

해당 계층의 데이터 단위는 비트(bit)이다.

전송에 필요한 두 장치의 물리적 연결, 기계적, 전기적, 절차적 특성에 대한 규칙을 정의한다.

 

2.Data Link, 데이터링크

해당 계층의 데이터 단위는 프레임(frame)이다.

두 개의 인접한 시스템 간에 신뢰성 있고 효율적인 정보 전송을 위해 시스템 간의 연결 설정 및 유지, 종료를 담당한다.

++ 흐름제어, 오류 검출 및 제어,  프레임 순서 제어

 

3. Network, 네트워크

해당 계층의 데이터 단위는 패킷(Packet)

개방 시스템들 간의 네트워크 연결을 관리하고 데이터 교환 및 중계를 한다.

네트워크 연결 설정 및 유지, 해제 기능을 한다.

 

4. Transport, 전송

해당 계층의 데이터 단위는 세그먼트(Segment)

논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 End to End 간에 신뢰성 있는 전송을 가능하게 한다.

TCP,UDP가 해당 계층 프로토콜이다.

 

5. Session, 세션

해당 계층의 데이터 단위는 Token(Message) 토큰(메세지) 이다.

송수신 측의 관련성을 유지하고 대화 제어를 담당한다.

 

6. Presentation, 표현

해당 계층의 데이터 단위는 메세지다.

응용계층으로부터 받은 데이터를 세션 계층으로 보내기 전에 통신에 적당한 형태로 변환하고 

세션계층으로부터 받은 데이터를 응용 계층으로 보내기 전에 적당한 형태로 변환한다.

암호화, 압축, 검색, 포맷 변환 등을 관리한다.

단위는 Message이다.

 

7. Application, 응용

User와 직접 통신하는 계층으로 OSI 환경에 접근할 수 있도록 서비스를 제공한다.

응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스가 그 예다.

단위는 Data이다.

 

Q. DNS란 무엇인가?

더보기

A. Domain Name Service의 준말로 IP를 통해 데이터 교환을 하는 것이 접근성이 떨어져 도메인 이름을 IP와 매핑시켜서 도메인만으로도 접근할 수 있게 해주는 서비스이다.

 

Q. 웹브라우저에 google.com 치면 일어나는 과정 (브라우저에서 주소창에 url 입력시 어떤일이 일어나는가?)

 

Q. LAN과 WAN의 차이?

더보기

A. Local 과 Wide의 차이이다.

네트워크가 얼마나 연결되어 있냐의 차이라고 말할 수 있다.

일반적으로 게이트웨이 안에 있는 것을 LAN이라고 한다.

 

Q. 포트란 무엇인가?

 

 

Q. OSI 모델과 TCP/IP 모델의 차이는?

 

Q. 웹 브라우저나 파일 전송프로그램 같은 클라이언트 프로그램 특징

 

Q. ARP와 RARP 란 무엇인가?

 

 

Q. 부분망, 서브넷의 목적은 무엇인가?

 

Q. 유니캐스트, 브로드캐스트, 멀티캐스트란?

 

Q. 경로 추적, TRACERT 과 핑,PING 의 동작방식은?

 

Q. QoS란 무엇인가?

 

Q. IP(Internet Protocol) 란?

더보기

A. 네트워크 계층의 프로토콜로 

 

 

Q. Switch, Router, Hub 란?

 

 

 

Q. DDoS, Distributed Denial of Service란?

더보기

A. DDoS 공격이란 말을 많이 쓰는데 Service 요청을 무지막지 하게 보내서 응답을 하지 못하게해서 서비스 제공을 못하게 하는 것이다. 이는 동시 다발적으로 PC를 감염시켜 Zombie PC를 만들어 실행하는 것이 일반적이다.

 

Q. SYN Flooding이란?

Q. ping of Death 란?

Q. Physical Layer의 목적과 역할

더보기

A. 

-상위 계층에 대해서 서비스와 인터페이스 제공( Data Link)

-실질적으로 데이터를 송신하는 계층, 통신채널을 통해 raw bits들을 전송한다.

(다른 곳에서는 실제로 데이터를 전송하는 것이 아님. 논리적(logical) 전송이라고 할 수 있다.)

-실제로 호스트 간의 물리적 연결을 책임지는 것이다.(유/무선)

 

Q. Circuit Switching(회선 교환)의 특징

더보기

-데이터를 전송하기 전에 경로가 연결되어 있어야 한다.(Connection setup)

-때문에 경로가 설정되면 congestion의 위험이 없고 품질이 좋다.

-이러한 경로 결정 방식을 Circuit Switching이라고 함.

-혼잡(congestion)은 통신이 시작되기 전, 경로를 설정할 때만 일어난다.

 

Q. Packet Switching(패킷 교환)의 특징

더보기

-데이터를 패킷으로 만들어지는 대로 바로바로 보냄.

 

-패킷이 실제로 목적지에 도달하는 것은 라우터(Router)에 달려있기 때문에 네트워크 상태에 따라 패킷마다 다른 경로를 통해 갈 수 있으며 이는 패킷이 순서대로 도착하지 않을 수 있음을 의미한다.

-Store and Forward을 사용해서 패킷을 전송한다.

-혼잡(congestion)은 아주 많은 패킷을 전송할 때 발생할 수 있다.

 

Q. 데이터 링크에서 하는 주요 역할들은?

더보기

-이웃 계층에 대한 서비스와 인터페이스 제공 (to Network, Physical)

 

-Framing, 프레이밍 , Flow control, Error control오류 제어와 흐름 제어

(오류 제어에는 오류 발견과 오류 정정이 있음)

- 물리적으로 연결된 호스트 사이의 통신수단을 제공함.

(송신 호스트가 정보를 꾸려서 물리 계층을 통해 정보를 보내고 수신 호스트가 해당 정보를 수신하여 사용할 수 있는 수단)

 

Q. Frame이란?(링크 계층의 송수신 단위)

더보기

-장거리 통신을 하는 경우 Frame은 상위 계층의 Packet 그대로를 사용하고 데이터 헤더(header)를 붙인다.

** 하지만 Local Area Netwrok의 경우에는 bits 를 쪼갠다.

-데이터 링크에서 교환이 이루어지는 단위다.

-네트워크 계층에 서비스를 제공하기 위해서 데이터 링크 계층은 물리계층에서 제공된 서비스를 이용해야 한다. 물리 계층은 원시 비트 스트림을 받아서 목적지로 분배하는 일을 담당한다.

-그 비트 스트림에 오류가 없다는 것을 보증하지는 않는다.

(수신된 비트들은 송신된 비트들에 비해 작거나, 같거나, 클 수도 있다.)

따라서 오류를 검사하고 교정하는 일은 데이터 링크 계층의 몫이다.

-데이터 링크 계층에서는 비트 스트림을 프레임들로 나눈다.(물리적 계층에서 받아온 비트 스트림)

 

Q. one persistent CSMA/CD는 Ethernet(이더넷)이라고 불린다. 이더넷의 원리와 개념에 대해서 설명하시오.

더보기

캐리어 인지 프로토콜 중에 하나다.

CSMA는 Carrier Sense Multiple Access 라는 뜻이다.

보내야 할 데이터가 있을 때 스테이션은 우선 그 때 다른 스테이션이 전송 중인지 알기 위해 채널을 체크한다.

채널이 사용 중이면 전송하기 위해서 그 스테이션을 기다린다.

스테이션이 빈 채널을 체크하면 프레임을 전송한다.

만약 충돌이 발생하면 스테이션은 임의의 시간 동안 기다린 후 다시 작업을 시작한다.

스테이션이 빈 채널을 발견할 때마다 1의 확률로 전송을 하기 때문에 1 persistent protocol이라고 부른다. (무조건 전송한다는 뜻)

-Persistent란 충돌이 일어났을 때의 행동패턴을 말한다.

(1의 뜻은 스테이션이 비어있고 자기가 전송을 하고 싶다면 100% 보낸다는 뜻이다.)


Q. CS, 캐리어 센스란?

더보기

채널의 사용 중 여부를 알아내는 것을 말한다.

CS를 하는 이유는 채널이 사용 중이면 그 채널을 사용하지 않게 하기 위함이다.

캐리어 센스가 없다면 스테이션은 사용하려고 하기 전에 사용 중 여부를 알 수 없고

전송 시도하고 나중에 전송이 성공했는지 여부만 알 수 있다.

 

Q. DHCP의 메커니즘에 대해서 설명하시오

더보기

Dynamic Host Configuration Protocol이다.

각각의 컴퓨터는 DHCP client를 수행한다. 

이는 컴퓨터에게 IP address를 요구하는 것과 같다.

모든 네트워크는 배치를 책임지는 DHCP 서버를 가지고 있다.

DHCP 서버는 IP 주소가 관리되는 공간이고 라우터나 서버에서 작동한다.

 

컴퓨터가 시작될 때 컴퓨터는 이더넷을 설정하거나 또는 IP 주소 없이 다른 링크 계층 주소를 NIC에 임베디드한다.

그 이후,  컴퓨터는 마치 ARP와 같이 네트워크 상에 있는 IP 주소에 대해 요구를 브로드캐스트한다.

+ 브로드캐스트 메세지를 네트워크 상에 보낸다.  (이를 DHCP Discover라고 한다)

 

컴퓨터는 DHCP Discover 패킷을 사용함으로 수행할 수 있고 이 패킷은 DHCP 서버에 도착한다.

만약 DHCP가 그 메세지를 받으면 서버는 IP주소를 할당하고

DHCP Offer 패킷 내에 host에게  요구를 전송한다.



Q. Token Ring의 메커니즘과 개념에 대해서 설명하시오

더보기

토큰링은 충돌을 일어나지 않게 하는 프로토콜 중 하나이다.

모든 스테이션들이 프레임을 미리 정해진 순서대로 돌아가면서 제어권한을 준다.

토큰을 받게 되면 프레임을 전송하고 토큰을 다음으로 넘겨준다.

전송할 프레임이 없으면 토큰을 그냥 넘긴다.

-> 충돌이 무조건 없으나 비효율적인 대기시간이 길어질 가능성이 있음

 

Q. 데이터링크 레이어에서 flow control이란 무엇인지 설명하시오

더보기

 데이터 링크 계층에서는 수신측 처리량보다 전송측 송신량이 더 많을 때 문제가 발생한다.

그 문제를 막기 위해서 흐름 제어를 해야 한다.

그 흐름 제어에는 2가지 방법이 있다.

피드백 기반 흐름제어와 전송률 기반 흐름제어이다.

 

 

Q. MAC address란?

더보기

Media Access Control의 약자이다.

IP주소를 통해 게이트웨이 라우터를 통과하고(네트워크 계층)

그 이후에서 LAN용으로 MAC address의 지정된 테이블을 통해 변환을 한다. (Data Link 계층)

LAN에서 쓰는 독자적인 주소 쳬게라고 볼 수 있다.

48bit sequence이다.

(쉽게 말하면 내부망에서 쓴다고 보면 되겠다. LAN카드에 적혀있다. 중복되지 않게 만든다.)

 

 

Q. 이더넷의 문제점은 무엇인가?

더보기

Ethernet’s peak utilization is pretty low.

-> 이더넷의 효율이 낮다.

Peak throughput worst with More hosts, smaller packet sizes, longer links

-> 왜냐하면 호스트가 많아지고 패킷 사이즈가 작아질수록  링크를 오래할수록 충돌이 많아지고 대기시간이 늘어나서 효율이 떨어진다.

efficiency is improved by avoiding these condition

-> 위 조건을 해결해야 이더넷의 성능을 높일 수 있다.



 

Q. 그림에보여진 "protocol using go back n"의 메커니즘을 설명하시오.

더보기

-송신측에서 다른 프레임을 전송하기 전에 확인응답(acknowledge)을 받아야 한다.

즉, 송신측이 차단되기 전에 많은 프레임을 보내는 것으로 극복할 수 있다.

이를 파이프라이닝(pipelining)이라고 한다.

여기서 생기는 오류를 극복하는 방법으로 go back n 방법을 쓴다.

 

-수신측에서는 단순히 이어져 들어온 모든 프레임을 폐기하고 폐기된 프레임에 대해는 응답을 보내지 않는다.

오류가 발생한 프레임뿐만 아니라, 정상적으로 수신한 프레임까지 재전송하는 문제점이 있다.


Q. 그림의 (a)에서의 Framing 메커니즘을 설명하시오.

더보기

-위 기법은 프레임 속의 바이트 수를 나타내기 위해 헤더의 한 필드를 사용한다.

(b)의 그림과 같이 카운트하는 부분이 왜곡이 된다면 수신측이 프레임에 오류가 존재하는 것을 알았다 해도 다음 프레임의 시작위치를 알 수 없다.

에러를 정정할 수 없는 것이다.

 

Q. 그림의 (b)에서의 Framing 메커니즘을 설명하시오

더보기

Frame의 크기를 나타내는 Header가 잘못되면 아예 전부다 엉망이 된다.

그래서  거의  byte count방법을 쓰지 않는다.

 

Q. Router란 무엇인가?

더보기

라우터는 네트워크 장비로 네트워크 계층에서 동작한다.

주요한 역할은 데이터를 현 네트워크에서 다른 네트워크로 옮기는 것이다.

라우터는 목적지 주소를 알 때 작동하고 라우터는 원거리 네트워크까지 라우팅 테이블에 있는 정보에 따라 최적의 경로로 작동한다.

 

 

Q. Routing이란 무엇인가?

더보기

라우팅이란 최적, 또는 최상의 경로를 결정하는 과정을 말한다.

그러한 과정은 네트워크에서 다른 네트워크로 패킷을 보낼 때 이뤄진다.

인터넷 통신이 라우팅의 가장 대표적인 예이다.

 

Q. 트랜스포트 레이어(전송 계층)의 역할을 설명하시오

더보기

A. 물리적인 네트워크에 관계없이 근원지 컴퓨터에서 목적지 컴퓨터 간에 신뢰할 수 있고 저렴한 데이터 전송을 하고자함.

Application 이 네트워크를 사용하는 데 필요한 추상화도 제공함.

TCP/IP를 배우면 트랜스포트의 역할을 진정으로 알 수 있다.

통신의 최종책임을 진다고 보면 된다. 

Addressing(주소 지정), Connection Establishment(연결 설정), Connection Release, Flow control and buffering, Multiplexing, Crash Recovery등 많은 역할 또한 하고 있다.




Q. Store-and-forward 스위칭이 무엇인가?

더보기

A. 패킷을 호스트에게서 받는다.

갈 수 있는 가장 짧은 라우터를 결정한다.

패킷은 다 도착하고 체크섬이 입증될 수 있도록 저장한다.

목적지에 도달할 때까지 반복한다.

(라우터가 어떤 라우터로 진행될 지의 핵심)

 

Q. 네트워크에서 Congestion(혼잡)이 무엇인지 설명하시오

더보기

A. 패킷이 너무 많아서 네트워크의 수용량을 넘어서 처리할 수 없는 상태를 congestion 이라고 한다.

 

**혼잡상황에서는 Collapse가 일어날 수 있다.

->수용량을 초과하면 포화속도로 유지되는 것이 아닌 collapse상태에 빠져서 수행 불가능 상태가 된다

 

Q. 계층 라우팅(Hierarchical Routing)에 대해 설명하시오

더보기

A. 네트워크 크기가 커짐에 따라 라우팅 테이블이 커졌다.

라우팅 테이블이 커져서 효율이 떨어지자 계층적인 라우팅이 될 필요가 있게 되었다.

라우터를 지역(region)이라는 단위에 따라 나누어 같은 지역 내에서는 패킷이 전달되는 방법을 알지만 다른 지역의 구조에 대해서는 모르게 된다.

**Encapsulation과 비슷하다.

그렇게 함으로써 효율성을 유지한다.

 

Q. 내부 게이트웨이 라우팅 프로토콜: OSPF에 대해서 설명하시오 

더보기

Open Shortest Path First의 약어이다. 우리는 최단 경로 우선 프로토콜이라고도 한다.

 

서브넷의 게이트웨이에서 라우팅을 제어하는 역할을 한다.

링크 스테이트 라우팅 알고리즘을 사용하며 AS에서 작동하면서 내부 라우팅 프로토콜 그룹에 도달한다.

++AS(Autonomous System), 자율적인 시스템 간의 라우팅을 위한 프로토콜이다.

(인트라도메인 라우팅이라는 영역에서 사용되는 프로토콜이다.)

/* RIP(routing information protocol)보다 규모가 큰 네트워크에서도 사용할 수 있다.

규모가 크고 TCP/IP 네트워크에서 RIP의 단점을 개선한 라우팅 프로토콜. 

RIP에 비해 자세한 제어가 가능하고, 관리 정보의 트래픽도 줄일 수 있다. */

(내부망에서 가장 널리 쓰이는 프로토콜이기도 하다)

 

Q. 외부 경계 게이트웨이 라우팅 프로토콜 : BGP에 대해서 설명하시오

더보기

A. BGP란 Border Gateway Protocol의 약자이다.

 내부 도메인 프로토콜과 외부 도메인 프로토콜이 목적이 서로 다르기 때문에 다른 프로토콜이 필요하다.

모든 외부도메인 프로토콜이 할 수 있는 것은 근원지로부터 목적지로 가능한 한 효율적인 패킷을 이동시키는 것이다.

반대로 내부 도메인 라우팅 프로토콜은 정책에 대해 고민해야한다.

일반적인 외부 게이트웨이 프로토콜 특히 BGP는 AS 간 트래픽에서 시행되는 많은 종류의 라우팅 정책들을 수용할 수 있게 설계되어 있다.

BGP는 서로 다른 종류의 자율 시스템(AS, 서브넷)에서 동작하는 라우터가 라우팅 정보를 교환할 수 있도록 해준다.

 

Q. 리키 버킷 알고리즘(Leaky Bucket Algorithm)의 목적에 대해서 설명하시오

더보기

혼잡제어(Congestion Control)을 위한 알고리즘이다.

전송하는 패킷 수를 제한 시켜서 네트워크 성능 저하를 막기 위한 것이다. 

송신 호스트가 전송하는 패킷의 발생 빈도가 네트워크에서 수용할 수 있는 전송률로 이루어지게 하는 기능이 필요하다.

그 기능을 수행하는 알고리즘 중 하나가 리키 버킷 알고리즘이다.

라우터의 버퍼에서 이루어진다.




 


 

응용 질문

 

Q. 그림에서 3-Way 핸드셰이크가 무엇인지 설명하고 왜 필요하고 어떤 단계를 거치는지 설명하시오.

더보기

A. ​

 

 1) 연결을 하기 전 클라이언트는 Closed 상태이고, 서버는 Listen 상태이다.

 2) 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다.

​ 3) 서버는 클라이언트의 요청인 SYN 패킷을 받고, 클라이언트에게 요청을 수락한다는 ACK 패킷과 SYN 패킷을 보낸다.

​ 서버는 상대방의 응답을 기다리는 SYN_RCV 상태로 변경 된다.

​ 4) 클라이언트는 서버로부터 ACK 패킷과 SYN 패킷을 받으면, 포트를 열고 이에 대한 확인으로 서버로 ACK 패킷을 보낸다.

​ 클라이언트는 Established 상태로 바뀐다.

​ 5) ACK 패킷을 받은 서버 역시 Establihsed 상태로 변경되면서 클라이언트와 서버는 논리적으로 연결이 된다.


Q. TCP의 연결은 어떻게 해제하는가?

더보기

A. TCP 프로토콜은 연결 해제를 위해 4-way-handshake 방식을 사용한다.

​ 1) 서로 통신 상태이기 때문에 클라이언트와 서버 모두 Establihsed 상태다.

​ 2) 클라이언트가 통신을 종료하자는 FIN 플래그를 보내고, 상태를 종료요청 후 서버의 FIN 플래그를 기다리고 있다는 의미로 FIN_WAIT_1 상태로 바꾼다.

​ 3) FIN 패킷을 받은 서버는 ACK 패킷을 전송하고 애플리케이션 소켓을 닫는다.

​ 이때, 자원을 정리하는데 시간이 소요되므로, 소켓을 닫지만 기다리고 있는 상태라는 의미에서 CLOSE_WAIT 상태로 바꾼다.

​ 클라이언트는 서버의 ACK 패킷은 받았고 FIN 을 아직 기다리고 있다는 의미로 FIN_WAIT_2 상태로 바꾼다.

​ 4) 서버는 데이터를 모두 보내고 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 플래그를 전송한다.

​ 5) 클라이언트는 FIN 플래그를 확인했다는 ACK 패킷을 서버로 보내고 TIME_WAIT 상태로 바꾸면서 서버에세 ACK 패킷을 보낸다.

TIME_WAIT 상태에서 일정 시간이 되면 CLOSED 상태가 된다.

​ 6) 서버는 ACK 패킷을 받고 CLOSED 상태가 되면서 연결이 끊긴다.

 

Q. 두 부대문제 (Two-army problem)에 대해 설명하시오

더보기

A. 문제의 출발점은 답변에 대한 확인 응답이 있어야 한다는 것이다. -> 3-way handshake

 

어떠한 메세지도 손실되지 않는다면,  답변에 대한 확인응답을 받아볼 수 있을 것이다.

그렇지만 제대로 전달됐는지를 모르니까 이 문제가 생긴 것이다.

프로토콜의 맨 마지막 메시지는 필수적일 수도 있고 아닐 수도 있다.

필수적인 것이 아니라면 이 맨 마지막 메시지도 제거하고 모든 메시지가 필수적이 될 때 까지 지울 수 있다.

그러면 남는 것은 필수적이기 때문에 만일 전달되지 않는다면 공격이 이루어지지 않을 것이다.

즉, 세그먼트가 유실되는 경우에 이런 관계를 생각할 수 있다.

 

Q. 그림에 보여진 TCP/IP에서 사용되고 있는 sliding window protocol의 작동원리를 설명하시오

더보기

A. Flow Control을 위한 방법이다.

즉, 수신자와 송신자 간의 동기화를 하는 것이다.

 

수신자가 4KB의 버퍼크기를 가지고 있다.

 

송신자가 2KB를 전송하고

 

수신자가 올바로 수신받았다면 그 세그먼트에 대한 응답을 보내고 남은 버퍼의 크기가 수신될 것이라 기대되는 다음 바이트(2048)부터 2KB라고 송신자에게알려준다.

 

다시 송신자가 2KB를 보내면 수신자는 다시 확인응답을 보내고 남은 윈도우의 크기는 0이 된다.

 

그렇게 되면 송신자는 수신측의 응용프로그램이 버퍼에서 데이터를 제거하고

TCP까 윈도우에 여유 공간이 생겼음을 통지할 때까지 송신을 정지한다.

 

Q. 송신 프로세스가 데이터를 수신 프로세스에 전송하는 메커니즘과 수신 프로세스가 송신 프로세스로부터 수신 받는 메커니즘을 경로에 따라 자세히 설명하시오.

 

더보기

A. 

송신: SEND의 실행을 위해 커널을 트랩(trap)한다.

트랜스포트 개체가 하는 첫번째 일은 어떤 경우인지 알아보는 일이다. EASTABLISHED 상태인지, 연결 닫기를 시도하고 있지는 않은지, 수신측에 충분한 윈도우 크기가 존재하는지 등이다. 

-> 모든 조건이 만족되면 더 이상의 검사 없이 송신 트랜스포트 개체를 통해 빠른 경로(fast path)를 택할 수 있다.

*보통 연속적인 데이터 세그먼트의 헤더는 같다

헤더는 같기 때문에 트랜스포트 개체 내에 헤더 원형(prototype)을 저장해서 송신 시 빠르게 복사한다.

세그먼트 헤더에 대한 포인터와 사용자 데이터에 대한 포인터가 네트워크 계층으로 전달된다.

마지막으로 네트워크 계층은 전송을 위해 결과 패킷을 데이터 링크 계층으로 넘겨준다.

 

수신: 유입 세그먼트에 대한 연결 레코드(connection record)를 찾는다.

**TCP의 경우 연결 레코드는 2 개의 IP 주소와 두 개의 포트로 구성된 단순 함수가 키인 해시 테이블에 저장

일단 레코드가 찾아지면 올바른 레코드를 찾았는지 두 주소와 두 포트가 비교된다.

그 다음 세그먼트의 상태를 조사한다. 송신쪽에서 검사하는 것과 마찬가지이다.

모든 조건이 충족되면 하나의 특별한 빠른 경로(fast path) TCP 프로시저가 호출된다.

그 이후 빠른 경로는 연결 레코드를 갱신하고 데이터를 사용자로 복사한다. 복사 중 체크섬을 계산하고 데이터에 대한 나머지 절차를 생략한다.

 

Q. Packet과 Frame의 차이를 설명하시오.

더보기

A. 프레임, Frame은 데이터를 담는 컨테이너로, 동일 네트워크 상의 두 지점 간에 정보를 전달할 소스(Source, 발신지)과 목적지 주소를 가지고 있다.

이를 페이로드(payload)라고 한다. 이름과 부서 대신에 프레임의 소스와 목적지 주소는 컴퓨터나 태블릿, IP폰, IoT 디바이스 등등의 MAC(Media Access Controller) 주소다.

(MAC 주소는 ID 번호의 일종으로, 전세계의 모든 이더넷 디바이스에 유일무이한 번호가 된다.)

48bit로 구분한다.

LAN에서는 IP 대신 MAC주소를 쓰기도 한다.

(MAC 주소가 유일무이하고 영구적인 것과는 달리 IP 주소는 보통 일시적으로 할당되며, 디바이스가 다른 네트워크에 연결되면 변경된다. 예를 들어, 태블릿의 IP 주소는 다른 와이파이 네트워크에 연결할 때마다 바뀐다.)



Q. 그림을 보고 transparent fragmentation 과 nontransparent fragmentation for internetworking 을 각각 비교하여 설명하시오.

                                            

더보기

A.

우선 단편화가 일어나는 이유는 수용할 수 있는 패킷의 크기가 달라서 그렇다.

커다란 패킷이 최대 패킷이 적은 네트워크를 통해 전송된다면 인터네트워킹 문제가 발생하고 이를 단편화로 해결이 가능하다.

(a)는 투명 단편화로 게이트웨이 라우터에서 큰 패킷은 작게 쪼갠다.

그 후 다른 게이트웨이로 갈 때 다시 재결합한다. 이는 사용자가 보기에 단편화가 일어나지 않은 것처럼 보인다.

(b)는 불투명 단편화로 중간 라우터에서 재결합을 하지 않는다.

재결합은 목적지에 도착했을 때만 일어난다. 사용자는 단편화 된 것을 확인할 수 있으므로 불투명 단편화라고 한다.

이런 일은 Gateway 라우터가 한다.




Q. 거리 벡터 라우팅의 한계 점인 Count to infinity에 대해서 설명하시오

더보기

A. 거리 벡터 알고리즘은 이론상으로는 잘 작동하는 것처럼 보인다.

하지만 실제로는 정확한 답을 내기는 하나 매운 느리다는 단점이 있다.

좋은 소식에 대해서는 매우 빠르게 대응 하나 나쁜 소식에 대해서는 느리게 대응한다.

A-B-C-D-E가 있다고 해보자

모든 회선과 라우터가 초기에 정상 작동하고 있다.

하지만 갑자기 A와 B 회선이 끊어졌다.

처음 패킷이 교환되면 B는 A로부터 아무것도 얻을 수 없다. 그렇지만 C는 자신이 A와 거리가 2라면서 B에게 정보를 준다. 그렇게 됨으로 B는 나는 C를 거쳐 A를 갈 수 있고 그 거리는 3이라고 생각한다.

우리는 알지만 B는 C가 수십 개의 경로를 가지고 있고 그 중 A와 이어지는 것이 있다고 생각하는 것이다.

C는 B가 거리가 3이라는 정보를 바탕으로 다시 C에서 B를 참조해서 A로 가는 거리 4 경로가 있구나 라고 생각한다.

이를 반복해 무한 카운팅 문제가 생겨난다



Q. 링크 상태 라우팅을 다음 단어로 설명하시오

(a) building link state packet, (b) distributing the link state packets, (c) measuring line cost,

(d) learning about the neighbors, (e) computing the new routes

더보기

A.

 

1. learning about the neighbors

이웃하는 라우터를 찾아내어 네트워크 주소를 알아낸다.

부팅된 라우터는 점대점 회선 각각에 대하여 HELLO 패킷을 보냄으로써 알아낸다.

그에 대한 response로 자신이 누구인지를 보내준다.

핑 테스트와 같은 방식으로 진행한다.

 

2. measuring line cost

이웃 각각에 대한 거리와 비용 메트릭을 설정한다.

라우터에 도달하기 위한 비용은 자동적으로 측정되거나 네트워크 관리자에 의해 설정된다.

 

3. building link state packet

알아낸 모든 정보를 전달하는 패킷을 만든다.

교환에 필요한 정보들이 만들어지면 각 라우터가 그 모든 데이터를 포함한 패킷을 만든다.

 

4. distributing the link state packets

이 패킷을 다른 모든 라우터에게 전송하고 수신한다.

패킷이 전달되고 설정됨에 따라 그 패킷을 받은 라우터는 경로를 바꾼다.

 

5. computing the new routes

다른 모든 라우터에 대해서 최단 경로를 계산한다.

링크 상태 패킷을 받아서 모든 링크를 알게 되었으므로 새롭게 최단경로를 계산한다.

 

Q. 다익스트라 최단 경로 라우팅이 어떻게 작동하는가?

더보기

A. 경로까지의 최소 cost 노드만을 찾아서 간다.

 

B로 간다 그렇게 되면 C=18, E = 8 G = 12가 된다. 최단경로{A,B}

그 중 가장 작은 값인 E로 간다. 그렇게되면

F = 12 G = 10  C =18이 된다. {A,B,E}

가장 작은 값인 G로 간다.

그렇게 되면 H =18, F =12, C =18이 된다. {A,B,E,F}

다시 가장 작은 값인 F로 가면

H=16, C = 18이 된다.

그렇게 다시 가장 작은 값인 H를 간다{A,B,E,F,H}

그렇게 되면 C=18, D = 20이 된다.

다시 C를 방문해도 C에서 D는 26이 되기에

{A,B,E,F,H,D}가 최단경로가 된다.



Q. Packet vs circuit

더보기

A. 패킷 교환 방식이 더 장애에 강하다.

교환기가 작동을 멈춘다면 회선이 끊어질 것이고 회선 교환 방식에서는 더 이상 트래픽이 전송될 수 없다. 하지만 패킷 교환 방식에서는 작동을 멈춘 스위치를 우회해서 갈 수 있다.

 

Q. TCP란? 

더보기

대부분의 인터넷 응용 분야들은 신뢰성 과 순차적인 전달 을 필요로 한다. UDP 로는 이를 만족시킬 수 없으므로 다른 프로토콜이 필요하여 탄생한 것이 TCP이다. TCP(Transmission Control Protocol, 전송제어 프로토콜)는 신뢰성이 없는 인터넷을 통해 종단간에 신뢰성 있는 바이트 스트림을 전송 하도록 특별히 설계되었다. TCP 서비스는 송신자와 수신자 모두가 소켓이라고 부르는 종단점을 생성함으로써 이루어진다.

TCP 에서 연결 설정(connection establishment)는 3-way handshake를 통해 행해진다.

모든 TCP 연결은 전이중(full-duplex), 점대점(point to point)방식이다. 전이중이란 전송이 양방향으로 동시에 일어날 수 있음을 의미하며 점대점이란 각 연결이 정확히 2 개의 종단점을 가지고 있음을 의미한다.

TCP 는 멀티캐스팅이나 브로드캐스팅을 지원하지 않는다.

 

Q.UDP란?

 

더보기

UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)는 비연결형 프로토콜이다.

IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다. UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다. 이 모두가 사용자 프로세스의 몫이다. 

UDP가 행하는 것은 포트들을 사용하여 IP 프로토콜에 인터페이스를 제공하는 것이다.

종종 클라이언트는 서버로 짧은 요청을 보내고, 짧은 응답을 기대한다.

만약 요청 또는 응답이 손실된다면, 클라이언트는 time out 되고 다시 시도할 수 있으면 된다.

코드가 간단할 뿐만 아니라 TCP 처럼 초기설정(initial setup)에서 요구되는 프로토콜보다 적은 메시지가 요구된다.

UDP를 사용한 것들에는 DNS가 있다. 어떤 호스트 네임의 IP 주소를 찾을 필요가 있는 프로그램은, DNS 서버로 호스트 네임을 포함한 UDP 패킷을 보낸다. 이 서버는 호스트의 IP 주소를 포함한 UDP 패킷으로 응답한다. 사전에 설정이 필요하지 않으며 그 후에 해제가 필요하지 않다.

 

Q. TCP와 UDP의 차이를 설명해보시오.

더보기

A.

공통점으로는 포트 번호를 이용해서 주소를 지정하고 데이터 오류 검출을 위한 체크섬이 존재한다는 것이고

차이점으로는

TCP는 Connection이 생긴 후에 통신 가능하므로

신뢰성이 보장된 통신으로 상대방에게 패킷이 도달했는지 ACK까지 받아서 받을 때까지 패킷을 보낸다.

즉, 패킷이 도달하지 않거나 유실되었다면 재전송을 한다.

 

 

반면에 UDP는 연결성이 없는 통신으로 상대방에게 패킷이 도달한 지에는 관심이 없고 오직 패킷을 보낼 뿐이다. 패킷의 재전송은 없다.

 

그래서 하는 작업에 따라 통신 방식이 나누어지게 된다.

TCP는 HTTP, Email, File transfer에서 사용

 

UDP는 DNS, Broadcasting(도메인, 실시간 동영상 서비스에서 사용)

 

Q. 왜 Layerd Arichitecture를 가졌으며 단점이 무엇이냐?

더보기

A. 계층구조는 3가지 이유를 들 수 있다.

 

1. 신뢰성: 받은 정보의 오류를 탐지하기 위한 하나의 매커니즘으로 오류 검출 코드를 사용하는데 이것은 제대로 이루어질 때까지 잘못 받은 정보를 다시 재전송할 수 있다. 더 강력한 코드로 원래 받은 잘못된 비트에서 발견한 올바른 메시지에서 오류 정정을 할 수 있다.

2. 설계 용이성: 기존의 네트워크를 연결한 대규모의 새로운 설계방안이 나오는데 따라서 전체적인 문제를 분리하고 세부 정보구현을 숨김으로써  변환하는 데 사용되는 핵심구조 매커니즘을 볼 수 있다.

3. 자원할당:  네트워크는 전송선의 용량과 같은 근본자료에서 호스트에게 서비스를 제공하는데 이를 잘하기 위해서는 하나의 호스트가 다른 호스트에게 방해가 되지 않게 자원을 할당하는 매커니즘이 필요하다.

4. 네트워크 안전성: 통신을 도청으로부터 보호해야한다. 기밀성을 제공하는 메커니즘이 여러 계층에서 사용되고 있다.

 

단점

오버헤드가 층마다 발생한다.

너무 많은 레이어가 있었다면 지연시간이 훨씬 늘어났을 것이다.

 

 

Q. 각 층마다 header가 있는 이유는 무엇인가?

더보기

A. 각 계층의 목적은 자신의 상위 계층에게 특정한 서비스를 제공하는 것이다.

각 계층들은 내용, 이름 기능이 모두 다르다.

때문에 서로 커뮤니케이션을 하기 위해서는 식별할 수 있는 무언가가 필요했고 그것이 바로 헤더다.

헤더 안에는 주소 번호 같은 제어정보가 들어 있어서 올바른 순서로 메시지를 전달할 수 있도록 한다.

 

 

 

반응형
그리드형