IT/Network

[Network] TCP 3 Way Handshaking & 4 Way Handshaking

코딩하는 너구리 2022. 10. 6. 23:47
반응형


https://javacoding.tistory.com/162

 

TCP란?

https://javacoding.tistory.com/160 IP(Internet Protocol) 내가 인터넷을 통해 정보를 원하는 곳으로 전달하고자 할 경우, 도착지를 알아야 한다. 나의 주소와 상대의 주소는 어떻게 나타낼 수 있을까? 이때 PC..

javacoding.tistory.com


이전에 TCP 프로토콜에 대해 정리하면서 확인한 TCP의 가장 뚜렷한 특징중 하나신뢰성이었습니다.
TCP에서는 어떻게 송, 수신시에 신뢰성을 보장할 수 있을까요?

TCP에서는 데이터를 보낼 때 송신자와 수신자간 연결을 확인한 뒤 데이터를 전송하고,
연결을 해제할 때에는 연결을 해제해도 되는지 서로 확인 후에 해제합니다.

연결 시 확인하는 과정이 3-Way-HandShaking이고,
연결 해제 시 확인하는 과정이 4-Way-HandShaking 입니다.


3-Way-HandShaking

응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미합니다.

데이터 전송 전에 상대방이 수신할 준비되었는지 확인할 수 있습니다.


패킷에 담긴 정보를 확인해서 HandShaking 과정이 이루어지는데 다음 두 가지 정보가 주요 역할을 하니 알아 두도록 합시다.

SYN(sequence number) : 난수값, 이 값은 나중에 데이터를 주고 받을 때 기준이 되는 값으로 사용됨.
* 난수값을 사용하는 이유?
두 호스트가 연결을 맺을 때 사용하는 포트는 유한 범위 내에서 사용하고 시간이 지남에 따라 재사용 됨. 따라서 두 호스트는 과거에 사용된 포트번호 쌍을 사용할 가능성이 존재함. 그렇기 때문에 만약 난수가 아닌 연속된 숫자를 사용할 경우에 이전 연결에서 오는 패킷인지 구분이 안될 수 있기 때문에 난수로 사용함.

ACK(acknowledgement) : 송신자가 보낸 SYN에 +1을 한 값. 송신자가 100을 보내고 수신자가 101을 보내면 서로의 존재를 인지하고 있다고 생각하면 됨.

 

 

 

3-way-handshaking 과정

STEP 1 - 클라이언트서버에게 접속을 요청하는 SYN 패킷을 보냅니다.
STEP 2 - 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN을 보냅니다.
STEP 3 - 클라이언트서버에게 ACK를 보냅니다.

위의 과정을 통해서 서버와 클라이언트는 서로 연결되었음을 확인했습니다. 이후 데이터를 주고받게 됩니다. 상대방이 데이터를 받을 준비가 되었다는 것을 확인했으니 데이터를 제대로 보냈다고 생각할 수 있겠죠? 신뢰성이 느껴집니다.


4-Way-HandShaking

응용프로그램이 상대방 컴퓨터와 세션을 해제하는 과정을 의미합니다.

연결 해제시 상대방이 더이상 보낼 데이터가 없는지 확인할 수 있습니다.

 

 

 

4-way-handshaking 과정

STEP 1 - 클라이언트서버에게 종료하겠다는 FIN을 보냅니다.
STEP 2 - 서버는 FIN을 받고 ACK를 보낸 후 자신이 데이터를 모두 보낼때까지 기다립니다.
STEP 3 - 서버가 데이터를 모두 보냈다면 FIN을 클라이언트에게 보냅니다.
STEP 4 - 클라이언트는 ACK를 보내 응답하고 서버는 ACK를 수신하면 연결을 해제합니다.


STEP 2 과정에서 자신의 데이터를 모두 보낼때까지 대기하는데, 바로 연결을 해제하면 전송중이던 데이터가 유실될 수 있기 때문에 이를 방지하기 위함입니다.



TCP3-way-handshaking4-way-handshaking에 대해 정리해보았습니다.


다음번 글에서는 주고받는 Packet에 대해 조금 더 상세히 알아보면 좋지 않을까 싶습니다.

 


참고
- https://kosaf04pyh.tistory.com/162


반응형

'IT > Network' 카테고리의 다른 글

[Network] TCP Packet(Segment) 분석  (0) 2022.10.07