TCP 3 - Way HandShaking
** 일반적인 공격들은 TCP 연결관리의 취약성을 악용한다.
TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
💡
과정 요약
Client
- TCP SYN → Server
Server
- TCP SYN ACK → Client
Client
- TCP ACK → Server
- SYN(Synchronize Sequence Numbers)
- ACK(Acknowledgment)
전반적인 설명
- 클라이언트 애플리케이션 프로세스 → 서버에 있는 프로세스와 연결하고 싶은 fact — tell → 클라이언트 TCP
[3-Way HandShaking]
1단계
클라이언트 TCP
는서버 TCP
에게 세그먼트 송신 (애플리케이션 계층 데이터 포함 X)세그먼트 내부
- 세그먼트 헤더 : SYN (플래그비트) = 1
- 클라이언트 최초의 순서번호 : client_isn
- 해당 세그먼트는 IP 데이터그램 안에서 캡슐화 ⇒ 서버로 송신
2단계
- 서버는 전달받은 IP 데이터그램으로부터 TCP SYN 세그먼트를 뽑아냄
- 클라이언트 tcp로 연결 승인 세그먼트를 송신
연결 승인 세그먼트 내부
- 세그먼트 헤더 : SYN (플래그비트) = 1
- 확인응답 필드(ack) : client_isn +1
- 서버 최초의 순서번호(seq) : server_isn
⇒ 클라이언트의 최초 순서번호 client_isn을 가지고 연결을 시작하기 위해서 SYN 패킷을 수신했다.
이 연결 설정에 동의한다.
서버 최초의 순서번호는 server_isn이다.
3단계
- 연결이 설정되었기 때문에 SYN = 0
- 확인응답 필드(ack) : server_isn +1
- seq : client_isn + 1
위의 3단계가 마무리 되면 클라이언트와 서버는 각각 서로에게 데이터를 포함하는 세그먼트를 보낼 수 있음 !

Q. 왜 초기호 순서번호가 필요한가?
Q. 왜 2방향이 아닌 3방향 핸드셰이크인가?
- 들려 ?
- 응 들려 ! 넌 어때 ?
- 나도 들려 ! 이제 말할게
TCP 4 - Way HandShaking
세션을 종료하기 위해 수행되는 과정

- 나 이제 전화 끊고 싶어
- 응, 나 이거 까지만 말하고 끊을게
- 이제 다 말했어 끊자!
- 응, 그래~
Uploaded by N2T