컴퓨터 네트워크
🙋🏻♀️ TCP의 특징을 설명해보세요.
TCP는 연결형 서비스로, 데이터를 보내기 전에 송신부와 수신부 간 연결을 확인합니다. 이 과정에서 패킷을 어떤 가상 회선으로 보낼 것인지 결정해 가상 회선 방식으로 패킷 교환이 이뤄집니다. 따라서 패킷의 전송 순서가 보장됩니다. 또한 송신부와 수신부 간에 1:1 통신이 이뤄지며 패킷 수신 여부를 확인합니다. 이는 데이터의 신뢰성을 보장하지만, 속도가 느리다는 단점이 있습니다. 이러한 특징 때문에 데이터의 신뢰성을 보장해야 하는 HTTP 통신, 이메일 전송, 파일 전송 등에 사용됩니다.
🙋🏻♀️ TCP의 연결 및 해제 과정을 설명해 보세요.
TCP의 연결은 3-way 핸드셰이킹으로, 연결 해제는 4-way 핸드셰이킹으로 이뤄집니다. 3-way 핸드셰이킹하면 클라이언트에서 서버에 연결 요청을 위해 SYN 메시지를 보내게 됩니다. 서버에서는 클라이언트의 요청에 응하기 위해 ACK 메시지와 함께 연결을 확인하기 위한 SYN 메시지를 보냅니다. 해당 메시지를 받은 클라이언트는 다시 ACK메시지를 보내서 연결이 이뤄집니다. 반면, 4-way 핸드셰이킹은 클라이언트에서 서버에 연결 해제 요청인 FIN 메시지를 보냅니다. 서버는 응답으로 ACK 메시지를 보내고 애플리케이션 종료와 같이 연결 종료를 위한 처리를 진행합니다. 연결 종료가 준비되면 서버에서 클라이언트로 FIN 메시지를 보내고 클라이언트는 이에 대한 응답으로 ACK 메시지를 보내서 연결 해제가 이뤄집니다.
🙋🏻♀️ UDP의 특징을 설명해 보세요.
UDP는 송신부와 수신부의 연결이 보장되지 않는 비연결형 서비스로, 패킷을 하나의 회선이 아닌 서로 다른 회선으로 보낼 수 있는 데이터그램 패킷 교환 방식을 이용합니다. 그래서 송신부에서 보낸 패킷의 순서와 수신부에서 받은 패킷의 순서가 다를 수 있습니다. 또한 패킷의 수신 여부를 확인하지 않습니다. 따라서 데이터의 신뢰성은 낮지만, 전송속도가 빠릅니다.
🙋🏻♀️ TCP와 UDP 차이점을 설명해 보세요.
TCP와 UDP는 전송 프로토콜이지만 다른 특징을 가지고 있습니다. TCP는 데이터의 신뢰성이 높은 연결형 서비스로, 패킷을 하나의 가상 회선으로 전송합니다. 따라서 패킷의 전송 순서를 보장하고 패킷의 수신 여부를 확인합니다. 반면 UDP는 비연결형 서비스로, 데이터그램 방식을 이용해 패킷을 교환하기 때문에 패킷의 전송 순서가 보장되지 않으며 수신 여부 또한 확인하지 않습니다. 따라서 TCP는 신뢰성이 높고 속도가 느린 반면 UDP는 신뢰성이 낮고 속도가 빠릅니다.
🙋🏻♀️ UDP에서 오류 검출 방법을 설명해 보세요.
UDP에는 데이터의 오류 검출을 위한 방법으로 체크섬이 있습니다. 체크섬은 송신부에서 데이터의 무결성을 확인할 수 있게 UDP 헤더, IP 헤더, 데이터 등의 값을 더한 뒤 보수를 취해 구하는 값입니다. 송신부가 구한 체크섬을 UDP 헤더에 포함해 수신부로 보내면, 수신부에서 체크섬을 이용해 데이터의 무결성을 확인합니다. 하지만 체크섬을 이용하는 것은 선택 사항이고 체크섬을 이용해도 잘못된 데이터가 전송될 수 있다는 점도 고려해야 합니다.
🙋🏻♀️ HTTP에 대해 설명해 보세요.
HTTP는 데이터 전송을 위한 클라이언트-서버 구조의 요청/응답 프로토콜로, TCP/IP 4계층에서 응용 계층에 속합니다. HTTP는 비연결성과 무상태라는 두 가지 특징이 있습니다. 첫 번째로 비연결성은 클라이언트의 요청에 대해 서버가 응답한 후 연결을 끊는다는 것입니다. 이를 보완하기 위해 HTTP Keep Alive를 사용합니다. 두 번째로 무상태는 서버에서 클라이언트의 상태에 대한 데이터를 저장하지 않는다는 것입니다. 이러한 단점을 보완하기 위해 쿠키는 세션을 사용합니다.
🙋🏻♀️ HTTP Keep Alive와 TCP Keep Alive를 설명해 보세요.
HTTP Keep Alive와 TCP Keep Alive 모두 클라이언트와 서버 간에 연결을 유지하기 위한 방법입니다. HTTP Keep Alive는 HTTP 프로토콜의 연결을 정해진 시간 동안 유지하는 방법으로, 정해진 시간이 끝나면 연결을 해제합니다. 반면 TCP Keep Alive는 3-way 핸드셰이킹으로 연결된 세션을 계속 유지하기 위한 방식으로, 일정 시간 동안 패킷 교환이 없으면 연결 유지 여부를 확인하는 패킷을 던집니다. 이에 대한 응답이 있으면 추가로 일정 시간 동안 연결을 유지합니다. 이러한 방식을 통해 클라이언트와 서버 간 불필요한 연결과 해제의 반복을 줄일 수 있습니다.
🙋🏻♀️ 쿠키와 세션의 차이점을 설명해 보세요.
쿠키와 세션 모두 HTTP 통신의 특징인 비연결성과 무상태의 단점을 보완하기 위해 사용합니다. 쿠키는 브라우저에 저장되는 키와 값이 들어 있는 데이터 파일입니다. 이는 서버에서 클라이언트에 대한 정보를 저장하지 않아도 쿠키를 이용해 정보를 재사용할 수 있게 합니다. 예를 들어, 웹 사이트의 로그인 인증 정보, 온라인 쇼핑몰의 장바구니 정보 등이 있습니다. 세션은 쿠키와 비슷하게 데이터를 저장하는 방식이지만 키와 값은 클라이언트에, 데이터는 서버에 저장해서 쿠키보다 보안에 강하다는 특징이 있습니다.
🙋🏻♀️ HTTP와 HTTPS의 차이점을 설명해 보세요.
HTTP와 달리 HTTPS에는 보안 계층의 암호화 프로토콜인 SSL/TLS가 있어서 전송하려는 데이터를 암호화해 보호할 수 있습니다. 이러한 특징은 인터넷 쇼핑이나 인터넷 뱅킹 등 민감한 정보를 사용하는 웹 사이트에서 중요한 요소입니다.그래서 크롬, 사파리 등의 웹 브라우저에서는 SSL/TLS를 지원합니다. 이 외에도 HTTP는 80번 통신 포트를 사용하지만, HTTPS는 443번 통신 포트를 사용한다는 점이 다릅니다.
🙋🏻♀️ HTTPS에서 사용하는 암호화 방식을 설명해 보세요.
HTTPS는 보안 계층의 암호화 프로토콜인 SSL/TLS에서 암호화가 이뤄집니다. 사용하는 암호화 방식으로 대칭 키 암호화 방식과 공개 키 암호화 방식이 있습니다. 대칭 키 암호화 방식은 데이터의 송신자와 수신자 모두 대칭 키를 이용해 데이터를 암호화 및 복호화하는 방식입니다. 반면, 공개 키 암호화 방식은 공개 키로 데이터를 암호화하고 비밀 키로 데이터를 복호화하는 방식입니다. SSL/TLS에서는 대칭 키로 데이터를 암호화하는데, 이때 대칭 키가 공개되므로 데이터가 유출되는 것을 막기 위해 대칭 키를 공개 키 암호화 방식으로 암호화합니다.
🙋🏻♀️ 사용자가 URL을 입력한 후 화면이 출력되기까지의 과정을 설명해 보세요.
사용자가 URL을 입력하면 웹 브라우저에서는 URL의 유효성을 판단합니다. URL이 유효하지 않으면 웹 브라우저는 입력한 내용을 검색하게 되고, URL이 유효하면 DNS 서버에 연결할 IP를 요청합니다. DNS 서버에서 IP 주소를 받으면 3-way 핸드셰이킹으로 TCP 통신을 위한 가상 회선을 연결합니다. HTTP 연결 요청을 서버에 보내면, 이에 대한 응답을 받고 웹 페이지 화면을 출력합니다.
🙋🏻♀️ REST의 장단점을 설명해 보세요.
REST는 웹에서 데이터를 주고받기 위한 아키텍처입니다. URI로 자원을 명시하고, HTTP 메서드로 CRUD 연산을 합니다. 그리고 HTTP를 따르는 모든 플랫폼에서 별도의 인프라 구축 없이 REST를 사용할 수 있습니다. 그래서 웹 외에도 iOS, 안드로이드 등 다양한 플랫폼과 디바이스가 등장하면서 범용으로 사용할 수 있다는 장점이 부각되고 있습니다. 하지만 HTTP 메서드를 사용해야 해서 사용 가능한 연산이 한정적이라는 단점이 있습니다.
🙋🏻♀️ GET에 바디를 넣어서 보내면 나타날 결과를 설명해 보세요.
GET은 바디가 필요하지 않은 메서드지만, REST API의 서버를 어떻게 구현했는지에 따라 다양한 결과가 나타날 것 같습니다. 첫 번째로 GET에 대한 요청이 왔을 때 바디를 무시하고 자원에 대한 데이터를 Read할 수 있습니다. 두 번째로 GET에 바디를 넣어 요청을 보냈을 때 예외 처리를 할 수 있습니다. 이는 HTTP의 명시적 사용을 위한 방법입니다. 마지막으로 바디가 있으면 POST와 동일하게 처리하는 경우가 있을 것 같습니다. 이런 경우에는 데이터를 Read하는 것이 아니라 Create하게 처리할 것 같습니다.
🙋🏻♀️ POST와 PUT의 차이점을 설명해 보세요.
POST는 Create 연산을 하는 메서드입니다. 메시지 바디에 있는 데이터를 추가할 때 사용되며, 여러 번 요청하면 횟수만큼 데이터가 생기기 때문에 멱등하지 않다는 특징이 있습니다. 또한 HTTP의 헤더 중 Cache-Control 또는 Expires가 제대로 정의되어 있으면 캐싱이 가능합니다. PUT은 Update 연산을 하는 메서드로, 특정 데이터의 요청을 여러 번 보내는 것이 같은 결과를 가져오기 때문에 멱등하다고 합니다. 하지만 PUT은 캐싱할 수 없습니다.
'공부 > CS 전공' 카테고리의 다른 글
자료구조 (0) | 2024.11.23 |
---|---|
데이터베이스 (🙋🏻♀️ Q&A) (2) | 2024.11.18 |
운영체제 (🙋🏻♀️ Q&A) (4) | 2024.11.16 |