TCP 헤더는 전송계층에서 붙는 헤더이다.
송신자포트/수신자포트/송신일련번호/수신일련번호/헤더길이/세션비트플래그/윈도우크기/검사합/긴급데이터로 구성되어 있다.
-/수신자 포트는 TCP세션을 시작 할때 운영체제에 의해 임의의 값이 배정되는 임의포트가 된다. 1024~65535 범위이다.
-송신일려번호는 전송되는 데이터의 각 바이트들을 순서대로 관리하고 신뢰성을 보장하기 위해 사용한다. 3-way 핸드쉐이크의 3단계중 첫 번째 단계는 송신 일련번호를 보내는 것이다. 이는 상대 시스켐이 수신한 바이트들에 대하여 수신확인을 할 수 있도록 한다.
-수신화인 일련번호는 세션의 통신 상대방으로부터 다음 전송 때에 받기를 기대하는 첫쨰 바이트의 일련번호이다. 3-way 핸드쉐이크 첫번째 단계에서 서버의 일련번호를 알지 못하믈 해당 필디를 무엇으로 채워 넣어야하는 것인데 0으로 채워 넣는다.
-TCP 헤더길이는 ip헤더 길이와 유사하게 기본 값은 5(즉 20바이트)이며 5보다 큰값이 설정되어 있다면 선택사항이 존재한다.
-세션비트 플래그는 각각 기능들을 한 헤더 내에 서로 조합되어 사용될 수 있다. 긴급데이터, 유효수신확인,푸쉬요청,재설정,동기화,종료데이터 순으로 각기 다른 독립적인 수행을 한다.
-윈도우크기는 실제적으로 TCP 데이터를 저장할 수 있는 송신자의 수신버퍼 크기이다. 이 필드는 매 TCP 헤더마다 존재하므로 수신버퍼의 가용 크기를 항상 최선의 값을 계산하여 보내주게 된다.
-긴급데이터크기는 목적지 호스트가 혼잡 상태에 있거나 데이터를 처리하기에 어려운 다른 문제가 있을 떄 긴급 데이터가 수신되면 목적지 호스트는 정확히 긴급 데이터 크기의 버퍼공간을 지우고 긴급 데이터 메시지를 수신하여 처리한다.
뒤로 옵션필드가 존재한다.
이처럼 헤더에 대해 알아보았는데 지금까지 배운 헤더들 중 가장 난이도가 높았지만 하면할수록 알게되니 뿌듯하다 ㅋㅋ