지금까지 신뢰적인 데이터 전송에 대해 알아보았습니다.
이제는 TCP로 방향을 돌려봅시다.
TCP는 애플리케이션 프로세스가 다른 프로세스에게 데이터를 보내기전에 두 프로세스가 서로 핸드셰이크
를 먼저 해야하므로 연결지항형
입니다.
TCP연결은 전이중서비스(full-duplexservice)를 제공합니다.
-> A->B로 흐르는 동시에 B->A로 흐르는 것이 가능하다는 말
항상 단일 송신자와 단일 수신자 사이의 점대점(point-to-point)입니다.
-> 한 송신자가 여러 송신자에게 전송하는 멀티캐스팅이 불가능하다는 말
클라이언트 애플리케이션 프로세스는 서버의 프로세스와 연결을 설정하기를 원한다고 TCP 클라이언트에게 먼저 알린다.
클라이언트의 트랜스포트 계층은 서버의 TCP와 TCP 연결 설정을 진행한다. 클라이언트가 먼저 특별한 TCP 세그먼트를 보낸다.
서버는 두 번째 특별한 TCP 세그먼트로 응답한다.
마지막으로, 클라이언트가 세 번째 특별한 세그먼트로 다시 응답한다.
rdt프로토콜처럼 TCP도 손실세그먼트를 발견하기 위해 타임아웃/재전송 매커니즘을 사용합니다.
이 타임아웃은 세그먼트가 전송된 시간부터 긍정확인 응답이 올 때까지의 시간인 RTT(rount-time trip)보다 조금 커야합니다.
TCP는 원래의 SR프로토콜과 매우 유사합니다.
그래서 TCP의 오류 복구 메커니즘은 GBN과 SR프로토콜의 혼합으로 분류하는 것이 적당하다고 합니다.
TCP 혼잡 제어 알고리즘은 다음의 세 가지 중요한 구성요소를 가집니다.
1. 슬로우 스타트 (slow start)
2. 혼잡 회피
3. 빠른 회복
내용이 어려워서 나중에 필요할 때 더 자세하게 공부해야겠다..