기술나눔

일반적인 컴퓨터 네트워크 면접 질문 (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

컴퓨터 네트워크 인터뷰의 일반적인 질문에는 네트워크 프로토콜, 네트워크 아키텍처, 네트워크 보안, 데이터 전송 등 다양한 수준이 포함됩니다. 다음은 몇 가지 일반적인 질문에 대한 자세한 설명입니다.

1. OSI 7계층 모델이란 무엇입니까? 각 레이어의 기능은 무엇입니까?

OSI 7계층 모델국제표준화기구(ISO)에서 제정한 컴퓨터나 통신 시스템 간의 상호 연결을 위한 표준 시스템으로, 위에서부터 다음과 같습니다.

  1. 애플리케이션 레이어: HTTP, FTP, SMTP 및 기타 프로토콜과 같은 애플리케이션에 대한 대화형 서비스를 제공합니다.
  2. 프리젠테이션 레이어: 데이터 표현, 보안 및 압축, 애플리케이션 계층 데이터를 네트워크 전송에 적합한 형식으로 변환합니다.
  3. 세션 레이어: 세션을 설정, 관리, 종료하고 두 세션 프로세스 간의 통신을 구성 및 조정합니다.
  4. 전송 계층: 안정적인 데이터 전송을 위해 TCP 및 UDP 프로토콜을 포함한 두 호스트 프로세스 간의 통신을 위한 데이터 전송 서비스를 제공하는 역할을 담당합니다.
  5. 네트워크 계층: 적시에 데이터를 전송할 수 있도록 적절한 라우팅 및 스위칭 노드를 선택합니다. 주요 프로토콜은 IP입니다.
  6. 데이터링크 계층: 인접한 두 노드 간에 데이터를 전송할 때 네트워크 계층에서 전달된 IP 데이터그램을 프레임으로 조립하고 필요한 제어 정보를 추가합니다.
  7. 물리층: 인접한 컴퓨터 노드 간 비트 스트림의 투명한 전송을 실현하여 전송 매체와 물리적 장치의 차이를 최대한 보호합니다.

2. TCP와 UDP의 차이점은 무엇입니까?

TCP(전송 제어 프로토콜)와 UDP(사용자 데이터그램 프로토콜)는 모두 전송 계층 프로토콜입니다. 주요 차이점은 다음과 같습니다.

  1. 연결성: TCP는 연결 지향 프로토콜로 데이터를 전송하기 전에 연결을 설정해야 하지만, UDP는 연결이 없는 프로토콜이므로 데이터를 전송하기 전에 연결을 설정할 필요가 없습니다.
  2. 신뢰할 수 있음: TCP는 안정적인 전송을 제공하고 시퀀스 번호, 확인 응답 및 시간 초과 재전송과 같은 메커니즘을 통해 올바른 데이터 전송을 보장합니다. UDP는 신뢰성을 보장하지 않으며 데이터가 손실되거나 순서에 맞지 않게 도착할 수 있습니다.
  3. 전송 효율: TCP는 연결을 설정하고 신뢰성 검사를 수행해야 하기 때문에 전송 효율성이 상대적으로 낮은 반면 UDP는 이러한 오버헤드가 없으며 전송 효율성이 더 높습니다.
  4. 애플리케이션 시나리오: TCP는 파일 전송, 웹 브라우징 등과 같이 안정적인 전송이 필요한 애플리케이션 시나리오에 적합합니다. UDP는 높은 실시간 성능이 필요하고 라이브 비디오와 같이 일정량의 데이터 손실을 허용할 수 있는 애플리케이션 시나리오에 적합합니다. 방송, 온라인 게임 등

3. HTTP와 HTTPS의 차이점은 무엇입니까?

HTTP(Hypertext Transfer Protocol)와 HTTPS(Hypertext Transfer Protocol Secure)의 주요 차이점은 보안입니다.

  1. 안전: HTTP는 일반 텍스트를 전송하며 데이터는 쉽게 가로채고 변조될 수 있지만, HTTPS는 SSL/TLS 프로토콜 계층을 HTTP에 추가하여 데이터를 암호화하고 전송하므로 데이터 전송의 보안이 보장됩니다.
  2. 포트 번호: HTTP는 기본적으로 포트 80을 사용하고, HTTPS는 기본적으로 포트 443을 사용합니다.
  3. 성능: HTTPS는 암호화 및 복호화 작업이 필요하므로 HTTP에 비해 성능이 저하됩니다.

4. TCP 3방향 핸드셰이크와 4방향 웨이브의 프로세스는 무엇입니까?

TCP 3방향 핸드셰이크프로세스는 다음과 같습니다.

  1. 클라이언트는 서버에 SYN 패킷(동기화 시퀀스 번호)을 보내고 SYN_SENT 상태로 들어가 서버의 확인을 기다립니다.
  2. 서버는 SYN 패킷을 받은 후 클라이언트의 SYN(ack=j+1)을 확인하고 SYN 패킷(즉, SYN+ACK 패킷)을 보낸다. 이때 서버는 SYN_RCVD 상태에 들어간다.
  3. 클라이언트는 서버로부터 SYN+ACK 패킷을 수신한 후 서버에 확인 패킷 ACK(ack=k+1)를 보냅니다. 패킷이 전송된 후 클라이언트와 서버는 ESTABLISHED 상태에 진입하고 3방향 통신을 완료합니다. 악수.

TCP 웨이브가 4번 발생합니다.프로세스는 다음과 같습니다.

  1. 클라이언트는 클라이언트에서 서버로의 데이터 전송을 종료하기 위해 FIN을 보내고 클라이언트는 FIN_WAIT_1 상태로 들어갑니다.
  2. 서버는 FIN을 수신한 후 클라이언트에게 ACK를 전송하고, 확인 시퀀스 번호는 수신된 시퀀스 번호 + 1(SYN과 동일, 하나의 FIN이 하나의 시퀀스 번호를 차지함)이며, 서버는 CLOSE_WAIT 상태에 들어갑니다.
  3. 서버는 클라이언트와의 연결을 끊고 클라이언트에게 FIN을 전송하며, 서버는 LAST_ACK 상태로 진입합니다.
  4. FIN을 수신한 후 클라이언트는 서버에 시퀀스 번호가 수신된 시퀀스 번호 + 1임을 확인하는 ACK를 보내고 클라이언트는 TIME_WAIT 상태에 진입합니다. 서버는 ACK를 받은 후 연결을 닫습니다. 클라이언트가 2MSL을 기다린 후에도 여전히 응답을 받지 못하면 CLOSED 상태로 들어갑니다.

5. 왜 TCP에서는 두 번의 핸드셰이크가 아닌 세 번의 핸드셰이크가 필요합니까?

TCP가 양방향 핸드셰이크 대신 3방향 핸드셰이크를 요구하는 주된 이유는 양 당사자가 데이터를 주고받을 수 있는 능력을 확보하여 안정적인 연결을 설정하기 위한 것입니다. 구체적으로:

  • 첫 번째 핸드셰이크: 클라이언트가 SYN 패킷을 보내고 서버는 클라이언트의 전송 기능을 확인합니다.
  • 두 번째 핸드셰이크: 서버는 SYN+ACK 패킷을 보내고 클라이언트는 서버의 수신 및 전송 기능을 확인합니다.
  • 세 번째 핸드셰이크: 클라이언트가 ACK 패킷을 보내고 서버는 클라이언트의 수신 능력을 확인합니다.

두 번의 핸드셰이크만 있는 경우 다음과 같은 상황이 발생할 수 있습니다. 클라이언트가 연결 요청을 보냈지만 연결 요청 메시지가 손실되어 확인을 받지 못하여 클라이언트가 연결 요청을 다시 전송합니다. 나중에 확인이 수신되고 연결이 설정되었습니다. 데이터 전송이 완료된 후 연결이 해제되고 클라이언트는 총 2개의 연결 요청 세그먼트를 보냅니다. 이 중 첫 번째 세그먼트는 손실되고 두 번째 세그먼트는 서버에 도달합니다. 그러나 첫 번째 손실된 세그먼트는 일부 네트워크 노드에만 오랫동안 머물렀고, 연결이 해제된 후 일정 시간이 지나 서버에 도달할 때까지 지연되었습니다. 이때 서버는 클라이언트가 새로운 세그먼트를 발행했다고 잘못 생각했습니다. 연결 요청 후 연결 설정에 동의하는 확인 메시지 세그먼트가 클라이언트에 전송됩니다. 이때 클라이언트가 데이터 요청을 보내지 않았기 때문에 서버는 클라이언트가 데이터를 보낼 때까지 기다리게 되어 리소스가 낭비됩니다.

6. 일반적으로 사용되는 HTTP 요청 방법은 무엇입니까? 이들 사이의 차이점과 용도는 무엇입니까?

일반적으로 사용되는 HTTP 요청 방법에는 GET, POST, PUT, DELETE, CONNECT, OPTIONS 및 TRACE가 있으며 그중 GET 및 POST가 가장 일반적으로 사용됩니다.

  • 얻다 : 서버에 데이터를 가져오기 위한 요청을 보내는 데 사용됩니다. 매개변수는 URL에 포함되며 요청된 데이터의 양이 크지 않고 보안 요구 사항이 높지 않은 시나리오에 적합합니다.
  • 우편 : URL로 지정된 리소스에 데이터를 제출하는 데 사용됩니다. 매개변수는 요청 본문을 통해 전달되며, 이는 대량의 데이터가 제출되거나 보안 요구 사항이 높은 시나리오에 적합합니다.

PUT 및 DELETE와 같은 다른 요청 방법은 서버의 데이터 수정, 서버의 리소스 삭제 등에 사용됩니다. 이러한 각 요청 방법에는 고유한 특정 용도와 적용 가능한 시나리오가 있습니다.

위는 컴퓨터 네트워크 면접에서 흔히 나오는 질문에 대한 자세한 설명입니다. 이러한 질문은 네트워크 프로토콜, 네트워크 아키텍처, 데이터 전송 등 다양한 측면을 다루며 응시자의 컴퓨터 네트워크 지식을 검사하는 데 중요한 부분입니다.