3-way 핸드셰이크가 끝나고 실제 데이터를 보내거나 상대방이 받을 때는 TCP 헤더의 ③ 일련번호(sequence number)와 ④ 확인 응답 번호(acknowledgement number)를 사용한다.
1) 일련 번호
TCP는 데이터를 분할해서 보내는데 일련번호는 송신 측에서 수신 측에 ‘이 데이터가 몇 번째 데이터인지’ 알려주는 역할을 한다. 전송된 데이터에 일련 번호를 부여하면 수신자는 원래 데이터의 몇 번째 데이터를 받았는지 알 수 있다.
2) 확인 응답 번호
확인 응답 번호는 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할을 한다. 그래서 이 번호는 다음 번호의 데이터를 요청하는데도 사용된다. 예를 들어 10번 데이터를 수신하면 11번 데이터를 송신 측에 요청하는 것이다.
3) 데이터 통신 예시
① 컴퓨터 1은 컴퓨터 2로 200바이트의 데이터를 전송한다.
② 컴퓨터 2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터 번호를 확인 응답 번호에 넣는다. 다음에 수신하고자 하는 데이터는 3001 + 200 = 3201이므로 3201번부터 보내 달라고 요청한다.
③ 컴퓨터 1은 컴퓨터 2로 3201번부터 200바이트의 데이터를 전송한다.
④ 컴퓨터 2는 200바이트를 수신하고 다음에 수신하고자 하는 데이터의 번호를 확인 응답 번호에 넣는다. 다음에 수신하고자 하는 데이터는 3201 + 200 = 3401이므로 3401번부터 보내 달라고 요청한다.
① ~ ④를 데이터 전송이 완료될 때까지 반복한다. 만약에 전송 과정에서 데이터가 손상되거나 유실된 경우에는 재전송하게 되어 있는데 이를 재전송 제어라고 한다. 재전송 제어로 인해 일정 시간 동안 대기한 후에 재전송을 진행한다.