TCP 3-way & 4-way handshake

Tommy·2022년 12월 15일

CS 지식

목록 보기
1/3

TCP (Transmission Control Protocol)

TCP는 두개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜.
TCP는 데이터와 패킷이 보내진 순서대로 전달하는 것을 보장한다.

TCP 특징

  • 전송되는 데이터의 신뢰성 보장 (흐름 제어, 혼잡 제어, 오류 제어)
  • 파일 전송에 주로 사용
  • 가상 회선을 만들어 신뢰성을 보장

TCP 3 way handshake

연결하고자 하는 두 장치 간의 논리적 접속을 하기 위해 사용하는 연결방식.
3번의 확인 과정을 거치기 때문에 3 way handshake 라고 불림

SYN (synchronize sequence numbers) - 연결 확인을 위해 보내는 무작위의 숫자값
ACK (acknowledgements) - Client 혹은 Server로부터 받은 SYN에 1을 더해 SYN을 잘 받았다는 ACK
ISN (Initial sequence numbers) - Client와 Server가 각각 처음으로 생성한 SYN

SYN 값을 무작위 수를 사용하는 이유?

Connection을 맺을 때 사용하는 포트는 유한 범위내에서 사용하고 시간이 지남에 따라 재사용된다. 이에 따라 두 통신 호스트가 과거에 사용된 포트 번호 쌍을 사용할 가능성이 높다.
서버 측에서 패킷의 SYN을 보고 패킷을 구분하게 되는데 난수가 아닌 순차적인 숫자가 전송되면 이전의 Connection으로 부터 오는 패킷으로 인시할 수 있기 때문에 ISN 을 무작위 난수로 사용한다.

상태

상태설명
CLOSED연결 수립을 시작하기 전의 기본 상태 (연결 없음)
LISTEN포트가 열린 상태로 연결 요청 대기중
SYN-SENTSYN 요청을 한 상태
SYN-RECEIVEDSYN 요청을 받고 상대방의 응답을 기다리는 중
ESTABLISHED연결의 수립이 완료된 상태, 서로 데이터를 주고 받을 수 있음

TCP 4 way handshake

3 way handshake 와 반대로 가상 회선 연결을 해제할 때 주고 받는 확인작업
4번의 확인을 거친다고 하여 4 way handshake 라고 부름

상태

상태설명
CLOSE연결 수립을 시작하기 전의 기본 상태 (연결 없음)
ESTABLISHED연결의 수립이 완료된 상태, 서로 데이터를 교환할 수 있다.
CLOSE-WAIT상대방의 FIN(종료 요청)을 받은 상태. 상대방 FIN에 대한 ACK를 보내고 애플리케이션에 종료를 알린다.
LAST-ACKCLOSE-WAIT 상태를 처리 후 자신의 FIN요청을 보낸 후 FIN에 대한 ACK를 기다리는 상태.
FIN-WAIT-1자신이 보낸 FIN에 대한 ACK를 기다리거나 상대방의 FIN을 기다린다.
FIN-WAIT-2자신이 보낸 FIN에 대한 ACK를 받았고 상대방의 FIN을 기다린다.
CLOSING상대방의 FIN에 ACK를 보냈지만 자신의 FIN에 대한 ACK를 못받은 상태
TIME-WAIT모든 FIN에 대한 ACK를 받고 연결 종료가 완료된 상태. 새 연결과 겹치지 않도록 일정 시간 동안 기다린 후 CLOSED로 전이한다.

Time - Wait

먼저 연결을 끊는쪽에 생성되는 소켓으로 혹시 모를 패킷 전송 실패에 대비하기 위해 존재하는 소켓


출처 :

profile
Backend Developer

0개의 댓글