티스토리 뷰

Study

기술면접-컴퓨터공학(네트워크)-1

멋쟁이 그루트 2024. 3. 5. 10:26

1. TCP 와 UCP의 차이점과 장단점에 대해서 설명해주세요.

TCP는 통신 시작 전에 연결을 설정하고, 통신이 종료될 때 연결을 해제합니다. 데이터 전송 시 순서를 보장하고, 재전송과 에러 체크 등의 메커니즘을 통해 데이터의 손실이나 손상을 최소화합니다. 데이터의 흐름을 조절하여 네트워크 혼잡을 방지하고, 수신 측이 수용 가능한 속도로 데이터를 처리할 수 있도록 합니다. 대부분의 웹 브라우징, 이메일, 파일 전송 등 신뢰성이 중요한 애플리케이션에서 사용됩니다.

 

UDP는 데이터 전송에 있어서 연결 설정이나 연결 해제 과정이 없습니다. 데이터 전송의 순서를 보장하지 않고, 에러 복구나 재전송을 하지 않습니다. TCP보다 간단하고 속도가 빠릅니다. 대부분의 스트리밍 미디어, 온라인 게임, DNS 등에 사용됩니다.

 

TCP는 신뢰성이 필요한 애플리케이션에 적합하며, UDP는 전송 속도와 오버헤드를 최소화해야 하는 애플리케이션에 적합합니다.

 

2. TCP 의 3-way-handshake 와 4-way-handshake 방식의 차이점에 대해 설명해주세요.

3-way-handshake (연결 설정):

  • 클라이언트가 서버에게 연결을 요청합니다.
  • 서버는 클라이언트에게 요청을 수락한다는 응답과 함께, 스스로의 초기 순차 번호를 포함한 SYN/ACK 패킷을 보냅니다.
  • 클라이언트는 서버에게 수락 응답을 보내고, 서버의 초기 순차 번호를 확인하는 ACK 패킷을 보냅니다.

4-way-handshake (연결 해제):

  • 클라이언트가 서버에게 연결 종료를 요청하는 FIN 패킷을 보냅니다.
  • 서버는 요청을 수락하고, 클라이언트에게 ACK 패킷을 보냅니다.
  • 서버는 더 이상 보낼 데이터가 없다면, 연결 종료를 위해 FIN 패킷을 보냅니다.
  • 클라이언트는 서버의 연결 종료 요청을 수락하고, ACK 패킷을 보냅니다.

3-way-handshake는 연결 설정에 사용되고, 클라이언트가 서버에 연결을 요청하고 서버가 수락하는 과정으로 구성됩니다. 반면에 4-way-handshake는 연결 해제에 사용되며, 연결을 종료하고 네트워크 리소스를 해제하는 과정으로 구성됩니다.

 

3. HTTP 각 버전의 주요 차이점에 대해 설명해주세요.

1.0:

  • 여러 개의 TCP 연결을 사용하여 요청과 응답을 처리했습니다.
  • 요청과 응답의 헤더가 비압축되어 전송되기 때문에 오버헤드가 많이 발생했습니다.
  • 지속적인 연결(Persistent Connection)이 없어서 매 요청마다 새로운 연결을 설정해야 했습니다.

1.1:

  • 지속적인 연결을 지원하여 한 번의 TCP 연결로 여러 요청과 응답을 처리할 수 있습니다.
  • 파이프라이닝을 통해 여러 요청을 병렬로 처리 가능 하지만, 순서에 의존성이 있어 전송 지연 문제가 발생 가능합니다.
  • 헤더 압축 기법을 도입하여 오버헤드를 감소시켰습니다.

2.0:

  • 단일 TCP 연결을 통해 다중의 요청과 응답을 처리할 수 있습니다.
  • 이진 프레이밍 기술을 사용하여 헤더 압축과 요청/응답의 분할 및 병합을 지원합니다.
  • 서버 푸시 기능을 도입하여 클라이언트 요청에 대한 리소스를 미리 전송할 수 있습니다.
  • 더 효율적인 압축 알고리즘을 사용하여 성능을 향상시켰습니다.

3.0:

  • 기존의 TCP 연결 대신에 UDP를 사용하여 연결 설정 및 해제의 지연을 줄이고, 빠른 전송 속도를 제공합니다.
  • 멀티플렉싱을 지원하여 여러 요청을 동시에 처리할 수 있습니다.
  • 연결의 혼잡을 방지하기 위한 혼잡 제어 메커니즘을 내장하고 있습니다.
  • 연결의 보안성을 강화하기 위해 기본적으로 TLS를 사용합니다.

4. HTTP 1.1의 keep alive 기능에 대해 설명해주세요.

Keep-Alive를 사용하면 클라이언트와 서버 간의 TCP 연결이 유지되며, 여러 요청과 응답이 동일한 연결을 통해 이루어질 수 있습니다. 이는 TCP 연결을 설정하는 데에 드는 오버헤드를 줄이고, 연결 설정 및 해제에 필요한 시간을 절약하여 웹 페이지 로딩 속도를 향상시킵니다.

 

5. HTTP와 HTTPS의 차이점에 대해 설명해주세요.

HTTP는 데이터를 평문으로 전송하기 때문에 보안이 제공되지 않습니다. 따라서 데이터가 네트워크를 통해 전송될 때 중간에서 가로채어질 수 있으며, 정보가 노출될 수 있습니다.

HTTPS는 SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화합니다. 따라서 데이터가 전송되는 동안 중간에서 가로채어지더라도 읽을 수 없습니다. 이를 통해 통신의 기밀성과 무결성이 보장됩니다.

 

6. HTTPS 의 암호화는 어떤 방식으로 이루어지나요.

1. 클라이언트가 서버에 HTTPS 연결을 요청하면, 서버는 클라이언트에게 서버 인증서와 함께 공개키를 제공합니다.

2. 클라이언트는 서버의 인증서를 확인하고 신뢰할 수 있는 인증 기관으로부터 발급되었는지를 검증합니다.

3. 클라이언트는 자신만이 알고 있는 대칭키를 생성하고, 서버의 공개키로 이 대칭키를 암호화하여 서버에게 전송합니다.

4. 서버는 클라이언트가 보낸 암호화된 대칭키를 자신의 개인키로 복호화하여 얻습니다.

5. 이후부터는 클라이언트와 서버는 이 대칭키를 사용하여 통신을 암호화하고 복호화합니다.

 

7. 쿠키와 세션의 차이점에 대해 설명해주세요.

HTTP 프로토콜은 connectionless, stateless한 특성을 지니고 있기 때문에, 상태 정보 유지를 위해 쿠키와 세션을 사용합니다. 쿠키는 클라이언트에 저장되고 보안에 취약하며 설정된 만료 날짜까지 지속됩니다. 반면에 세션은 서버에 저장되어 보안적으로 더 안전하며 클라이언트와의 상태를 유지하고 브라우저 종료 시 삭제됩니다.

 

8. HTTP Only Cookies 와 Secure Cookies에 대해 설명해주세요.

HTTP Only 쿠키는 웹 브라우저에 저장된 쿠키가 JavaScript를 통해 접근되는 것을 방지합니다. 따라서 XSS (Cross-Site Scripting) 공격으로부터 사용자의 쿠키 정보를 보호할 수 있습니다.

 

Secure 쿠키는 HTTPS 프로토콜을 사용하는 보안 연결에서만 전송되는 쿠키입니다. 이 속성을 설정하면 브라우저는 쿠키를 HTTPS 연결을 통해서만 전송하도록 요구합니다. 이는 중요한 정보가 포함된 쿠키가 안전한 통신 경로를 통해 전송되어 도청이나 데이터 도난을 방지합니다.

 

9. HTTP GET과 POST의 차이점에 대해 설명해주세요.

GET 방식은 데이터를 URL의 쿼리 문자열에 포함하여 서버로 전송합니다. 이는 주로 데이터를 조회하는 데 사용되며, 전송되는 데이터는 URL에 노출됩니다. URL에 데이터를 포함하여 전송하기 때문에 전송할 수 있는 데이터의 양이 제한적입니다. 대부분의 브라우저는 URL 길이에 제한을 두고 있으며, 이에 따라 GET 요청은 대부분의 경우 적은 양의 데이터만 전송합니다. GET 요청은 캐싱될 수 있으며, 동일한 요청이 반복될 때 서버에 다시 요청하지 않고 캐시된 응답을 사용할 수 있습니다.

 

POST 방식은 HTTP 요청의 본문(body)에 데이터를 포함하여 서버로 전송합니다. 이는 주로 데이터를 생성하거나 수정하는 데 사용되며, 전송되는 데이터는 URL에 노출되지 않습니다. POST 요청은 캐싱되지 않습니다. 따라서 POST 요청은 항상 서버에 새로운 요청을 보냅니다.

 

10. HTTP method들에 대해 설명해주세요.

GET:

  • 서버로부터 특정 리소스를 요청합니다.
  • 요청한 리소스에 대한 응답을 반환합니다.
  • 데이터를 URL의 쿼리 문자열에 포함하여 전송됩니다. 

POST:

  • 서버에 새로운 데이터를 생성하거나 수정하기 위한 요청을 전송합니다.
  • 요청한 작업의 결과를 반환합니다.
  • 데이터를 HTTP 요청의 본문(body)에 포함하여 전송됩니다.

PUT:

  • 서버에 새로운 데이터를 생성하거나 이미 존재하는 데이터를 업데이트하기 위한 요청을 전송합니다.
  • 주로 RESTful API에서 리소스의 생성 또는 업데이트에 사용됩니다.
  • 요청 본문에 포함된 데이터를 지정된 위치에 저장하거나 업데이트합니다.

DELETE:

  • 서버에서 특정 리소스를 삭제하기 위한 요청을 전송합니다.
  • 지정된 리소스를 삭제하고 해당 리소스에 대한 응답을 반환합니다.
  • 주로 RESTful API에서 리소스의 삭제에 사용됩니다.

PATCH:

  • 서버에 존재하는 리소스의 일부를 수정하기 위한 요청을 전송합니다.
  • 요청 본문에 포함된 데이터를 기존 리소스에 적용하여 변경합니다.
  • PUT과 유사하지만, PUT은 전체 리소스를 대체하는 데 사용되고, PATCH는 리소스의 일부를 수정하는 데 사용됩니다.

HEAD:

  • GET 메서드와 유사하지만, 실제 데이터를 요청하지 않고 리소스의 헤더 정보만을 요청합니다.
  • 주로 리소스가 변경되었는지 확인하거나 메타데이터를 가져오는 데 사용됩니다.

OPTIONS:

  • 서버에서 지원되는 HTTP 메서드를 확인하고, 지원되는 요청 방법 등의 서버 옵션을 확인하기 위한 요청을 전송합니다.
  • 주로 CORS (Cross-Origin Resource Sharing) 등의 정책을 확인하는 데 사용됩니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함