TCP 헤더

ohmin kwon·2021년 5월 25일
0
post-thumbnail

몇몇 필드를 제외하면 반드시 알 필요는 없다고 생각하지만, 한 번쯤은 머리에 넣어두면 좋을 그런 느낌?

TCP 헤더 구성

각 필드

Sourse & Destinaion Port Number

  • 각각 16비트
  • 발신지 포트 주소와 목적지 포트 주소다.
  • 양쪽의 프로세스를 식별
  • IP 주소 + 포트 번호 = 소켓(포트) 주소

Sequence Number

  • 32bit
  • 바이트 단위로 구분, 순서화되는 번호
    • TCP에서 흐름 제어를 하거나 신뢰성 보장, 연결 및 해제에 사용
  • 순서 가능 범위
    • 32비트이므로 2의 32승(4,294,967,295)
    • 임의 값으로 시작하여 최대값(4,294,967,295) 이후에는 0으로 시작
  • 초기 시퀀스 넘버
    • ISN(Initial Sequence Number)라고 부름
    • 난수 발생기로 ISN을 생성
      • 난수 발생기 : 매 4 ㎲ 마다 1씩 증가하는 12 비트 카운터에 의해 구현
    • TCP는 양방향이기 때문에 방향마다 ISN 번호가 다르다.

Acknowledgement Number

  • 32bit
  • 응답에 기대하는 Ack 번호 = 상대에게 보낸 Seq 번호 + 1

헤더 길이 필드

  • 헤더 길이를 4바이트(32비트) 단위로 표시

플래그 비트들

  • 6bit(각각 URG, ACK, PSH, RST, SYN, FIN)
  • TCP 패킷 전달에 관련되어 TCP 회선, 데이터 관리 제어 등에 쓰임
  • 흐름 제어, 연결 생성, 연결 해제, 연결 리셋, 데이터 전송 모드...

윈도우 크기

  • 16bit
  • 흐름 제어를 위해 사용
  • 상대방에게 자신의 수신 버퍼 여유용량 크기를 지속적으로 통보(패킷을 보낼 때마다, 매번 업데이트)

Checksum

  • 16bit
  • 에러 검출에 사용
    • 송신측에서, 전송할 모든 데이터를 16 비트 워드 단위로 구분하고,
    • 1의 보수를 취하고, 그 합에 대한 결과를 전송하면,
    • 수신측에서, 같은 합을 해보아서 오류를 검출하는 방식

Urgent pointer

  • 16bit
  • TCP 패킷에 포함된 긴급 데이터의 마지막 순서번호(Seq)

옵션

  • 최대 40바이트
  • TCP MSS 옵션을 협상하거나, 주어진 윈도우 크기보다 더 크게 사용하거나 선택확인응답을 하거나 타임스탬프 옵션 정의 등
profile
My simple note

0개의 댓글