Notice
Recent Posts
Recent Comments
Archives
반응형
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Today
Total
09-20 12:43
250x250
관리 메뉴

꿈꾸는 개발자의 블로그

[CS] 네트워크 (2) : TCP 연결관리 본문

Interview/Computer Science

[CS] 네트워크 (2) : TCP 연결관리

aldrn29 2022. 7. 17. 16:19

TCP 연결관리

연결을 성립하고 해제하는 과정을 말한다. 

2 way handshake

2-way handshaking은 서버와 클라이언트가 서로의 상황을 모른다는 점에서 문제가 있다.

 

  1. 클라이언트가 서버에 연결 요청
  2. 서버가 클라이언트에 응답

3 way handshake

TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다.

  1. 클라이언트가 서버에 연결 요청 : SYN 보냄 (SYN=1, Seq#=client initial seq#)
  2. 서버가 요청을 받고, 클라이언트에게 잘 받았다는 신호로 응답 : SYN 받고, SYNACK 보냄
  3. 클라이언트는 서버가 준 응답을 잘 받았음을 서버에 응답 : SYNACK 받고, ACK 보냄

4-way handshake: 연결 종료

연결 성립 후, 모든 통신이 끝났다면 해제해야 한다.

 

 

  1. 클라이언트가 서버에 연결 종료 요청 : FIN 보냄
  2. 서버는 요청을 받고, 클라이언트에게 확인했다고 응답 : FIN 받고, ACK 보냄 (이때 모든 데이터를 보내기 위해 CLOSE_WAIT 상태가 됨)
  3. 데이터를 모두 보냈다면, 서버가 클라이언트에게 연결 종료 요청 : FIN 보냄
  4. 클라이언트가 서버에 응답 : FIN 받고, ACK 보냄 (아직 서버로부터 받지 못한 데이터가 있을 수 있으므로 TIME_WAIT을 통해 기다림)
  • 서버는 ACK를 받은 이후 소켓을 닫는다 (Closed)
  • TIME_WAIT 시간이 끝나면 클라이언트도 닫는다 (Closed)

 

728x90
728x90
Comments