[CS-study][네트워크] 1주차 (TCP/UDP, DNS, OSI 7계층)

장문용·2023년 8월 29일
2

네트워크

목록 보기
1/3
post-thumbnail

TCP/UDP

면접 질문

1. 영상 스트리밍 서비스를 제작한다고 할 때, TCP와 UDP 중 어떤 통신 프로토콜을 사용할 것인지 말하고, 그 이유에 대해서 설명해 주세요.

UDP는 비연결형 프로토콜로, 데이터 전송 시에 TCP보다 더 적은 오버헤드를 가짐
영상 스트리밍에서는 데이터의 신속한 전달이 중요하며, 일부 패킷의 손실이나 지연이 발생해도 재전송이 필요하지 않을 수 있다.
TCP는 재전송과 흐름 제어를 위한 메커니즘을 가지고 있어서 지연이 발생
UDP를 사용하면 데이터 전송이 신속하게 이루어지며, 영상 스트리밍의 실시간성을 보다 효과적으로 유지할 수 있다.
👄💬 TCP는 연결형 프로토콜이기 때문에 재전송을 하고 (데이터 신뢰성) 영상이 잘 끊길 수 있다.(재전송을 통해 손실된 데이터를 다시 전송)
UDP는 비연결형 프로토콜로 신속한 전송을 위해 사용되기 때문에 영상 스트리밍 서비스를 제작에 적합하다.

2. TCP의 전송 제어 기법에 대해 설명해주세요.

  1. 흐름 제어 : 수신자와 송신자 간의 데이터 처리 속도 차이를 조절하기 위해 사용, "수신 윈도우" 크기를 송신자에게 알려준다. 송신자는 이 정보를 토대로 데이터 전송 속도를 조절하여 수신자의 처리 능력을 고려한다.
  2. 혼잡 제어 : 네트워크 내의 혼잡 상태를 감지하고 이에 맞게 송신자의 전송 속도를 조절하는 기법. 송신자는 패킷의 손실을 감지하고, 이를 혼잡 상태로 해석하여 전송 속도를 줄이는 등의 조치를 취함. 혼잡 윈도우 크기 조절 등이 이에 해당
  3. 오류 제어 : 프레임이 손상되었을 경우 재전송
    👄💬 TCP의 전송 제어 기법은 안정적인 전송을 위한 메커니즘으로 1. 데이터를 받았다는 확인 응답 2. 데이터가 만약 손실/손상될 경우 데이터를 재전송 3. 순서를 제어해서 정확한 데이터 전송을 유지 4. 플로우 제어는 수신자는 자신의 처리 속도에 맞추어 송신자가 데이터 보내는 속도를 제어 5. 처리 가능한 데이터 양을 조절(슬라이딩 윈도우)

3. 3-way-handshake와 4-way-handshake의 과정을 각각 설명하고, 주요 차이점을 말하세요

  • 3-way-handshake: 클라이언트가 서버에게 연결 요청(SYN)을 보내고, 서버가 이를 수락하고 연결 요청을 수락한다는 메시지(SYN+ACK)를 보낸 후, 클라이언트가 이에 대한 확인 메시지(ACK)를 보내는 과정
    👄💬 연결 요청(SYN) -> 연결 요청에 응답(SYN+ACK) -> 응답 확인(ACK)
  • 4-way-handshake: 클라이언트나 서버 중 한 쪽이 연결을 종료하고자 할 때 사용됨. 클라이언트가 연결 종료 요청(FIN)을 보내고, 서버는 이에 대한 확인 메시지(ACK)를 보냄. 그 후, 서버도 연결 종료 요청(FIN)을 보내고, 클라이언트는 이에 대한 확인 메시지(ACK)를 보내는 과정
    👄💬 연결 종료 요청(FIN) -> 응답(ACK) 보냄. 종료 요청(FIN) 보냄 -> 응답(ACK) 보냄
  • 주요 차이점: 3-way-handshake는 연결을 수립할 때 사용되며, 4-way-handshake는 연결을 해제할 때 사용됨. 3-way-handshake에서는 클라이언트가 초기 요청을 시작하고, 4-way-handshake에서는 종료 요청을 시작하는 것이 차이점이다.
    👄💬 3-way-handshake는 연결을 수립할 때 사용되며, 4-way-handshake는 연결을 해제할 때 사용된다.

4. TCP 전송과 관련해 Timeout에 대해 설명하고, Timeout을 설정하지 않을 경우의 대해 말해보세요.

Timeout은 패킷이 전송된 후에 응답이 오는데 걸리는 시간을 고려하여 설정된다.송신자는 패킷을 전송한 후 일정 시간동안 응답을 기다리는데, 이 시간을 Timeout이라고 한다. 응답이 Timeout 내에 도착하지 않으면 패킷을 재전송하고 이렇게 함으로써 패킷 손실이나 네트워크 지연으로 인해 발생하는 문제를 처리할 수 있음
👄💬 패킷을 전송한 후 일정 시간동안 기다리는 응답 시간 -> Timeout

  • Timeout을 설정하지 않을 경우, 응답이 전혀 오지 않으면 해당 패킷이 손실되었다고 판단하고 재전송해야 하지만, Timeout이 없다면 재전송이 이뤄지지 않을 수 있다. 이로 인해 데이터 전달의 신뢰성이 떨어지며, 네트워크 지연 등으로 인한 문제에 대응할 수 없게 된다.
    👄💬 TCP 통신에서 Timeout을 설정하지 않은 경우에는 데이터 전송과 연결 관련 작업들이 무한정 기다릴 수 있는 상황이 발생할 수 있다.

5. TCP와 UDP의 신뢰성의 차이점이 발생하는 이유에 대해서 말해보세요.

-흐름 제어 및 혼잡 제어: TCP는 흐름 제어와 혼잡 제어 메커니즘을 내장하고 있어 패킷 손실이나 혼잡 상황에서도 데이터의 정확한 전송을 유지할 수 있습니다. 반면, UDP는 이러한 기능을 제공하지 않기 때문에 데이터 손실이나 혼잡으로 인한 데이터 유실이 발생할 수 있습니다.

  • 재전송 메커니즘: TCP는 재전송을 통해 손실된 패킷을 다시 전송하여 데이터의 완전성을 보장한다. UDP는 이러한 메커니즘이 없어 재전송이 보장되지 않습니다.
  • 연결 상태: TCP는 연결형 프로토콜로, 연결을 수립하고 종료하는 과정을 거치고 이로써 상대방과의 통신을 관리하며 신뢰성을 확보한다.
    👄💬 (위의 질문들 답변 참고해서 답하기)

DNS

면접 질문

1. www.naver.com 이라는 도메인 이름을 처음 받았을 때 무슨 일들이 일어날까요? (과정 설명) (www.naver.com에는 한번도 방문한 적이 없습니다.)

  1. 사용자가 웹 브라우저에서 "www.naver.com"을 입력함
  2. 사용자의 컴퓨터(클라이언트)는 먼저 자신의 로컬 캐시(cache)에서 해당 도메인 이름에 대한 IP 주소를 찾는데 방문한 적이 없기 때문에 로컬 캐시에는 해당 정보가 없다.
  3. 로컬 캐시에 정보가 없을 경우, 클라이언트는 자신의 DNS 설정에 지정된 DNS 서버에 "www.naver.com"에 대한 IP 주소를 요청한다.
  4. 클라이언트의 DNS 서버는 루트 DNS 서버부터 시작하여 계층적으로 DNS 조회를 수행한다.
  5. 루트 DNS 서버에서는 ".com" 도메인의 네임서버 정보를 반환한다.
  6. 클라이언트의 DNS 서버는 ".com" 도메인의 네임서버에 "naver.com" 도메인에 대한 IP 주소를 요청한다.
  7. ".com" 도메인의 네임서버는 "naver.com" 도메인의 네임서버 정보를 반환한다.
  8. 클라이언트의 DNS 서버는 "naver.com" 도메인의 네임서버에 "www.naver.com"에 대한 IP 주소를 요청한다.
  9. "naver.com" 도메인의 네임서버는 "www.naver.com"에 대한 IP 주소를 반환한다.
  10. 클라이언트의 DNS 서버는 이 IP 주소를 로컬 캐시에 저장하고, 동시에 클라이언트에게 IP 주소를 반환한다.
  11. 클라이언트는 이제 해당 IP 주소를 사용하여 네이버 웹 서버에 접속하고 웹 페이지를 요청한다.
    👄💬 클라이언트는 자신의 DNS 설정에 지정된 DNS 서버에 "www.naver.com"에 대한 IP 주소를 요청 -> 클라이언트의 DNS 서버는 루트 DNS 서버부터 시작하여 계층적으로 DNS 조회를 수행해서 IP 주소를 반환 (루트 DNS 서버에서는 ".com" 도메인의 네임서버 정보를 반환 -> .com" 도메인의 네임서버는 "naver.com" 도메인의 네임서버 정보를 반환 -> "naver.com" 도메인의 네임서버는 "www.naver.com"에 대한 IP 주소를 반환) -> 해당 IP 주소를 사용하여 네이버 웹 서버에 접속하고 웹 페이지를 요청

2. DNS의 구성 요소에 대해 설명해주세요.

  • DNS 클라이언트: 사용자의 컴퓨터나 기기로부터 DNS 요청을 받아 해당 도메인 이름에 대한 IP 주소를 조회
  • DNS 서버: 도메인 이름과 IP 주소의 매핑 정보를 관리하고, DNS 클라이언트로부터 받은 요청에 대해 해당 정보를 반환
  • DNS 레코드: 도메인 이름과 IP 주소의 매핑 정보를 저장하는 데이터베이스 항목. (주요한 레코드 유형으로는 A 레코드(IPv4 주소 매핑), AAAA 레코드(IPv6 주소 매핑), CNAME 레코드(별칭 설정), MX 레코드(메일 서버 설정) 등이 있다.)
  • 루트 DNS 서버: DNS 조회의 시작점으로, 최상위 도메인 정보를 관리하고 다른 DNS 서버의 위치 정보를 제공
  • 최상위 도메인 서버: .com, .org 등과 같은 최상위 도메인 정보를 관리하고, 중간 단계의 네임서버 위치 정보를 제공
  • 중간 단계 도메인 서버: 실제 도메인에 대한 IP 주소 정보를 관리하고, 하위 도메인 서버의 위치 정보를 제공
    👄💬 1. 웹 사이트를 나타내는 도메인 이름 2. 도메인 이름을 IP 주소로 변환해주는 DNS 서버. 3. 도메인 이름과 IP 주소의 매핑 정보를 담고 있는 DNS 레코드. 4. 도메인 이름을 IP 주소로 변환하기 위해 요청하는 컴퓨터나 장치인 DNS 클라이언트
    +)
  • 도메인 네임 스페이스 : 도메인 이름 저장 분산
  • 네임 서버 : 도메인 이름의 IP 주소를 찾기
  • 리졸버 : DNS 클라이언트 요청을 네임 서버로 전달, 찾은 정보를 클라이언트에게 제공

3. DNS 서버에 IP주소를 요청할 때 UDP를 사용하는 이유는?

  • DNS 서버에 IP 주소를 요청할 때 UDP를 사용하는 이유는 DNS 조회가 매우 빠르게 처리되어야 하며, TCP와 비교하여 더 가볍고 효율적인 프로토콜이기 때문이다.
  • DNS는 단순한 정보 조회를 위한 작업이며, 일반적으로 작은 데이터 패킷으로 처리된다. TCP는 연결 설정과 해제 과정이 필요하기 때문에 더 무거운 오버헤드를 가진다. UDP는 비연결형 프로토콜로, 빠른 속도와 적은 부하를 유지하면서 정보 조회를 처리하는 데 적합하다.
    👄💬 UDP는 비연결형 프로토콜로, 빠른 속도와 적은 부하를 유지하면서 정보 조회를 처리하는 데 적합합니다.

4. (멀티 도메인 환경에서 트러스트) 네이버와 네이버 쇼핑에 대해 도메인적 관점에서 설명하시오.

  • 도메인 관점에서는 하나의 기업에서 다양한 서비스를 제공하는 멀티 도메인 환경이다.
  • 네이버가 자체적으로 네이버 쇼핑 서비스를 운영하기 때문에 두 도메인 간에 일정 수준의 신뢰 관계가 있을 것으로 예상할 수 있다.
    -> 멀티 도메인 환경에서의 트러스트는 여러 개의 도메인이나 서브도메인이 상호간에 신뢰 관계를 형성하고, 서로의 정보나 서비스에 대해 안전하고 신뢰성 있는 접근을 허용하는 것을 의미한다.
  • 멀티 도메인 환경에서 DNS는 트러스트 구축과 관련하여 중요한 역할을 한다. DNS는 각 도메인의 소유자가 해당 도메인에 대한 권한을 갖도록 해준다.
  • DNS는 트러스트 구축과 관련하여 중요한 역할을 한다.
  • DNS는 멀티 도메인 환경에서 서로 다른 도메인 간의 신뢰 관계를 형성하고, 사용자 및 서비스의 보안 및 안전성을 유지하는 데 도움을 준다.
  • 상위 도메인 서버는 하위 도메인 서버에 대한 신뢰성을 검증하고 승인함으로써, 도메인 간의 신뢰 관계를 형성할 수 있다.
    👄💬 DNS 시스템 내에서 트러스트는 멀티 도메인 환경에서 도메인 간의 신뢰 관계를 형성하고, 사용자 및 서비스의 보안 및 안전성을 유지하는 데 도움을 줍니다.

5. DNS ROUND ROBIN 방식에 대해서 설명해주세요.

DNS Round Robin 방식은 여러 개의 서버 IP 주소를 하나의 도메인 이름에 대해 번갈아가며 반환하는 방식이다.

  • 클라이언트가 해당 도메인 이름에 대한 IP 주소를 요청할 때마다 DNS 서버는 등록된 IP 주소 중 하나를 선택하여 반환한다.
  • 이를 통해 로드 밸런싱 효과를 얻을 수 있으며, 여러 대의 서버로 트래픽을 분산시킬 수 이다.
  • 하지만 이 방식은 서버 상태를 고려하지 않으므로 모든 서버가 동일한 부하로 처리되지 않을 수 있고, 특정 서버에 장애가 발생하더라도 DNS 서버에서 이를 감지하지 못하고 계속 해당 IP 주소를 반환할 수 있다.
    👄💬 여러 개의 서버 IP 주소를 하나의 도메인 이름에 대해 번갈아가며 반환하는 방식입니다. 이로 인해 웹 서버 간의 부하가 균등하게 분산되는 효과를 얻을 수 있습니다. 이 방식의 단점 중 하나는 서버의 상태나 성능에 관계 없이 순차적으로 IP 주소를 반환한다는 점입니다.

OSI 7계층

면접 질문

1. OSI 7계층을 활용하여 Application Layout에서 받아온 사용자의 Data가 어떻게 다른 컴퓨터로 전송되는지 설명해주세요.

  • Application Layer (7계층): 사용자 데이터는 응용 프로그램(웹 브라우저, 이메일 클라이언트 등)에서 생성됩니다. 데이터에는 사용자의 요청, 파일 내용, 메일 본문 등이 포함될 수 있습니다.
  • Presentation Layer (6계층): 데이터의 형식이나 표현을 준비합니다. 데이터를 압축, 암호화, 변환하는 등의 작업이 이루어질 수 있습니다.
  • Session Layer (5계층): 세션 관리 및 동기화 작업을 수행합니다. 데이터의 세션 설정, 유지, 종료 등이 이루어집니다.
  • Transport Layer (4계층): 데이터의 전송을 관리하며, 데이터 분할, 순서 보장, 흐름 제어 등을 수행합니다. 사용자 데이터는 세그먼트로 분할되고, 각 세그먼트에 헤더가 추가됩니다.
  • Network Layer (3계층): 라우팅과 패킷 전송을 담당합니다. 세그먼트와 헤더가 패킷으로 캡슐화되고, 목적지 IP 주소에 따라 최적 경로를 결정하여 다음 라우터로 전송됩니다.
  • Data Link Layer (2계층): 물리적인 매체를 통해 프레임 단위로 데이터를 전송합니다. 데이터를 프레임으로 캡슐화하고, 물리적인 주소(MAC 주소)를 사용하여 다음 라우터로 전달됩니다.
  • Physical Layer (1계층): 전기적 신호로 데이터를 변환하고 물리적 매체(유선, 무선 등)를 통해 실제로 전송합니다.
    👄💬 L1 물리 계층 -> L2 데이터 링크 계층(프레임 단위로 데이터를 전송) -> L3 네트워크 계층(IP 주소를 통해 경로를 선택) -> L4 전송 계층(세그먼트로 분할하여 전송) -> L5 세션 계층 -> L6 표현 계층(데이터 형식 변환, 암호화 등을 수행하여 데이터를 표현) -> L7 응용 계층(응용 프로그램을 위한 데이터 준비)

2. 네트워크 계층과 전송 계층의 차이점에 대해 설명해주세요.

  • 네트워크 계층: 라우팅과 패킷 전송을 담당합니다. 목적지 IP 주소를 통해 최적 경로를 결정하고 다음 라우터로 패킷을 전송합니다. 라우팅 테이블을 사용하여 패킷의 경로를 결정하며, 대표적인 프로토콜로 IP가 있습니다.
    -전송 계층: 논리적 연결을 제공하고 데이터의 전송을 관리합니다. 흐름 제어, 오류 검출 및 복구, 데이터 순서 보장 등을 수행하여 신뢰성 있는 데이터 전송을 보장합니다. TCP(연결형)와 UDP(비연결형) 프로토콜이 이 계층에서 동작합니다.
    👄💬 네트워크 계층은 IP 주소를 사용하여 경로 선택과 라우팅을 처리.
    전송 계층은 포트 번호와 연결을 설정하여 데이터의 분할과 전송을 관리합니다.

3. OSI 7계층과 TCP/IP 4계층을 비교하여 설명해주세요

  • OSI 7계층:
    Application Layer
    Presentation Layer
    Session Layer
    Transport Layer
    Network Layer
    Data Link Layer
    Physical Layer
  • TCP/IP 4계층:
    Application Layer (상위 3개의 OSI 계층을 포함)
    Transport Layer (Transport 계층)
    Internet Layer (Network 계층)
    Network Interface Layer (Data Link 및 Physical 계층)
  • OSI 7계층과 TCP/IP 4계층은 서로 다른 계층 구조를 가지고 있지만, TCP/IP 모델은 OSI 모델을 기반으로 만들어진 구조로서, 기능적으로 많은 유사점을 가지고 있다. 주요 차이점은 프레젠테이션 계층과 세션 계층이 TCP/IP 모델에서는 Application 계층으로 통합되었고, 더 간소화된 구조를 가지고 있다는 점이다.
    👄💬 TCP/IP는 OSI 모델을 더 간소화하고 실제 인터넷 프로토콜 스택으로 활용되며, 네트워킹을 위해 더 일반적으로 사용됩니다 => 간결성과 효율성

4. 각 계층의 예시 프로토콜을 1개 이상씩 말하세요

Application Layer: HTTP, DNS, FTP, SMTP
Transport Layer: TCP, UDP
Network Layer: IP, ICMP
Data Link Layer: Ethernet, PPP
Physical Layer: Ethernet (10BASE-T, 100BASE-TX 등)

5. 방화벽은 몇 계층에서 작동할까요?

  • 네트워크 계층에서 작동합니다. 네트워크 계층의 방화벽은 패킷을 검사하고 필터링하여 수신 및 송신 패킷의 허용 또는 차단을 결정합니다. 이는 보안 정책에 따라 특정 포트, IP 주소, 프로토콜 등에 대한 접근을 제어하거나, 악성 패킷을 차단하는 역할을 수행합니다.
  • 방화벽은 OSI (Open Systems Interconnection) 모델의 네트워크 보안을 위한 여러 계층에서 작동할 수 있습니다. 주로 다음과 같은 계층에서 작동할 수 있습니다:
  • 데이터 링크 계층 (Layer 2): 방화벽은 MAC 주소를 기반으로 네트워크 트래픽을 필터링할 수 있습니다. 이 계층에서는 주로 ARP 스푸핑과 같은 공격을 방어하는 역할을 합니다.
  • 네트워크 계층 (Layer 3): IP 주소를 기반으로 패킷을 검사하거나 블랙리스트 된 IP 주소나 허용된 IP 주소만 통과시키는 등의 작업을 수행합니다. 이로써 네트워크 레벨에서의 보안을 강화합니다.
  • 전송 계층 (Layer 4): 방화벽은 포트 번호와 같은 전송 계층의 정보를 사용하여 트래픽을 검사하거나 제어합니다. 특정 포트를 통한 트래픽 차단 등을 수행할 수 있습니다.
  • 응용 계층 (Layer 7): 이 계층에서 방화벽은 트래픽을 특정 애플리케이션의 프로토콜 또는 컨텐츠와 관련하여 검사할 수 있습니다. 예를 들어, 웹 애플리케이션 방화벽은 HTTP 요청 및 응답을 분석하여 악성한 행위를 차단합니다.
  • 종합적으로 말하면, 방화벽은 OSI 7계층 모델의 여러 계층에서 작동하여 네트워크와 시스템을 다양한 보안 위협으로부터 보호합니다. 어느 계층에서 작동할지는 구체적인 방화벽의 유형과 설정에 따라 다를 수 있습니다.
    👄💬 방화벽은 네트워크 계층과 전송 계층에서 작동할 수 있습니다.
profile
FE 개발자

0개의 댓글