[기술면접] 네트워크 5
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
접은 글을 통해 먼저 답변을 해보시고 제가 정리한 답을 확인해보시기 바라겠습니다!!
면접 리스트
GET, POST 방식의 차이점
GET 및 POST는 서버에서 특정 동작을 요청하는 데 사용되는 HTTP 메서드입니다.
GET은 주로 조회할 때 사용되고, 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다. 서버에게 동일한 요청을 여러번 전송하더라도 동일한 응답이 돌아와야 한다는 성질을 가지고 있습니다.
POST는 서버에게 동일한 요청을 여러번 하더라도 응답은 항상 다를 수 있습니다. POST는 주로 서버의 상태나 데이터를 변경할 때 사용하는데 생성에는 POST만을 사용하고 수정과 삭제에는 더 알맞는 메소드를 사용하는 것이 좋습니다.
TCP 3-way-handshake
TCP 3 way handshake는 가상회선을 수립하는 단계입니다.
클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정을 통하고 SYN, ACK 패킷을 주고받으며, 임의의 난수로 SYN 플래그를 전송하고 ACK 플래그에 1을 더한 값을 전송합니다.
TCP 4 Way handshake
TCP 4 way handshake는 TCP 연결을 해제하는 단계이다.
클라이언트는 서버에게 연결해제를 통지하고 서버가 이를 확인하여 클라이언트에게 이를 받았음을 알리는 패킷을 전송하여 연결이 해제된다. 이때 서버는 클라이언트에게 소켓이 닫혔다고 통지해도 클라이언트 측에서 일정시간 대기한다. 그 이유는 통지 패킷이 나중에 도착할 수 있기 때문이다.
TCP 와 UDP 의 차이점
TCP는 연결 지향형 프로토콜이고 가상 회선을 만들어 흐름제어, 혼잡제어, 오류 제어를 통해 신뢰성을 보장하지만 속도면에서 느리므로 파일 전송과 같은 신뢰성이 중요한 서비스에 이용합니다.
반면 UDP 는 데이터를 데이터그램 단위로 전송하는 프로토콜로 신뢰성을 보장하는 절차는 따로 없지만 빠르게 데이터를 보낼 수 있으며 스트리밍과 같은 연속성이 중요한 서비스에 사용됩니다.
HTTP 와 HTTPS 의 차이점
HTTP와 HTTPS 모두 응용 계층에서 클라이언트-서버 간 리소스를 요청하고 제공을 담당하는 프로토콜이다.
HTTP는 서버에서 클라이언트로 전송되는 데이터가 암호화되지 않는 평문 통신을 하기 때문에 도청을 하거나, 완전성을 증명할 수 없기에 변조가 가능하다는 보안 취약점을 가진다. 또한 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
HTTPS는 이러한 HTTP의 단점을 해결합니다. HTTPS는 HTTP의 일반 텍스트에 SSL이나 TLS 프로토콜로 씌워 데이터를 암호화하는 기법으로 인증기관 CA에서 받은 개인키와 암호키를 기반으로 클라이언트와 서버간에 통신의 완전성을 도입합니다.
그 절차는 다음과 같습니다. 첫째로 클라이언트가 서버에게 접속요청을 하면 서버는 CA에서 발급받은 인증서를 보냅니다. 이후 클라이언트는 인증서를 받아 CA의 공개키로 복호화하여 접속 요청 서버가 신뢰할 만한지 검증하고 검증이 완료되면 클라이언트는 대칭키를 생성합니다. 클라이언트는 대칭키를 서버의 공개키로 암호화하여 서버에게 전송한뒤, 서버는 캐인키로 대칭키를 복호화 한뒤 대칭키를 통해 데이터를 주고 받습니다.
이러한 과정을 통해, 기밀성과 무결성, 인증이 가능합니다.
HTTP 1.0과 1.1의 차이는 무엇인가요?
HTTP 1.1은 HTTP 1.0과 다르게 지속 연결이 가능합니다. 이를 통해 네트워크 자원을 최적화할 수 있고 지연시간이 줄어 성능이 향상 합니다. 또 캐싱 기능이 가능하며 상태 코드를 추가하여 클라이언트에서 서버 응답을 구체적으로 대응할 수 있습니다.
HTTP2와 그 특징에 대해서 설명해 주세요.
HTTP2는 멀티 플렉싱과 헤더 압축 기능 및 서버 푸시가 있습니다.
멀티 플렉싱은 다중 스트림으로 구현하여 채널이 비어있을 때 충돌이 줄어들어 네트워크 효율성을 높입니다.
헤더 압축은 HPACK이라는 헤더 압축을 이용하여(호프만) 요청 및 응답 헤더 크기를 줄입니다.
서버 푸시는 클라이언트의 요청 없이 서버가 클라이언트에게 리소스를 미리 푸시할 수 있습니다. 이를 통해 웹 페이지 로딩 속도가 빨라집니다.