날아라김지원
article thumbnail

TCP는 신뢰성을 확보할 때 3웨이 핸드쉐이크라는 작업을 진행한다. (연결성립과정)

 

3웨이 핸드쉐이크

1.SYN 단계

클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보낸다. ISN은 새로운 TCP연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호를 말하며 이는 장치마다 다를 수 있따.

2.SYN+ACK단계

서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호르 클라이언트의 ISN +1을 보낸다

3.ACK 단계

클라이언트는 서버의 ISN+1한 값인 승인번호를 담아 ACK를 서버에 보낸다. 이렇게 3웨이 핸드셰이크 과정 이후 신뢰성이 구축되고 데이터 전송을 시작한다. 참고로 TCP는 이 과정이 있기 때문에 신뢰성이 있는 계층이라고 한다. (<->UDP)

 

4웨이 핸드쉐이크

TCP가 연결을 해제할 때 진행하는 과정

 

1번

클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보낸다. 그리고 클라이언트는 FIN_WAIT_1상태로 들어가고 서버의 응답을 기다린다.

2번

서버는 클라이언트로ACK라는 승인 세그먼트를 보낸다. 그리고 CLOSE_WAIT상태에 들어간다. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2상태에 들어간다.

3번

서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보낸다.

4번

클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED상태가 된다. 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제 된다.

 

TIME_WAIT

1)지연 패킷이 팔생할 경우를 대비하기 위함, 패킷이 뒤늦게 도달하고 이를 처리하지 못한다면 데이터 무결성 문제가 발생

2)우분투는 60초, 윈도우는 4분 등 OS마다 다르다.

profile

날아라김지원

@flykimjiwon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!