TCP 3 way handshake & 4 way handshake

TCP - 전송 제어 프로토콜(Transmission Control Protocol) → 인터넷 상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

2022-02-13에 씀

TCP?

패킷: 데이터를 여러 개의 조각으로 나누어 전송할 때 그 조각

특징

  1. 연결 수립 (Connection Establish)
  2. 데이터 전송 (Data Transfer)
  3. 연결 종료 (Connection Termination)

긍정 확인응답: ACK 신호, 수신 측에서 메시지를 에러 없이 정상적으로 수신했다 / 송신해도 된다는 것을 송신 측에 알리는 신호 부정 확인응답: NACK 혹은 NAK 신호, 정상적으로 수신되지 않았음을 송신측에 알림 → 잘 쓰이지 않는다

Circuit Switching

스크린샷_2021-09-09_오후_5 04 25

Datagram Packet Switching

스크린샷_2021-09-09_오후_5 04 48

제공하는 기능

스크린샷_2021-09-09_오후_5 12 13 스크린샷_2021-09-09_오후_5 37 33

현재 윈도우에 포함된 모든 패킷 전송 → 전달 확인되는대로(ACK) 윈도우를 옆으로 옮김(Slide) → 윈도우 내 전송되지 않은 패킷 전송

TCP 연결 관리

스크린샷_2021-09-09_오후_5 13 57

Finite State Machine

스크린샷_2021-09-09_오후_4 56 17

전체 전송 과정

연결 수립 - 3 way handshake

스크린샷_2021-09-09_오후_5 14 58

연결 과정

  1. 클라이언트에서 서버로 SYN 데이터 전송 (연결 요청)
  2. 서버에서 SYN 데이터 받으면 요청을 받던 포트가 LISTEN → SYN_RCV로 상태 변경
  3. 서버가 클라이언트에게 ACK + SYN 전송
  1. 클라이언트가 ACK+SYN 받으면 closed → ESTABLISHED로 상태 변경하고 서버에 ACK 전송
  2. 서버가 ACK 받으면 상태가 SYN_RCV → ESTABLISHED로 상태 변경
  3. 서로의 포트가 ESTABLISHED 되면 연결 완료

연결 해제 - 4 way handshake

스크린샷_2021-09-09_오후_5 15 20

해제 과정

  1. 클라이언트가 FIN 플래그 전송 → FIN-WAIT 상태
  2. 서버가 FIN 플래그 수신, 클라이언트에 ACK 전송 → CLOSE_WAIT 상태 (자신이 보낼 데이터 다 보낼 때까지 대기)
  3. 서버가 연결 종료할 준비가 되었으면 클라이언트에 FIN 전송 → LAST_ACK 상태
  4. 클라이언트가 FIN 수신, 해지 준비 되었으면 ACK 전송 → TIME-WAIT 상태
  5. 클라이언트는 MSL * 2만큼 기다린 후에 CLOSED 상태

MSL - Maximum Segment Lifetime

스크린샷_2021-09-09_오후_5 18 14

이렇게 하는 이유

  1. 연결 종료 시에 신뢰성 보장을 위해 서로 CLOSE된 것을 확인하기 위함
  1. 네트워크에 있는 중복 세그먼트를 소멸시키기 위함

TCP State

TCP 헤더

제어 비트

프로필 사진

조예진

이전 포스트
OSI 7계층
다음 포스트
HTTP & HTTPS