전송 절차의 세부적 내용은 약간 더 복잡하지만 자세히 알아두는 편이 좋은데, 나중에 신뢰성 데이터 전송 시스템을 직접 구현할 때를 대비해 좋은 학습 재료이기 때문이다. TCP가 신뢰성 전달을 하기 위해 채택한 구현 전략에선 시퀀스 번호 추적과 데이터 재전송이 필요하므로, 각 호스트는 열려 있는 모든 TCP 연결에 대해 상태 변수를 유지해야 한다. 표 2-14에 이들 주요 상태 변수와 그 표준 약칭을 RFC 793의 정의에 따라 정리했다. 상태 초기화 절차는 두 호스트 사이의 3-웨이 핸드셰이킹으로 시작된다.
▼ 표 2-14 TCP 상태 변수
변수 |
약자 |
정의 |
송신 다음 번호 |
SND.NXT |
호스트가 보낼 다음 세그먼트의 시퀀스 번호 |
송신 미확인 번호 |
SND.UNA |
아직 ACK를 받지 않은 데이터의 가장 앞 시퀀스 번호 |
송신 윈도 |
SND.WND |
호스트가 보낼 수 있는 데이터의 현재 용량(미확인 데이터에 대해 ACK를 받으면 최대 용량으로 리셋) |
수신 다음 번호 |
RCV.NXT |
호스트가 받을 것으로 예측되는 시퀀스 번호 |
수신 윈도 |
RCV.WND |
호스트가 받을 수 있는 데이터의 현재 용량(수신 버퍼를 초과하지 않도록) |