Interview - Network

Interview - Network

Q1. TCP 3-way handshake에 대해서 설명해주세요.

TCP 3-way Handshake는 TCP/IP 네트워크에서 안정적이고 연결 지향적인 통신을 설정하기 위한 절차입니다.

TCP의 3-way Handshaking 과정

[STEP 1]

우선 클라이언트가 서버에 연결을 요청하는 SYN 세그먼트를 보냅니다. 이 세그먼트에는 초기 순서 번호와 윈도우 크기 정보가 포함되어 있습니다. 클라이언트는 SYN를 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 됩니다.

[STEP 2]

서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK과 SYN Flag가 설정된 세그먼트를 클라이언트에게 보냅니다. 이 세그먼트는 서버의 초기 순서 번호와 클라이언트의 초기 순서 번호에 대한 응답(ACK = 클라이언트의 초기 순서 번호 + 1)을 포함합니다. 그리고 나서 서버는 클라이언트가 다시 ACK으로 응답을 기다리는 SYN_RECEIVED 상태가 됩니다.

[STEP 3]

클라이언트는 서버의 응답을 확인하고, ACK Flag가 설정된 세그먼트를 서버에 보냅니다. 이 세그먼트는 서버의 순서 번호에 대한 응답(ACK = 서버의 초기 순서 번호 + 1)을 포함합니다. 이 절차가 완료되면 클라이언트와 서버 간에 신뢰할 수 있는 연결이 설정되고, 데이터 전송이 시작될 수 있습니다. 이때 서버와 클라이언트는 모두 ESTABLISHED 상태가 됩니다.


Q2. TCP 4-way handshake에 대해서 설명해주세요.

3-Way handshake는 TCP의 연결을 초기화 할 때 사용된다면, 4-Way handshake는 세션을 종료하기 위해 수행되는 절차입니다.

TCP의 4-way Handshaking 과정

[STEP 1]

클라이언트가 연결을 종료하겠다는 FIN Flag를 전송합니다.

[STEP 2]

서버는 일단 확인 메세지를 보내고 자신의 통신이 끝날 때까지 기다리는데 이 상태가 TIME_WAIT 상태입니다.

[STEP 3]

서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN Flag를 전송합니다.

[STEP 4]

클라이언트는 확인했다는 메세지를 보냅니다.


Q3. 리버스 프록시와 포워드 프록시의 차이점에 대해 설명해주세요.

포워드 프록시는 주로 클라이언트 측에 위치하여, 사용자가 인터넷에 접근할 때 중개자 역할을 합니다.

예를 들어, 회사 내부 네트워크에서 근무하는 직원이 외부 웹사이트에 접속하려고 할 때, 포워드 프록시 서버를 통해 요청이 전달됩니다. 이 과정에서 사용자의 실제 IP 주소는 숨겨지고, 프록시 서버의 IP 주소가 대신 사용됩니다.

사용자의 실제 IP를 숨김으로써 개인정보 보호와 보안 측면에서 큰 장점을 제공합니다.

또한 캐싱을 통해 네트워크 성능을 향상시킵니다. 자주 요청되는 웹 페이지나 파일을 프록시 서버에 저장해두면, 동일한 요청이 다시 들어올 때 빠르게 응답할 수 있어 네트워크 대역폭을 절약할 수 있습니다.

이와 함께 보안 강화 기능도 포워드 프록시의 중요한 역할 중 하나입니다. 악성 웹사이트나 불법적인 콘텐츠에 대한 접근을 차단하여 네트워크 보안을 강화하고, 바이러스나 악성 코드의 유입을 예방할 수 있습니다.

리버스 프록시는 서버 측에 위치하여 외부에서 들어오는 클라이언트의 요청을 내부 서버로 전달하는 역할을 합니다. 리버스 프록시의 핵심 기능 중 하나는 로드 밸런싱입니다. 다수의 백엔드 서버로 트래픽을 분산시켜 서버 과부하를 방지하고, 서비스의 고가용성을 유지할 수 있습니다.

또한 외부에서 직접 백엔드 서버에 접근하지 못하게 하여 DDoS 공격이나 해킹 시도로부터 서버를 보호할 수 있습니다.

SSL 종료는 리버스 프록시의 또 다른 중요한 기능입니다. SSL/TLS 암호화를 리버스 프록시에서 처리함으로써 백엔드 서버의 부담을 줄이고, 중앙에서 인증서를 관리할 수 있습니다.

또한, 리버스 프록시는 캐싱 및 콘텐츠 최적화 기능을 통해 정적 콘텐츠를 캐싱하여 응답 속도를 향상시키고 서버 부하를 줄일 수 있습니다.


Q4. 클래스풀 IP 주소 체계에 대해서 설명해주세요.

클래스풀 주소 체계(Classful Addressing) 은 IP 주소를 규격화된 크기별로 구분시키는 방식입니다. IP 주소를 클래스(A,B,C 등)별로 규격화(유형화)시켜, 쉽게 식별할 수 있도록 합니다.

클래스풀 주소 체계는 클래스별로 네트워크 크기가 고정되어 있기 때문에 다수의 IP 주소가 낭비될 수 있다는 한계점이 존재합니다. 예를 들어, 특정 조직에 컴퓨터가 255개라면 C 클래스 주소를 사용하지 못하고, B 클래스를 사용해야 하는데요. 이러한 상황에서 IP 주소의 낭비가 발생할 수 있습니다. 이러한 문제를 해결하고, 더욱 유동적인 방식으로 네트워크를 구획할 수 있도록 클래스리스 주소 체계가 등장했습니다.


Q5. 클래스리스 주소 체계는 무엇인가요?

클래스리스 주소 체계는(Classless Addressing) 클래스가 아닌 서브넷 마스크를 이용해 네트워크 주소와 호스트 주소를 구분하는 IP 주소 체계입니다. 이때, 서브넷 마스크는 네트워크 구분을 위한 비트열을 의미합니다. 해당 비트열에서 네트워크 주소는 연속된 1(이진수), 호스트 주소는 연속된 0(이진수)으로 표현합니다. 특정 IP 주소와 서브넷 마스크를 비트연산을 수행하면, 네트워크 주소를 알아낼 수 있습니다. 예를 들어, 서브넷 마스크가 255.255.255.0, IP 주소가 168.168.168.168인 경우, 비트연산을 수행하면 네트워크 주소인 168.168.168.0 를 알아낼 수 있습니다. 이 경우, 1옥텟을 호스트 주소로 사용할 수 있습니다.

서브넷 마스크를 표기할 때는 CIDR(Classless Inter Domain Routing Notation) 표기법을 사용할 수 있는데요. IP 주소/서브넷 마스크 비트열의 1의 수 형식으로 표현합니다. IP 주소가 168.168.168.168이며, 서브넷 마스크가 255.255.255.0인 경우에는 168.168.168.168/24 와 같이 표기할 수 있습니다.


Q6. NAT 기능을 사용하는 이유를 알고 계신가요?

사설 IP 주소만을 가지고 외부 네트워크와 통신하기 어렵기 때문에 이 문제를 해결하기 위해서 라우터 혹은 공유기의 NAT(Network Address Translation) 기능을 사용하는데요. NAT는 IP 주소를 변환하는 기술입니다. 해당 기능을 사용하면, 사설 IP 주소를 외부 네트워크에 사용되는 공인 IP 주소로 변환하여 외부 네트워크와 통신할 수 있습니다.

예를 들어, 사설 네트워크에서 출발한 패킷에 존재하는 사설 IP 주소(송신지)가 라우터를 거쳐 공인 IP로 변경됩니다. 그리고, 외부 네트워크로부터 출발한 패킷에 존재하는 공인 IP 주소(수신지)는 NAT 기능을 통해서, 사설 IP 주소로 변경되고 사설 네트워크 속 호스트에게 전달됩니다. NAT에서 주소 변환을 하기 위해서 내부적으로 공인 IP 주소와 사설 IP 주소가 대응되어 있는 NAT 변환 테이블을 사용합니다.


Q7. 정적 IP 주소 할당 방식과 동적 IP 주소 할당 방식의 차이점을 설명해주세요.

네트워크에서 호스트에게 IP를 할당하는 방식은 크게 정적 할당 방식과 동적 할당 방식이 존재합니다.

정적 할당 방식은 호스트에게 IP를 할당할 때 수동으로 설정하는 것을 의미합니다. 일반적으로 정적으로 IP를 할당하기 위해서는 부여하고자 하는 IP 주소, 자신의 네트워크의 서브넷마스크, 자신의 게이트웨이, DNS 주소가 필요합니다. 만약, IP 주소를 정적으로만 할당한다면 호스트의 수가 많아질수록 IP 할당이 번거로워질 수 있으며, 중복 IP를 입력하는 등 실수를 유발할 수 있습니다. 이러한 경우에 동적 할당 방식을 사용할 수 있는데요.

동적 할당은 호스트 IP를 자동으로 할당하는 방식이라는 점에서 정적 할당 방식과 차이가 있습니다. 동적 할당 방식은 주로 DHCP(Dynamic Host Configuration Protocol) 을 사용합니다. 동적 할당 방식은 DHCP를 이용해 현재 사용하지 않는 IP를 호스트에게 임대해줍니다. 따라서, 동적 할당 방식을 사용하는 경우에는 IP 주소가 고정적이지 않으며, 바뀔 가능성이 존재합니다.


Q8. DHCP를 이용한 IP 주소 할당 과정은 어떻게 되나요?

DHCP를 이용한 동적 할당 방식은 호스트와 DHCP 서버(일반적으로 라우터)간에 통신으로 이루어집니다. 크게 4가지 단계로 나누어 IP 주소를 할당합니다.

  • Discover 단계에서 호스트는 Discover 메시지를 브로드캐스팅하여 DHCP 서버를 찾습니다.
  • Offer 단계에서 DHCP 서버는 Offer 메시지를 호스트에게 전송합니다. Offer 메시지에는 호스트에게 할당해 줄 IP 주소와 임대 기간이 포함되어 있습니다.
  • Request 단계에서 호스트는 DHCP Offer 메시지에 대한 응답을 수행합니다. 호스트는 Request Message를 브로드캐스팅합니다.
  • Acknowledgment 단계에서 DHCP 서버는 ACK 메시지를 호스트에게 전송하여 IP 임대를 승인합니다.

Q9. DNS란 무엇인가요?

IP 주소는 변환될 수 있으며, 기억하기 어렵기 때문에 대부분의 웹 서비스는 도메인 주소를 사용합니다. DNS(Domain Name System) 는 도메인 주소에 대응되는 원격 호스트 IP 주소를 관리하고 질의할 수 있는 시스템 혹은 이를 이용하기 위한 프로토콜을 의미합니다.


이 페이지는 면접 준비를 위한 정리 페이지입니다.