면접 예상 질문(5)(컴퓨터 네트워크(1))

최동혁·2023년 4월 6일
2

면접 질문

목록 보기
7/9

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

  • OSI 7계층은 네트워크 통신을 표준화한 모델로 통신 시스템은 7단계로 나누어 설명한 것입니다.
  • 하지만 OSI 모델은 실무적으로 이용하기에 복잡해서 실제로는 이를 단순화한 TCP/IP 4계층이 사용됩니다.

OSI에서 하드웨어적인 측면을 다루는 계층은 무엇이 있을까요?

  • 1계층 물리 계층과 2계층 데이터 링크 계층이이 하드웨어적인 측면을 다룹니다.
  • 1계층 물리 계층은 물리적으로 데이터를 전송해서 하드웨어적인 측면을 다룹니다.
  • 하지만 데이터 링크 계층은 논리적인 연결을 구성할 때 하드웨어 측면을 다루고, 전기적인 신호를 데이터 프레임 매핑하고, 오류를 검출하고 흐름을 제어하는 주요한 기능들은 소프트웨어 측면을 다룹니다.

OSI 7계층에 대해서 각 계층을 간단하게 설명해주세요.

  • 응표세전네데물입니다.
  • 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리계층으로 나뉩니다.

TCP/IP 4계층은 OSI 7계층에서 무엇이 빠진것인가요?

  • OSI 7계층의 응용 계층, 표현 계층, 세션 계층을 응용 계층 하나로 묶었습니다.
  • 그리고 데이터 링크 계층, 물리 계층을 네트워크 인터페이스 계층 하나로 묶었습니다.

각 계층을 통해 데이터가 어떤식으로 전송이 되나요?

  • 사용자가 전송하고자 하는 데이터에 각 계층 프로토콜의 특성을 포함한 정보를 Header에 포함시켜서 캡슐화한 후 하위 계층에 전송해줍니다.
  • 그 후, 가장 하위 계층인 물리 계층에서 binary 데이터로 변환하여 전송해줍니다.
  • 캡슐화된 정보를 받은 다른 사용자는 캡슐화 과정을 역순으로 진행하며 최종적으로 원본 데이터를 받게 됩니다.

TCP/IP 5계층은 뭔지 아시나요?

  • 네트워크 표준이 꾸준히 갱신되며 TCP/IP 4계층에서의 1계층인 네트워크 인터페이스 계층을 데이터 링크 계층과 피지컬 계층으로 세분화 시킨것입니다.

TCP와 UDP를 비교 설명해주세요.

  • TCP는 연결형 신뢰성 전송 프로토콜입니다.
    • 연결 지향적 서비스를 제공하기 위해 데이터 전송 전에 3way handshaking을 하여 두 호스트 간의 논리적 연결을 설립해줍니다.
    • 그리고 신뢰성 있는 서비스를 제공하기 위해 오류제어, 흐름제어, 혼잡제어 등을 실행합니다.
    • 그렇기에 UDP에 비해 header가 더 크고, 속도가 느립니다.
    • 흔히, 웹 브라우저에서 웹 서버와 통신할 때 많이 사용됩니다.
  • UDP는 비연결형 비신뢰성 전송 프로토콜입니다.
    • 비연결형이기 때문에 TCP에서 수행하는 3way handshaking과 같은 세션 수립 과정이 없습니다.
    • 또한 비신뢰성이기 때문에 TCP에서 제공하는 오류제어, 흐름제어, 혼잡제어 등을 제공하지 않습니다.
    • 이러한 단순성 덕분에 header의 크기도 작고, 수신 여부를 확인하지 않아 속도가 빠릅니다.
    • 흔히, 실시간으로 데이터를 전송하는 음성, 영상 혹은 실시간 온라인 게임에서 많이 사용됩니다.

3way handshake와 4way handshake에 대해서 아시나요?

  • 3way handshake는 server와 client간의 연결 확립을 위해 수행되는 절차입니다.

    1. Client가 Server에게 접속을 요청하는 SYNC플래그를 보낸다.
    1. Server는 Listen상태에서 요청 플래그가 들어온 것을 확인하고 SYN_RECV상태로 바뀌어 SYN + ACK(요청에 대한 응답)플래그를 Client에게 전송한다. 그 후 Server는 다시 ACK 플래그를 받기 위해 대기상태로 변경된다.
    1. 연결이 된다는 플래그를 받은 Client는 서버에게 플래그를 받았다는 ACK를 보내고 연결 성립(Established)이 된다.
  • SYNC
    • Connection을 생성할때 사용하는 flag이다.
  • ACK
    • 패킷을 받았다는 것을 의미하는 flag이다.
  • 4way handshake는 연결을 끊기 위해 수행되는 절차입니다.

  • Client가 연결을 종료하겠다는 FIN플래그를 전송한다. 보낸 후에 FIN-WAIT-1 상태로 변한다.
  • FIN 플래그를 받은 Server는 FIN 플래그를 잘 받았다는 확인메세지인 ACK를 Client에게 보내준다. 그 후 CLOSE-WAIT상태로 변한다. Client도 마찬가지로 Server에서 FIN 플래그를 받았다는 ACK가 오면 FIN-WAIT-2 상태가 된다.
    • 서버로부터 FIN 플래그를 받을 준비를 하기 위한 것이다.
  • Close준비가 다 된 후 Server는 Client에게 FIN 플래그를 전송한다.
  • Client는 Server로부터 FIN flag를 받으면 잘 받았다는 ACK를 Server에게 보내준다. 이 때, Client는 TIME-WAIT 상태로 변경된다.
    • 왜 바로 안끊냐면, 의도치 않은 에러로 인해 데드락 상태에 빠지는 것을 방지하기 위해 잠시 TIME-WAIT 상태로 변경되는데, 만약 데드락 상태에 빠지면 타임이 초과되면 CLOSED 상태로 변경된다.
  • Client가 보낸 ACK를 서버가 받으면 그 즉시 서버는 CLOSED 상태가 된다.

3way와 4way의 수립 과정에서 단계 차이가 나는 이유는 무엇인가요?

  • Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아 있을 수 있기 때문에 일단 client가 보낸 FIN flag에 대한 응답인 ACK flag만 보내고, 데이터를 모두 전송한 후에 자신도 FIN flag를 보내기 때문입니다.

4way에서 server가 보낼 마지막 패킷보다 server에서 보내는 FIN flag가 더 빨리 도착하면 어떻게 되나요?

  • client는 server가 보낸 FIN flag를 받더라도 연결을 바로 끊는 것이 아닌 이러한 에러들을 대비하기 위해 잠시 동안의 TIME-WAIT 상태로 변경됩니다. 그렇기 때문에 FIN flag가 마지막 패킷보다 빨리 도착한다고 해도 일정 시간동안 잉여 패킷을 받는 과정이 있습니다.

Client와 Server가 매 byte마다 통신하기 위해서는 계속해서 3way handshake를 해줘야 하나요?

  • 웹 초창기에는 모든 데이터에 이 3-way handshake를 해야 했기에 효율이 매우 나빴습니다. 그래서 HTTP/1.1 부터는 'HTTP 지속 연결 상태'(persistence connection) 이라는 개념을 도입, 모든 바이트에 3-way handshake를 하는 것이 아니라 최초에 핸드쉐이크를 하고 이후에는 계속 연결을 유지하는 방식을 도입하였습니다.그 후, 4-way handshake로 모든 연결이 끝났을때 헤더에 연결 종료를 알림으로써 TCP 연결을 끊는 식입니다.

  • HTTP/3.0에서는 아예 TCP가 아닌 UDP 방식으로 데이터를 전송함으로써 3-way handshake를 아예 하지 않아도 되는 식으로 발전하고 있습니다.

  • 그래서 TCP는 동기, UDP는 비동기라고 불립니다.

3way handshaking으로 연결이 확립되었다고 해도, 종료되지 않은 상태에서 어떻게 연결이 유지될 수 있나요?

  • 연결 상태를 유지하기 위해, TCP는 Keep-Alive 기능을 사용할 수 있습니다.

  • Keep-Alive는 클라이언트와 서버 사이에 일정한 간격으로 빈 패킷을 보내고, 상대방이 이에 대한 응답을 하지 않으면 연결이 끊어졌다고 판단하여 연결을 종료합니다.

  • 또한, TCP는 시간 대기(Timeout)을 사용하여 연결이 일정 시간동안 활동하지 않을 경우 연결을 끊어버립니다.

client가 도메인을 통해 접속했을 때의 프로세스를 설명해주세요

  1. 브라우저는 입력한 도메인 이름을 가지고 DNS 서버에 해당 도메인 이름에 대한 IP 주소를 요청합니다.
  2. 만약 해당 도메인이 캐시에 저장 안되어 있다면 DNS 서버에 질의를 통해 IP 주소를 반환 받습니다.
  3. 그 후, Client는 반환 받은 IP 주소를 통해 해당 웹 서버에 HTTP 요청을 보냅니다.
  4. 웹 서버는 요청 받은 내용을 처리해 그에 맞는 HTTP 응답을 반환해줍니다.
  5. 브라우저는 웹 서버로부터 받은 HTTP 응답을 해석해 웹 페이지를 표시해줍니다.
    • 여기서 HTML 파일 외에 추가로 필요한 리소스들(이미지, CSS, JS파일 등)을 다운로드 합니다.
  6. 그렇게 되면 client가 입력한 도메인 주소에 해당하는 HTML 페이지가 브라우저에 표시됩니다.

DNS 질의에 대해서 알고있는 프로세스를 설명해주세요.

  • DNS iterative query 프로세스에 대해서 설명해드리겠습니다.
  1. client가 www.example.com 이라는 도메인 주소를 검색창에 입력합니다.
  2. www.example.com의 IP 주소를 찾기 위해 client는 DNS 서버에 질의합니다.
  3. 로컬 DNS 서버는 루트 DNS 서버에게 www.example.com의 IP 주소를 찾기 위한 질의를 보냅니다.
    • 루트 DNS 서버는 .com 도메인의 DNS 서버 주소를 알려주는 응답을 보냅니다.
  4. 로컬 DNS 서버는 .com 도메인의 DNS 서버에게 www.example.com의 IP 주소를 찾기 위한 질의를 보냅니다.
    • .com 도메인의 DNS 서버는 example.com 도메인의 DNS 서버 주소를 알려주는 응답을 보냅니다.
  5. 로컬 DNS 서버는 example.com 도메인의 DNS 서버에게 www.example.com의 IP 주소를 찾기 위한 질의를 보냅니다.
    • example.com 도메인의 DNS 서버는 www.example.com의 IP 주소를 포함한 응답을 보냅니다.
  6. 로컬 DNS 서버는 클라이언트에게 www.example.com의 IP 주소를 반환합니다.

DNS iterative query와 DNS recursive query의 차이점에 대해서 설명해주세요.

  • DNS iterative query는 계층에 맞는 도메인 서버에게 서버 주소를 질의하며 ip 주소를 반환받는 과정입니다.
  • DNS recursive query는 DNS 서버에게 질의를 던지는데 질문에 대한 응답을 찾을 때까지 계속해서 전달합니다.
  • 그렇기 때문에 처리 시간이 길어지는 단점이 있습니다.

도메인을 캐시에 저장하는데, 자주 찾는 도메인과 자주 찾지 않는 도메인을 각각 어디에 저장하는지 아시나요?

  • 자주 찾는 도메인은 메모리 캐시에 저장하고, 자주 찾지 않는 도메인은 디스크 캐시에 저장합니다.

그렇다면 도메인은 캐시에 계속해서 쌓이나요?

  • 아닙니다. 일정 시간 동안 캐시에 저장되어 유지되다가, TTL(Time To Live) 값이 만료되면 캐시에서 지워집니다.

자주 찾는 도메인은 메모리 캐시에 넣는데 왜 디스크 캐시에 넣지 않나요?

  • 메모리 캐시는 디스크 캐시에 비해 빠른 속도로 데이터에 접근할 수 있기 때문입니다.
  • 메모리 용량은 한정적이기 때문에 자주 찾는 도메인만 메모리 캐시에 저장하고, 자주 찾지 않는 도메인을 디스크 캐시에 저장함으로써 메모리 용량을 효율적으로 관리할 수 있습니다.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글