[A] SEQ 1200, 100 Byte Data // 1200번 패킷, 100바이트 데이터
[B] -> ACK 1301 // 받은 데이터의 (바이트 수 + 1)만큼 패킷 번호가 증가, 100바이트 잘 받았으니 1301번 패킷 내놔라!
[A] SEQ 1301, 100 Byte Data // 1301번 패킷, 100바이트 데이터
[B] -> ACK 1402 // 100바이트 잘 받았으니 1402번 패킷 내놔라!
[A] SEQ 1200, 100 Byte Data // 1200번 패킷, 100바이트 데이터
[B] SEQ 1301 // 100바이트 잘 받았으니 1301번 패킷 내놔라!
[A] SEQ 1301, 100 Byte Data // 1301번 패킷, 100바이트 데이터, 유실
.
.
.
TimeOut
[A] SEQ 1301, 100 Byte Data // 1301번 패킷, 100바이트 데이터
[B] ACK 1402 // 100바이트 데이터 잘 받았으니 1402번 패킷 내놔라!
TCP 소켓은 응답을 요구하는 패킷을 보낼 시 타이머를 동작시키고, 타이머가 TimeOut 되면 패킷을 재전송 한다.
연결 종료시, 연결 종료를 알리는 메시지(FIN)를 패킷에 삽입해서 보낸다.
[A] FIN, SEQ 5000, ACK - // 우리, 그만하자
[B] ACK, SEQ 7500, ACK 5001 // 잠깐 기다려봐!
[B] FIN, SEQ 7501, ACK 5001 // 끊을 준비 끝!
[A] ACK, SEQ 5001, ACK 7502 // 끊자~