메이쁘

[TCP/IP] 2020.11.16. 오늘의 면접 Q&A 본문

면접 대비 CS지식/SELF CS면접 Q&A

[TCP/IP] 2020.11.16. 오늘의 면접 Q&A

메이쁘 2020. 11. 16. 22:14

안녕하세요.

 

CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다.

 

 

틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음

 

언젠간 면접하게 될 때 모아서 쓰려고 합니다.

 

(실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!)

 

 

 

이번 글은 Network - TCP/IP 카테고리 입니다.

 

 

 

 

  -- 질문 목록

 

Q1.  TCP 3-Way HandShake에 대해 말해보세요.

Q2.  TCP 4-Way HandShake에 대해 말해보세요.


Q1.  TCP 3-Way HandShake에 대해 말해보세요.

 

A.  이는 TCP/IP 통신 기법 중 하나로, TCP/IP 프로토콜을 이용하여 통신하기 전에 정확한 전송을 보장하고자 연결이 잘 되어있는지 확인하는 것입니다. 보통 데이터 송수신 시작 전에 이뤄집니다. 순서는 크게 3단계로 진행되는데요.

 

먼저, 클라이언트는 서버에게 접속요청을 위한 SYN 패킷을 보냅니다. 클라이언트는 SYN을 보낸 후 SYN/ACK 응답을 기다리는 SYN-SENT 상태가 됩니다.

 

그 다음, 서버가 Listen 상태일 경우에 SYN을 수신받습니다. 이후 요청수락인 ACK와 SYN flag 패킷을 보냅니다. 이 때, 서버는 SYN-RECEIVED 상태가 되죠.

 

마지막으로 클라이언트는 ACK를 서버에게 보내고 이 이후부터는 연결상태로 되어 데이터를 송수신합니다.

 

 

TCP 3-Way HandShake (출처 : https://www.researchgate.net/figure/3-way-handshake-3-way-handshake-and-Proxy-Early-SYN-Forwarding_fig2_305081696)

 

 

 

Q2.  TCP 4-Way HandShake에 대해 말해보세요.

 

A.  TCP 3-Way HandShake 와는 반대로 데이터 송수신이 끝나고, 클라이언트와 서버 간 연결을 종료하기 위해 수행하는 것 입니다. 

 

 

먼저, 클라이언트가 서버에게 FIN Flag를 전송합니다. 클라이언트가 전송하고나서 FIN-WAIT 상태가 됩니다.

 

다음으로, 서버가 FIN Flag를 받고, 클라이언트에게 ACK를 보냅니다. 이 때, 서버는 CLOSE_WAIT 상태가 됩니다.

 

그럼 클라이언트는 다음 FIN Flag를 받기 전까지 TIME-OUT 상태가 되고, 남은 데이터를 받으며 종료할 준비를 합니다.

 

데이터를 모두 보낸 서버는 이제 연결종료의 의미인 FIN Flag를 클라이언트에게 전송합니다.

 

클라이언트는 이를 받고 ACK 메세지를 서버에 전송합니다.

 

서버는 이러한 ACK 메세지를 받고 CLOSED 하는 것으로 클라이언트와 서버 간 통신은 마무리됩니다.

 

TCP 4-Way HandShake 과정 (출처 : https://steffen-lee.tistory.com/31)

 

 

 

이상입니다.

 

감사합니다!

Comments