해당 포스팅은 한양대학교 이석복 교수님의 컴퓨터네트워크 강의를 정리한 글입니다.
http://www.kocw.net/home/search/kemView.do?kemId=1169634
1. Overview
- point-to-point: 딱 한 쌍의 process 통신
- realiable, in-order byte stream
- pipelined: TCP congestion과 flow control이 window size를 결정
- send & receive buffers
- full duplex data: 양방향 통신
- connection-oriented: handshaking
- flow controlled
1) TCP segment structure

2) TCP seq. #'s and ACKs
- Seq. #'s: segment's data의 첫번째 바이트이다.
- ACKs: seq # of next byte, cumulative ACK

3) Timeout
- TimeoutInterval = EstimatedRTT(왔다갔다하는 시간) + 4 * DevRTT
-> RTT에 margin을 더해주는 것
- TCP는 딱 하나의 retransmission timer를 사용한다.
2. retransmission scenarios

-
당연히, 패킷 유실시에는 타임아웃을 통해 다시 보내고, 응답 속도가 느려서, 패킷을 보내는데 타임아웃 된 경우에는?
-> 마지막으로 받은 데이터에 해당하는 ACK를 다시 보내준다.
-
중복으로 ACK를 3번 이상 받으면 바로 유실 여부를 판단 가능