Tiny Finger Point Hand With Heart
본문 바로가기
1일1CS

34. TCP 프로토콜 연결 / 종료 과정

by yoondii 2023. 1. 10.
728x90
반응형

https://www.crocus.co.kr/1362

 

TCP란

네트워크 계층 중 전송계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 설입하기 위해 연결을 설정하여 신뢰성을 보장하는 연결형 서비스

 

 

TCP Handshake 란? 

 

OSI 7계층 중 Network layer에 해당하는 프로토콜인 TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 3-way handshake를 사용하고 세션을 종료를 성립하기 위해 

4-way handshake를 사용한다.

 

즉, TCP Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.

 

 

3-way handshake 접속 과정

 

1. 클라이언트는 접속을 요청하는 SYN 패킷을 보낸다. 이때 클라이언트는 SYN 패킷을 보냄과 동시에 SYN/ACK 응답을 기다리기위해 SYN_SENT 상태로 변하게 된다.

 

2. 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락하는 ACK 패킷과 SYN 패킷을 보내고 SYN_RCVD(SYN_RECEIVED)상태로 변하여 클라이언트가 ACK 패킷을 보낼 때 까지 기다리게 된다.

 

3. 클라이언트는 서버에 ACK 패킷을 보내고 이 후 ESTABLISHED 상태가 되어 데이터 통신이 가능하게 된다.

 

* 즉, ACK 패킷의 Acknowledgement Number는 신뢰적 데이터 전송을 위해 사용되는 것이다.

* ISN( Initialized Sequence Number ): 초기 시퀀스 번호 - SYN 패킷의 Sequence Number는 운영체제의 의해서 랜덤하게 생성된다.

* 동기화 요청에 대한 답신 - 클라이언트의 시퀀스 넘버에 +1을 해서 ack로 돌려준다.

 

 

 

4-way handshake 종료 과정

 

1. 서버와 클라이언트가 TCP 연결이 되어있는 상태에서 클라이언트가 접속을 끊기 위해 CLOSE() 함수를 호출하게 된다.

이후 CLOSE() 함수를 호출하면서 FIN segment를 보내게 되고 클라이언트는 FIN_WAIT1 상태로 변하게 된다.

 

2. 서버는 클라이언트가 CLOSE() 한다는 것을 알게되고 CLOSE_WAIT 상태로 바꾼 후 ACK segment를 전송한다.

즉, 클라이언트가 끊을 것이라는 신호를 받았다는 의미이고 CLOSE_WAIT를 통해 자신의 통신이 끝날때까지 기다리는 상태가 된다.

 

3. ACK segment를 받은 클라이언트는 FIN_WAIT2로 변환되고 이때 서버는 CLOSE() 함수를 호출하고 FIN segment를 클라이언트에게 보낸다.

 

4. 서버도 연결을 닫았다는 신호를 클라이언트가 수신하면 ACK segment를 보낸 후 TIME_WAIT 상태로 전환된다.

 

이 후 모든것이 끝나면 CLOSED 상태로 변환된다. 

 

 

 

출처-

https://www.crocus.co.kr/1362

https://yubh1017.tistory.com/81

https://gmlwjd9405.github.io/2018/09/19/tcp-connection.html

 

728x90
반응형

'1일1CS' 카테고리의 다른 글

36. Transaction과 ACID  (2) 2023.01.12
35. UDP/TCP 특징 및 차이점  (0) 2023.01.11
34. SOLID 란?  (2) 2023.01.10
33. 웹브라우저에 www.google.com을 치면 일어나는 일  (1) 2023.01.09
32. 디자인패턴이란?  (0) 2023.01.09

댓글