네트워크 면접 질문 정리

초보개발·2022년 3월 29일
6
post-custom-banner

🔍 OSI 7계층에 대해 설명해주세요.

OSI 7계층은 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층, 응용 계층으로 구성되어 있습니다.
물리 계층은 0과 1로 구성된 데이터를 선으로 전달할 수 있도록 전기적인 신호로 변환시켜주는 역할을 합니다.
데이터 링크 계층point to point, 같은 LAN 안의 연결된 컴퓨터들끼리 MAC 주소로 통신이 가능하게 해줍니다. 이 계층에서 전송되는 단위를 프레임이라고 하고 장비로는 스위치가 있습니다.
네트워크 계층은 라우터 장비를 이용해 데이터를 목적지까지 안전하고 가장 빠른 경로로 전달해주는 역할을 합니다. IP 주소를 이용해 다른 LAN에 속한 컴퓨터로 데이터를 전송할 수 있습니다.
전송 계층End to End, 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해줍니다. 또한 포트번호로 데이터의 목적지가 어느 애플리케이션인지 식별할 수 있습니다. 대표적인 프로토콜로는 TCP, UDP가 있습니다.
세션 계층은 양 끝단의 응용 프로세스가 통신을 하기 위한 방법을 제공합니다. TCP/IP 세션을 생성하고 없애는 책임이 있습니다.
표현 계층은 데이터 표현에 대한 독립성 제공과 암호화 역할을 담당합니다.
응용 계층은 최종 목적지로 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행합니다.

🔍 TCP/IP 4계층에 대해 설명해주세요.

네트워크 연결 계층, 인터넷 계층, 전송 계층, 응용 계층이 있습니다.
네트워크 연결 계층은 프레임 단위의 데이터들을 물리주소인 MAC 주소로 전송합니다.
인터넷 계층은 패킷 단위의 데이터들을 논리 주소인 IP 주소로 정확하게 라우팅하여 전송될 수 있도록 합니다.
전송 계층은 통신 노드 간의 연결 제어 및 데이터 송수신을 담당합니다. 기존의 전송 계층과 같다고 보면 됩니다.
응용 계층은 기존의 세션/표현/응용 계층을 합한 계층이고 사용자와 가장 가까운 계층으로 사용자가 응용 프로그램과 소통할 수 있게 하는 계층입니다.

🔍 UDP에 대해 설명해주세요.

UDP는 비연결성, 신뢰성이 없는 4계층 프로토콜입니다. 데이터를 데이터그램 단위로 처리하며 데이터그램은 독립적인 관계를 지닌 패킷을 말합니다.
신뢰성이 보장되지 않기 때문에, 데이터 손실이 발생할 수 있습니다. 영상 스트리밍과 같은 서비스는 신뢰성보다 빠른 속도를 요구하기 때문에 조금 유실되어도 영상의 품질에 지장이 없어 UDP를 사용합니다.

🔍 TCP에 대해 설명해주세요.

TCP는 연결지향, 신뢰성이 있는 4계층 프로토콜입니다. 연결지향 프로토콜이므로 서버와 클라이언트는 통신하기 전에 먼저 연결을 수립해야만 합니다.
이 연결은 3 way handshake라는 과정을 통해서 수립하게 됩니다. 서버는 클라이언트에게 SYN을 보내 클라이언트로 부터 ACK+SYN을 받습니다. 그 다음 그 응답으로 ACK을 보내 연결을 수립합니다.
TCP의 기능으로는 신뢰성 보장흐름제어, 혼잡제어 기능이 있습니다. 신뢰성 보장은 데이터를 보내고 상대방에서 응답이 오는 것을 확인하면 정상적으로 도착했다고 판단하며, 응답이 없을 경우 보낸 데이터가 유실되어 패킷을 재전송하게 됩니다.
흐름 제어는 stop and wait, 슬라이딩 윈도우 방식으로 송신 측의 데이터 전송량을 제어합니다. stop and wait는 매번 전송한 패킷에 대해 확인 응답을 받아야 그 다음 패킷을 보낼 수 있는 방법이고, 슬라이딩 윈도우는 수신측의 슬라이딩 윈도우 크기 만큼 송신측에서 확인 응답없이 세그먼트를 전송할 수 있도록 제어하는 기법입니다.
혼잡제어는 라우터에 데이터가 몰리게 되면 모든 데이터를 처리할 수 없게 되므로 응답이 오지 않을 경우 계속 데이터를 재전송하게 되어 오버플로우나 데이터 유실이 발생할 수 있습니다. 따라서 송신 측에서 네트워크 혼잡을 피하기 위해 데이터의 전송 속도를 강제적으로 줄여 혼잡 제어를 하게 됩니다.
TCP의 연결 해제는 4 way handshake로 진행됩니다. 클라이언트는 서버에게 FIN을 보내고 서버는 응답으로 ACK를 보내고 모든 데이터를 다 전송했다면 FIN을 보냅니다. 클라이언트는 응답으로 ACK를 보내고 서버는 소켓을 닫고 TIME_WAIT 시간이 끝나면 클라이언트도 소켓을 닫아 연결을 종료합니다.

🔍 소켓은 무엇인가요?

소켓은 서버와 클라이언트 사이 통신을 할 수 있도록 해주는 창구 역할을 합니다. 소켓은 프로토콜(TCP, UDP), 호스트의 IP 번호와 포트 번호 그리고 목적지의 IP 번호와 포트 번호로 구성됩니다.

🔍 서브넷팅이란?

서브넷은 A 클래스의 대규모 네트워크를 작은 네트워크로 분할해 브로드캐스트로 전송되는 패킷의 범위를 좁힐 수 있습니다. 이렇게 하면 네트워크를 만들 수 있어 IP 주소를 더 효과적으로 활용할 수 있습니다. 이처럼 네트워크를 분할하는 것을 서브넷팅이라고 하고 불할된 네트워크를 서브넷이라고 합니다. 서브넷팅하면 네트워크 ID, 서브넷 ID, 호스트 ID로 나눠지게 되고 IP 주소를 서브넷팅하게 되면 어디까지가 네트워크 ID이고 호스트 ID인지 알기 위해 서브넷 마스크를 사용합니다.

🔍 로드밸런싱에 대해 설명해주세요.

로드밸런싱은 scale-out된 서버들에 트래픽이 한쪽에 몰리지 않도록 균등하게 분산시켜주는 역할을 합니다.
로드밸런서는 라운드 로빈, 연결 개수가 가장 적은 서버를 선택하거나 사용자 IP를 해싱하여 분배하여 서버를 선택하도록 합니다.
L4 로드밸런싱은 OSI 3, 4 계층의 정보인 IP, MAC, Port 등으로 분산시킵니다. L7 로드밸런싱은 사용자의 요청을 기준으로 분산 시킴으로써 비정상적인 트래픽을 차단할 수 있습니다.

🔍 블로킹/넌블로킹과 동기/비동기 설명해보세요.

함수 A에서 함수 B가 호출된 상황을 가정.
블로킹은 A는 B가 작업이 완료될 때까지 계속 대기하는 것을 말하고, 넌블로킹은 B가 작업을 끝내지 않아도 A에게 제어권을 넘겨 A는 B를 기다리면서 다른 작업을 진행할 수 있습니다.

동기는 A는 B가 작업을 기다리면서 현재 상태가 어떤지 체크하는 방식으로 polling 방식이라고 볼 수 있습니다. 비동기는 B의 수행 상태를 B가 알아서 처리하는 방식으로 callback 방식이라고 볼 수 있습니다.

🔍 주소창에 google.com을 치면 일어나는 일을 설명해보세요.

사용자가 도메인 네임(google.com)을 입력하면, 입력한 URL 주소 중 Domain name 부분을 DNS 서버에서 검색하게 됩니다.
DNS 서버에서 해당 도메인 네임과 맞는 IP 주소를 찾아 사용자가 입력한 URL과 같이 전달합니다.
URL, IP 주소는 HTTP 프로토콜을 사용해 HTTP request 메시지를 생성해 TCP 프로토콜을 사용해 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됩니다.
도착한 HTTP request 메시지는 HTTP 프로토콜을 사용해 웹 페이지 URL 정보로 변환되어 웹 페이지 URL 정보에 해당하는 데이터를 검색합니다.
검색된 웹 페이지 데이터는 HTTP 프로토콜을 사용해 HTTP response 메시지를 생성하고 TCP 프로토콜로 인터넷을 거쳐 사용자의 컴퓨터로 전송됩니다.
도착한 메시지는 HTTP를 사용해 웹 페이지 데이터로 변환되어 브라우저에 의해 사용자가 볼 수 있도록 출력합니다.

post-custom-banner

0개의 댓글