TCP
연결상태 목록

상태목록
- CLOSED
- LISTEN
- SYN-SENT
- SYN-RECEIVED
- syn+ack를 보내고 ACK 세그먼트를 기다리는 상태
- ESTABLISHED
- FIN-WAIT1
- CLOSE-WAIT
- fin세그먼트를 받고 ack세그먼트를 보낸 상태
- FIN-WAIT2
- ACK 세그먼트를 받고 fin 세그먼트를 받기 직전의 상태
- TIME-WAIT
- fin세그먼트를 받고 ack 세그먼트를 보낸 상태
- 일정 시간 동안 대기 이후 CLOSED
- CLOSING
- 상대 fin 세그먼트에 ack 세그먼트를 보냈지만 자신의 fin세그먼트에 대한 ack 세그먼트를 받지 못한 상태
- 동시에 연결을 종료하려 할때
- LAST-ACK
- 마지막 fin 세그먼트를 보내고 ack 세그먼트를 기다리는 상태

TCP 상태

3way handshake

연결 끊기

TCP 재전송 기능
- 확실히 전송했다는 보장이 있으려면
- 재전송 기반의 오류 제어 : 잘못 전송된 경우 재전송
- 흐름 제어 : 받을 수 있는 만큼만 받기
- 혼잡 제어 : 보낼 수 있는 만큼만 보내기
어떻게 잘못 전송되었다는 걸 알까?
- 중복된 ACK 세그먼트를 수신 했을 때
- 타임아웃이 발생할때
중복된 ACK 세그먼트를 수신

호스트 B는 여전히 n+1 세그먼트를 요청함
즉 호스트 A는 중복된 세그먼트를 수신 받음
타임아웃

잘못된 전송을 바로잡는 방법
Automatic Repeat Request을 이용
TCP의 혼잡제어와 흐름제어
- 흐름 제어 : 받을 수 있는 만큼만 받기
- 혼잡 제어 : 보낼 수 있는 만큼만 보내기
송신 버퍼와 수신버퍼
-
송신버퍼
- 애플리케이션 계층에서 전송할 데이터 임시 저장
-
수신 버퍼
-
버퍼 오버플로우
- 송신 호스트가 수신 호스트가 처리할 수 있는 수신 버퍼보다 더 많은 데이터를 전송하면?
흐름제어
- 송신 호스트가 수신 호스트 처리 속도를 고려하며 송수신 속도를 균일하게 맞추는 것
- 오늘날 TCP 에서의 흐름 제어는 슬라이딩 윈도우방식을 이용함
- TCP 헤더의 윈도우에 받을 수 있는 크기를 보낸다.
- 윈도우 : 파이프라이닝 가능한 순서범위 범위
- 윈도우 크기 : 확인 응답 받지 않고도 한번에 보낼 수 있는 최대 양

- 흐름제어의 주체는 수신지가 되어야 한다.
혼잡제어

혼잡제어 알고리즘



- 혼잡회피 중 세번의 중복 세그먼트가 발생했을 경우 빠른 회복 수행
