2020. 7. 4. 21:14ㆍcomputer science/network
1. 3-way handshake
두 호스트 간 데이터를 전송하기 전 신뢰성있는 연결을 맺어주는 방식입니다.
TCP/IP 프로토콜을 이용해 통신하는 응용프로그램에서 데이터를 전송하기 전에 정확한 전송을 보장하기 위해 수신 호스트와 사전에 세션을 수립하는 과정을 의미합니다.
아래 그림은 Client와 Server가 서로에게 송/수신 준비를 알려 연결을 초기화하는 3-way handshake입니다.
1) Client는 Server에 접속을 요청하는 SYN 패킷을 보내고, 응답을 기다립니다(SYN_SENT).
2) Server는 SYN 요청을 받고, Client에게 요청을 수락하는 긍정 응답(ACK)과 SYN 패킷을 보내고 응답을 기다립니다(SYN_RECEIVED).
3) Client는 Server에게 긍정 응답을 보내면 서로 연결이 이뤄지고 데이터를 송/수신할 수 있게 됩니다(ESTABLISHED).
* SYN : SYNchronize sequence numbers
* ACK : ACKnowledgement
SYN_SENT -> SYN_RECEIVED -> ESTABLISHED
2. 4-way handshake
두 호스트 간 세션을 종료하기 위해 수행되는 절차입니다.
1) Client가 연결을 종료하겠다는 FIN 패킷을 전송합니다.
2) Server는 확인 응답을 보내고 자신의 통신이 끝날 때까지 기다립니다(TIME_WAIT).
3) Server에서 통신이 끝났으면 연결을 종료하는 FIN 패킷을 전송합니다.
4) Client는 확인 응답을 보냅니다.
만약 전송한 패킷이 Routing 지연이나 패킷 유실로 인해 재전송되는 경우 Server에서 전송하는 FIN 패킷보다 늦게 도착할 수 있습니다. 그렇게 되면 해당 패킷은 폐기되기 때문에 데이터 유실이 일어날 수 있습니다.
이러한 현상을 대비해 일정 시간동안 세션을 남겨놓고 패킷을 기다리는 TIME_WAIT 과정을 거칩니다.
'computer science > network' 카테고리의 다른 글
오류 검출 방식(패리티 검사, CRC, 체크섬, 해밍코드)::네트워크 (1) | 2020.07.04 |
---|---|
OSI 7 계층 모형::네트워크 (0) | 2020.06.26 |