글 작성자: Sowhat_93

TCP의 연결성립과 연결종료 과정.

전송 프로토콜로 TCP 방식을 사용하려한다면,

본격적인 데이터통신에 임하기전에 Connect(연결) 과정을 거쳐야한다.

HandShake라는 이름에서도 의미를 알수 있듯이,  이것은 일종의 양측 상호확인 절차이다.

(합시다. Okay 저도 수락 합니다. 아 그럼 괜찮은걸로 알겠습니다?)  같은...

클라이언트 측은 통신을 원한다는 의사를 밝힌다. 이것이 곧 서버의 특정 Port에 SYN을 보내는 행동이다.

물론 보이듯이 서버는 해당 Port를 LISTEN 상태로 두어야한다. (LISTEN 상태를 곧 열린 상태라고 보아도 된다.)

서버는 열린 Port로 들어온 Client로부터의 SYN을 받고, Okay. 통신하자 하고 SYN+ACK를 보낸다.

 

Client는

서버에서 Okay가 왔으니 이제부터 통신할수 있겠구나. 해서,

상호 연결이 성립한 것으로 간주한다 또한,

서버로 '너의 Okay 의사를 잘 받았다'라는 의미로 Ack를 다시 보낸다.

 

Server는

Ack를 받고,

'내가 보낸 Okay의사가 Client에도 잘 도착 되었네.'라고 인지하고,

상호 연결이 성립한 것으로 간주한다.

 

TCP에서 의 SYN과 ACK는 본래 다음과 같은 의미를 가진다.

SYN 은 Synchronize 의 약자로, '우리가 처음에 주고 받을 데이터의 일련번호(Seq) 를 이걸로 맞추자'를 나타낸다.

ACK는 Acknowledgment의 약자로, '내가 데이터의 순서 ~번까지는 잘 받았다'라는 의미를 나타낸다.

이는 다른 포스팅에서 상세히 설명한다.

 

TCP 의 Seq에 대해 모른다면,

연결 성립 얘기하는데 무슨 데이터 순서 얘기가 나오니 혼란스러울 수 있다.

연결성립 에서는 우선 SYN과 ACK를 '연결 하자.' '잘 받았다'의 의미로만 이해해도 무방하다고 본다.

Seq 에대해 알고나면 이게 왜 필요한지 알게 될것이다.