Computer Science
[CS] TCP 연결이라는 착각 / 3-way-handshake
bkuk
2023. 2. 24. 11:04
3 Way-Handshake
전송제어 프로토콜(TCP)에서 통신을 하는, 연결을 위해 주로하는 방법론이다. 서로 연결이 잘 되어있는지 확인하는 과정/방식이다.
Client와 Sever에서 주고받는 데이터의 단위는 Segment 이다.
위 그림을 통해 알 수 있듯이 클라이언트가 하나의 데이터를 Server측으로 보내는데 이는 Segment이다. 또한, flag가 Syn(1000) 로 set 된 Segment이다.
Client에서 데이터를 보내기 전부터, Sever측에서는 계속 Listen 하며, Segment가 오면 '누가 나랑 통신하자고 연락이 왔네?' 라고 판단한다. Sever 측에서는 응답을 잘 받았다는 의미로 받은 시퀀스넘버에 +1을 해서 1001번과 자신의 시퀀스넘버 4000번을 보낸다.
Client측에서도 받은 시퀀스넘버에 +1 해서 다시 보낸다.
따라서, 이는 시퀀스 번호를 교환하는 행동이라고 볼 수 있다.
추가로, 위에서 데이터를 주고받을 때, MSS(maximum segment size)도 같이 보내며, 서로의 MSS 를 비교해서 둘 중 낮은 MSS로 선정한다.
또, 정책을 하나 교환하는데 이는 혼잡제어 정책을 교환한다. 대표적으로 SACK 가 있다.
하지만 보완성이 하나도 없기때문에, 보안사고가 많이 발생하는 부분이다.