ssausand-sunny / cs-study

면접.. 붙으려면 CS 공부 해야겠지?
0 stars 0 forks source link

www.naver.com 을 브라우저에 입력하고 엔터를 쳤을 때, 네트워크 상 어떤 일이 일어나는지 최대한 자세하게 설명해 주세요. #46

Open kgh2120 opened 3 months ago

kgh2120 commented 3 months ago

문제

예상 꼬리 질문 - 3way handshake에 대해서 설명해주세요

들어가야 할 키워드 정리

kgh2120 commented 3 months ago
예상 답변 www.naver.com을 브라우저에 입력하게 되면, 먼저 도메인에 해당하는 IP 주소를 찾아야합니다. 브라우저 캐시에 DNS에 해당하는 IP가 저장되어있지 않다면, DNS 서버에 루트 도메인부터, 하위 도메인에 이르기까지 검색하여 IP를 획득합니다. IP를 획득하면, 상대 서버와의 연결을 수립하기 위해 3-way handshake와 같은 작업을 진행합니다. 상대 서버와의 연결이 완료되면, 서버는 클라이언트의 HTTP 요청을 받아 이를 처리하고 응답을 생성하여 클라이언트에게 전달합니다. 브라우저는 전달받은 응답에 맞는 페이지를 랜더링하는 것으로 우리는 네이버 화면을 확인할 수 있습니다.
예상 꼬리 질문 답변 - 3way handshake에 대해서 설명해주세요 3way handshake란 신뢰지향, 연결지향 프로토콜인 TCP에서 클라이언트와 서버간 연결을 수립하는 과정을 말합니다. 클라이언트가 SYN 패킷을 보내 연결을 요청하면, 서버는 SYN-ACK 패킷을 클라이언트에게 전달합니다. 마지막으로 클라이언트가 ACK 패킷을 전달하는 것으로 연결이 완료됩니다.
Leeminw commented 3 months ago
예상 답변

주소를 브라우저에 입력하게 되면, 문자열로 되어 있는 주소에 해당하는 IP를 DNS로부터 찾게 됩니다. DNS에서 받은 IP에 TCP 통신을 결합하여 3-way handshake 작업을 진행하여 서버와의 연결을 시도합니다. 연결이 완료되면, 서버는 클라이언트의 요청을 처리한 후 응답을 반환합니다. 클라이언트는 반환받은 응답을 바탕으로 화면을 랜더링하게 됩니다.

꼬리 질문

- 3way handshake에 대해서 설명해주세요 TCP 통신을 이용하여 신뢰성있는 연결을 보장하는 방식입니다. 클라이언트 단에서 SYN 패킷을 보내 요청을하면 서버단에서 SYN-ACK 패킷을 수락여부를 반환한 후 클라이언트가 ACK 요청을 하여 연결을 보장하고, 데이터의 순서를 보장합니다.

Hunnibs commented 3 months ago
질문 답변

www.naver.com을 입력하면 DNS 서버에 해당 도메인 주소를 보내 주소에 해당하는 IP 주소를 얻어냅니다. DNS에서 받은 IP 주소를 이용해 서버와 연결하여 클라이언트는 서버의 데이터를 받고 해당 내용을 화면으로 보여줍니다.

꼬리 질문

- 3way handshake에 대해서 설명해주세요 3-way handshake는 TCP 통신에 사용되는 방식으로 서버와 클라이언트 사이의 연결을 위해 사용됩니다. 과정은 클라이언트에서 SYN 패킷을 보내 서버가 연결할 준비가 되었다면 ACK + SYN 패킷을 클라이언트에게 보냅니다. 이후 클라이언트도 수신 완료했다는 의미인 ACK 패킷을 다시 서버에 보내면 서버와 클라이언트는 연결 상태가 됩니다.

kjy0349 commented 3 months ago
예상 답변

먼저 도메인 주소를 서버의 IP주소로 변환해야 하기 때문에 브라우저의 DNS 캐시에서 먼저 DNS 조회를 수행하고, 브라우저 캐시에 존재하지 않는다면 DNS 서버와 통신해 IP 주소로 변환합니다. 해당 작업은 UDP 프로토콜로 수행됩니다. 이후에는 서버와 TCP/IP 프로토콜로 3-way-handshake 과정이 일어나 연결을 수립하게 되고, response를 받게 됩니다.

예상 꼬리 질문 답변

3-way-handshake란, TCP/IP 통신에서 연결을 수립할 때 발생하는 작업으로 먼저 request를 보내는 클라이언트에서 syn 요청을 보내고, 서버에서는 받은 syn 요청을 확인하고 다시 syn/ack 요청을 클라이언트에 보낸 후, 마지막으로 클라이언트가 ack 요청을 보내 정상적으로 요청을 받을 것을 확인함으로써 연결을 수립하는 과정입니다.