CS지식/네트워크

TIL 정리_129(TCP 3Way Handshake)

ran4 2022. 8. 3. 23:37

https://www.youtube.com/playlist?list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi 

위의 강의를 듣고 정리한 내용입니다

 


TCP를 이용한 통신과정

연결 수립 과정

TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해

>> 가장 먼저 수행되는 과정 << 이다

 

 

  1. 클라이언트가 서버에게 요청 패킷을 전송
  2. 서버가 클라이언트의 요청을 받아들이는 패킷 전송
  3. 클라이언트는 이를 최종적으로 수락하는 패킷을 전송한다

-> 위의 3가지 과정을 3Way Handshake라고 부른다

 

 

 

TCP 3Way Handshake

- 연결 수립을 하기 위한 통신이다

 

1. 요청 패킷 전송

클라이언트 -------------------------------> 웹서버

 

Eth IPv4 TCP

 

 

요청 TCP

 

df a5 00 50
00 00 00 64
00 00 00 00
5 0 02 20 00
00 00 00 00

 

-> Syn 플래그가 세팅되며, Ack, Seq번호가 세팅되어 전송된다

Flag : SYN

S:100 A:0

 

*수립하는 과정이기 때문에 TCP의 페이로드는 없다

 

 

2. 요청 수락 패킷 전송

웹 서버  -------------------------------> 클라이언트

 

Eth IPv4 TCP

 

 

응답 TCP

 

00 50 df a5
00 00 07 d0
00 00 00 65
5 0 12 20 00
00 00 00 00

 

-> 출발지와 요청지 포트 변경

-> SYN와 ACK가 같이 세팅되어있다

 

Flag : SYN + ACK

S:2000 A:101

 

 

3. 최종 수락 패킷 전송

클라이언트 -------------------------------> 웹서버

 

Eth IPv4 TCP

 

Flag : ACK

S:101 A:2001

 

 

*보안에 관심이 있다면 Seq와 Ack의 값을 알아야 한다

 

1의 과정에서 S(Seq):100,  A(Ack):0으로 세팅이 될 때 

받는쪽에서 처음 전송한 번호로 동기화를 한다

 

받은 SEQ 번호 + 1을 하여 ACK 번호를 생성하고 (==101)

처음 보내는 경우 랜덤한 SEQ 번호를 생성하여 응답한다 (==2000이라 가정)

 

이 번호를 받은 클라이언트의 ACK 번호는 받은 SEQ 번호 + 1로 생성되며 (==2001)

SEQ 번호는 답장을 보내는 것이기 때문에 받은 ACK 번호로 구성된다 (==101)

 

 

> 위의 과정으로 통신을 할 때

연결 수립 후 데이터 통신을 할 때 클라이언트가 요청을 보내야 하는데,

클라이언트가 아닌 다른 누군가가 이 값을 계산하여 요청을 보내게 되면,

서버는 요청한 다른 누군가와 통신을 하게 된다

-> 세션 하이잭킹 공격

 

 

 

'CS지식 > 네트워크' 카테고리의 다른 글

NAT와 포트포워딩 | TIL_141  (0) 2022.09.07
TIL 정리_130(TCP 전송, 상태)  (0) 2022.08.05
TIL 정리_128(TCP 구조와 플래그)  (0) 2022.08.01
TIL 정리_127(UDP)  (0) 2022.07.29
TIL 정리_126(4계층 이론)  (0) 2022.07.27