TCP Header란? TCP 프로토콜에서 송신측과 수신측의 신뢰성 있는 데이터 전송을 위해 필요한 정보를 담고 있는 20~60 바이트 크기의 헤더

- Source Port(16비트) : 송신자의 포트번호
- Destination Port(16비트) : 수신자의 포트번호
- Sequence Number(32비트) : 전송 데이터의 순서를 나타내는 번호
-> 데이터의 순서를 나타낸다.
-> TCP는 데이터를 쪼개서 여러번 보낼 수 있기 때문에 각 데이터 조각(?)에 일련번호를 붙여서 보낸다.
ex)
첫번째 세그먼트는 Sequence Number = 1000
두번째 세그먼트는 Sequence Number = 1500
=>중간에 500바이트 보냈다는 뜻
- Acknowledgment Number(32비트) : 상대방에게 다음에 기대하는 바이트 번호(Ack 플래그가 1일때만 유효)
ex)
만약 수신측에서 1000~1499까지 받았더라면
Acknowledge number = 1500 (난 1500번을 기다리고있다 라는 의미)
- Data Offset(4비트) : TCP 헤더의 길이
- Reserverd(3비트) : 예약 필드
- Flag / Control Bits(9비트) : 연결관리 및 데이터 제어 신호
- WindowSize(16비트) : 수신 측이 수용 가능한 남은 버퍼 크기
- Checksum(16비트) : 오류 검출용
- Urgent Pointer(16비트) : URG플래그가 1일때 긴급 데이터 끝 위치
- Optional + Padding(가변) : 이 부분의 바이트에 따라서 헤더의 크기가 결정된다.