TCP - 연결지향형 트랜스포트
- TCP 는 데이터를 보내기전에 두 프로세스간 ‘핸드쉐이크’ 를 먼저해야한다.
- TCP 프로토콜은 오직 종단 시스템에서만 동작하고 중간의 네트워크 요소에서는 동작하지 않는다.
- TCP 연결은 데이터가 동시에 양방향으로 흐를수 있다.
- TCP 연결은 항상 단일 송신자와 단일 수신자 사이 Point-to-Point
- 세그먼트로 모아 담을 수 있는 최대 데이터의 양
→ 최대 세그먼트 크기 (MSS)
- 링크 계층에서 보낼 수 있는 가장 큰 프레임의 길이(MTU)
= IP Header + TCP Header + MSS

TCP 세그먼트 구조

- 순서 번호(seq.num), 확인응답(ACK) : 각 32bit → 신뢰성있는 통신
- 수신 윈도(rcv_window) : 16bit → 흐름제어에 사용
- 헤더 길이 : 4bit
- 플래그 필드 : 8bit → 각각활성화 시켜서 정보를 표현한다.
- ACK : 확인 응답 필드가 유용한지
- RST, SYN, FIN : 연결 설정과 해제
- PSH : 상위계층으로 즉시 전달을 알림
- URG : 긴급 → 긴급 데이터 포인터 필드
- CWR, ECE : 혼잡도를 라우터에게 알려줌 → 잘 안쓴다.
TCP 순서번호와 ACK 번호
TCP 세그먼트 헤더에서 가장 중요한 필드 두가지 - 순서번호, ACK
TCP는 데이터를 구조화되어 있지 않고 단지 순서대로 정렬되어 있는 바이트 스트림으로 본다. 세그먼트에 대한 순서 번호는 세그먼트에 있는 첫 번째 바이트의 바이트 스트림 번호이다.
ex ) A→B 전달, File : 500,000 byte , MSS : 1,000 byte , 첫 번째 바이트 : 0

500,000 / 1,000 → 500 개의 세그먼트로 구분