Solution/면접 2022. 3. 19. 11:00 Q. TCP와 UDP의 차이에 대해서 설명해보세요.TCP는 연결 지향형 프로토콜이고 UDP는 데이터를 데이터그램단위로 전송하는 프로토콜입니다. TCP는 가상 회선을 만들어 신뢰성을 보장하도록(흐름 제어, 혼잡 제어, 오류 제어) 하는 프로토콜로 따로 신뢰성을 보장하기 위한 절차가 없는 UDP에 비해 속도가 느린편입니다. TCP는 그래서 파일전송과 같은 신뢰성이 중요한 서비스에 사용되고, UDP는 스트리밍, RTP와 같이 연속성이 더 중요한 서비스에 사용됩니다. +) 하지만 UDP도 신뢰성을 UDP자체에서 보장하지 않는 것 뿐이지, 개발자가 직접 신뢰성을 보장하도록 할 수 있습니다. 그래서 HTTP/3은 QUIC이라는 프로토콜을 기반으로 하는데, QUIC은 UDP를 기반으로 합니다. 즉, UDP 자체는 신뢰성을 보장하지 않지만, 추가적인 정의를 통해 신뢰성을 보장받을 수 있습니다. 'Solution/면접' Related ArticlesTCP와 UDP에 대해 설명해주세요 OSI 7계층에서 전송계층(Transport layer)에 속하는 데이터 전송 프로토콜입니다. TCP가 뭔가요? TCP는 Transmission Control Protocol의 약자로 데이터가 반드시 전달되는 것을 보장하는 프로토콜로 연결지향, 높은 신뢰성, 전 이중 방식, 바이트 스트림 등의 특징이 있습니다. 연결지향(Connection-oriented) | 2개의 호스트가 통신을 하기 전 연결이 이루어져야 한다 TCP와 호스트 간 연결을 설정하는 방법에 대해 설명해주세요 TCP와 호스트 간 연결 설정 방법은 SYN/ACK 패킷이 있습니다. SYN 패킷은 동기화(synchronize)를 의미하며 ACK 패킷은 확인(acknowledgement)를 의미합니다 순서? UDP가 뭔가요? TCP와 달리 데이터의 신뢰성을 보장하지 않는 프로토콜입니다 비연결성(connection-less)로 연결을 설정하고 해제하는 과정이 없다 HTTP란? HTTP는 클라이언트-서버 모델을 따르는 프로토콜로 TCP/IP 위에서 동작하며, well-known 포트인 80번 포트를 사용하여 통신합니다. 첫 번째 표준은 HTTP/1.1이며 이후로 HTTP/2및 HTTP/3이 등장하였습니다. HTTP의 특징 비-연결 지향(Connectionless)과 무상태성(Stateless)라는 특징을 가집니다. 1. 비연결 지향은 클라이언트가 서버에게 리소스를 요청한 후 응답을 받으면 연결을 끊는 특징입니다. 이를 통해 서버의 부담을 줄일 수 있지만, 리소스 요청마다 연결해야 하는 오버헤드 비용이 발생할 수 있습니다. 해결 (해결을 위해서는, 요청 헤더의 Connection : keep-alive 속성으로 지속적 연결 상태를 유지할 수 있습니다. 즉, 요청을 할 때마다 연결하지 않고 기존의 연결을 재사용하는 방식입니다. HTTP 1.1부터는 지속적 연결 상태가 디폴트 상태입니다) 2. 무상태성은 요청이 독립적으로 여겨지는 특징으로, 서버는 클라이언트의 상태를 유지하지 않기 때문에 클라이언트에 맞게 리소스를 응답하는 것이 불가능합니다 .해결을 위해 쿠키나 세션 또는 토큰 방식의 OAuth및 JWT가 사용됩니다 비연결성(비연결지향)의 장단점? 서버가 다수의 클라이언트와 연결을 유지하면서 생기는 오버헤드를 방지할 수 있습니다. 그러나 동일한 클라이언트가 다시 접근해도 항상 새롭게 연결을 시도하고 해제해야 하는 비용이 발생합니다. KeepAlive란? 지정된 시간동안 서버와 클라이언트 사이의 패킷 교환이 없을 경우 상대방의 안부를 묻기 위해 패킷을 보내지만, 패킷에 반응이 없으면 접속을 끊게 됩니다. 무상태성이란? 비연결성으로 인해 서버가 클라이언트를 식별할 수 없는 상황을 말합니다. 클라이언트에 접근할 때 마다 계속 새롭게 인증을 해야 하는 번거로움이 발생하기 때문에 쿠키와 세션, 토큰 등으로 이를 예방합니다. 쿠키 HTTP method / CRUD GET | 서버에게 조회할 리소스를 요청합니다 _ READ POST | 서버에게 body에 생성할 데이터를 삽입하여 전송합니다 _ CREATE PUT | 서버에게 본문에 수정할 데이터를 삽입하여 전송합니다 _ UPDATE DELETE | 서버에게 삭제할 리소스를 요청합니다 _ DELETE PATCH | 일부만 수정합니다 응답 상태코드에 대해 아는 대로 말씀해주세요 / 경험해본 상태코드가 있나요? 1xx | (요청에 대한 정보) 요청을 받았으면 작업을 계속한다 2xx | (성공) 요청을 성공적으로 수행했다 3xx | (리다이렉션) 클라이언트가 요청을 마치기 위해 추가적인 동작을 취해야 한다 4xx | (클라이언트 오류) 클라이언트에 오류가 있다 5xx | (서버 오류) 서버에 오류가 있다 💛 🙈[HTTP] HTTP 특성(비연결성, 무상태)과 구성요소 그리고 Restful API🐵 취준생이 반드시 알아야 할 프론트엔드 지식들 |