TCP 헤더
TCP통신으로 데이터를 보낼 때 헤더를 붙여서 보내는 것을 TCP 헤더라고 하며, TCP 헤더가 붙은 데이터를 세그먼트라고 한다.
이 헤더에는 출발지 포트번호(16비트)부터 목적지 포트번호(16비트)... 옵션까지 11가지의 데이터가 포함되어 있다.
코드비트에는 정보의 연결 제어 정보가 기록되고 이 기록을 토대로 가상의 독점 통신로를 확보한다.
가상의 독점 통신로 : TCP통신에서 정보를 전달하기 위해 사용되는 가상의 통신로. 연결의 확립 및 데이터 전송
3-way 핸드셰이크
데이터를 보내기 전 연결 확립을 위해 패킷 요청을 세번 교환하는 과정.
코드비트 중 ACK=확인 응답, SYN=연결요청을 사용하여 패킷을 교환하는 과정을 거친다.
위의 경우는 연결을 하기위한 과정이고 반대로 연결을 해제하기 위한 과정도 있다.
코드비트 중 ACK=확인 응답, FIN=연결 종료를 사용하고 과정은 위의 1~3과 동일하지만 SYN이 FIN으로 대체되어 있다고 생각하면 편하다.
일련번호는 송식 측에서 수신측에 해당 데이터가 몇 번째 데이터인지를 알려주며 몇 번째 데이터를 받았는지 확인하여 수신측에 알려거나 다음 데이터를 요청하는데 사용된다.
재전송 제어
데이터가 손상 및 유실 되었을 경우 데이터를 재전송 시켜달라고 하는데 이것을 재전송 제어라고 한다.
세그먼트를 하나 보낼 때 마다 응답을 기다리는 방식이 3-way 핸드셰이크 방식인데 이 방식의 경우 매번 응답을 기다려야해서 효율이 좋지 않다.
그렇기에 세그먼트를 연속해서 보내고 응답을 한번에 받게 되면 효율이 높아지는데 많은 양의 세그먼트를 보낼 경우 그것을 보관하는 장소를 버퍼라고 하며 버퍼보다 양이 많아 넘칠경우 이것을 오버플로라고 한다.
오버플로가 발생하지 않도록 버퍼의 한계 크기를 정해두는데 윈도우 크기값에 그 크기를 저장해둔다.