TCP의 연결 수립과 종료를 이해하려면 MSS라는 단위와 TCP의 세그먼트 구조를 이해해야 한다.
Maximum Segment Size의 약자. TCP로 전송할 수 있는 최대 페이로드 크기.
Destination port는 특정 포트로 가기 위한 정보를 담고 있는 것
순서 번호(Sequence number) - 송수신되는 세그먼트의 올바른 순서를 보장하기 위해 세그먼트 데이터의 첫 바이트에 부여되는 번호
간단하게 보자면 순서를 알기 위해 부여되는 번호라고 생각하면 된다.
확인 응답 번호(Acknowledgement number) - 상대 호스트가 보낸 세그먼트에 대한 응답으로 다음으로 수신하기를 기대하는 순서 번호가 명시된다. 간단하게 보자면 '나 다음에 이거 받고싶어' 로 보면 된다.
TCP Flag (TCP Control Bits)
가운데 영어로 쓰여진 것들이 플래그로서 어떤 제어 역할을 한다고 생각하면 된다. ACK, SYC, FIN 세개만 알면 된다.
SYN 플래그가 1로 켜지면 연결하려고 하는구나, ACK가 켜지면 패킷 전달에 성공했구나, FIN이 켜지면 보낼 데이터가 없고 연결 종료하는구나 로 보면 된다.
처음 통신을 위해 연결을 수립할 때, SYN 플래그가 1로 설정된 경우 순서번호는 무작위 값이 된다. 이게 초기 순서번호 라고 한다. 초기 순서 번호가 100이라면 가장 먼저 보내게 될 세그먼트의 순서 번호가 초기 순서 번호인 100이 된다.
연결 수립 후 데이터를 송신하는 동안 순서번호는 송신한 바이트를 더해가는 누적값을 가진다.
확인 응답
예를 들어 순서번호가 8000인 세그먼트를 잘 수신한 뒤, 다음으로 8001을 받기를 원한다고 하자.
그러면 해당 호스트는 ACK 플래그를 1로 설정하고 확인 응답번호는 8001로 명시한 세그먼트를 전송하게 된다.
TCP는 상태를 유지하고 활용한다는 점에서 Stateful 프로토콜 이라고도 한다.
Stateless 프로토콜의 일종이다
연결 수립 및 해제, 재전송을 통한 오류 제어, 혼잡 제어, 흐름 제어 등을 수행하지 않는다. TCP처럼 상태를 유지하지도 활용하지도 않는다.
TDP는 TCP에 비해 적은 오버헤드로 패킷을 빠르게 처리할 수 있다.
단일 세션 - 여러 곳에서 동시 연결 시도 시, 이전 연결 끊어버리고 가장 최신 접속만 남기는 것. 보안특화에 사용 (ex.금융 어플)
다중 세션 - 여러 곳에서 동시 연결 가능. 유연성 특화에 사용. 구글 로그인 같은 것