
TCP의 형식
- Source Port : 송신자의 IP 주소, Port 번호
- Destination Port : 수신자의 IP 주소, Port 번호
- Sequence number : TCP 전송 시 전송되는 Packet에 붙는 번호.
전송 순서를 위해 사용- Ack number : Packet 수신 후, 확인 응답과 다음 Packet 요청을 위해 사용
- Head len : 헤더 길이 표현
- Not used : 공백
- UAPRSF : 1-bit 길이의 Flag 비트 용도
- U : Urgent 긴급한 데이터를 표기하기 위해 사용
- A : 통신 시작, 종료 시 Ack의 의미 부여를 위해 사용
- P : Push 데이터를 Push하여 먼저 송신하기 위해 사용
- R : Restart 통신 재시작을 위해 사용
- S : Syn 통신 시작 시 연결을 위해 사용
- F : FIN 통신 종료 시 연결 해제를 위해 사용
- Receive window : 수신자 측의 여유 Buffer 용량
- checksum : 데이터의 오류 검증을 위해 사용
- Urg data pointer : 긴급한 데이터 표기를 위해 사용
TCP Header의 필수 내용.
32-bit 길이 5줄 --> 총 20bytes 크기로,
TCP Header의 최소 크기 = 20bytes이다.
흐름 제어
혼잡 제어
"혼잡 제어"는 통신 망 자체의 트래픽 양에 영향을 받는다.
네트워크 통신 망의 트래픽을 확인하여 "전송하는 데이터 양을 정하는 방법"이다.
TCP에서 사용하는 Window는 2가지가 있다
Awnd (Advertised Window)
Cwnd (Congestion Window)
TCP 혼잡제어 방식

- 데이터량을 점차 증가시킨다.
- 데이터 손실 or 문제 발생 시 --> 데이터량 대폭 감소
- 다시 데이터량 점차 증가
데이터 전송 문제의 형태에 따라 처리 방식 변화
- 시작 Window Size = 1
- Threshold 까지는 Slow Start 방식 사용 (Window Size를 2배씩 증가)
- Threshold 이후 AIMD 방식 사용 (Window Size를 1씩 증가)
- 3개 Ack 중첩 혹은 Timeout 발생 시
-> Threshold를 1/2로 설정, Window Size를 1부터 다시 시작한다.
- 시작 Window Size = 1
- Threshold 까지는 Slow Start 방식 사용 (Window Size를 2배씩 증가)
- Threshold 이후 AIMD 방식 사용 (Window Size를 1씩 증가)
--> 여기까지는 TCP Tahoe와 동일
- Ack 중첩 시 : Window Size를 1/2로 줄이고, 해당 값을 Threshold 값으로 설정
- Timeout 발생 시 : Window Size를 초기값으로 설정, Threshold는 그대로 둔다.
