TCP 는 패킷 손실을 회복하기 위해 타임아웃 후 재전송한다.
EstimatedRTT = (1-α) * EstimatedRTT + α * SampleRTT
DevRTT = (1-β) * DevRTT + β * |SampleRTT - EstimatedRTT|
TCP의타임아웃 간격(TimeoutInterval) =추정된 RTT(EstimatedRTT) + 4 *DevRTT(safety margin)
Socket clientSocket = new Socket("hostname", "port number");
Socket connectionSocket = welcomeSocket.accept();
req_conn(x)
를 전송한다.req_conn(x)
를 재전송한다.acc_conn(x)
로 응답하지만, host A는 연결을 종료한다.Socket connectionSocket = welcomeSocket.accept();
SYN(x)
, SYNACK(seq=y, ACKnum=x+1)
SYN(x)
를 수신하고, SYNACK(seq=y, ACKnum=x+1)
를 전송하여 클라이언트에게 연결 설정을 알림ACK(ACKnum=y+1)
ACK(ACKnum=y+1)
을 수신하고, 클라이언트와의 연결이 설정됨Socket clientSocket = newSocket("hostname", "port number");
SYN(seq=x)
SYN(seq=x)
를 전송하여 서버에게 연결 설정을 요청SYNACK(seq=y, ACKnum=x+1)
, ACK(ACKnum=y+1)
SYNACK(seq=y, ACKnum=x+1)
을 수신하고, ACK(ACKnum=y+1)
을 전송하여 서버와의 연결이 설정됨clientSocket.close()
를 호출하여 FIN 세그먼트를 전송한다.