업데이트:

1 분 소요

TCP header

  • 크기는 가변적으로 최소 20~ 60바이트 정도 차지를 한다.
  • source_port, Destination port :
    • 세그먼트의 출발지와 목적지를 나타내는 필드, 각각 16비트를 할당받는다
  • sequence Number :
    • 전송해야 하는 데이터 순서를 의미하고 재조립할 때 쓰이게 된다.
    • MSS 크기에 의해 나누어진 fragement들을 재조립할 때 사용된다.
  • Acknowledgement Number(ACK):
    • 승인번호는 데이터를 받은 수신자가 예상하는 다음 번호를 의미하고, 32bit를 할당 받는다.
    • 상대방이 보낸 sequence num + 자신이 받은 데이터의 byte
  • HLEN :
    • 4bit, TCP header의 크기를 나타낸다. 이 값을 통해 데이터의 시작위치를 알 수가 있다.
    • HLEN * 4 = TCP header의 크기
  • Reserved :
    • 미래를 위해 예약된 필드
  • URG:
    • 긴급 데이터임을 알리는 플래그, 처리되는 우선순위를 높인다
  • ACK:
    • 패킷 수신 승인을 의미한다.
    • 이 플래그가 0이라면 승인 번호 플래그는 무시된다
  • PSH:
    • 수신 측에게 이 데이터를 최대한 빠르게 전달해달라는 플래그
    • MSS보다 작은 데이터를 보낼 때 많이 사용된다고 한다.
    • URG랑 기능이 다른점 : 버퍼에 쌓지 말고 즉시 보내라고 TCP layer에 알리는 역할이다.
  • RST:
    • 이미 연결이 확립되어 Established 상태인 상대방에게 연결을 리셋해달라는 요청의 플래그
  • SYN:
    • 상대방과 연결을 시작할 때, 시퀀스 번호의 동기화를 맞추기 위한 플래그
  • FIN:
    • 상대방과 연결을 종료하고 싶다는 플래그
  • checksum:
    • 16bit, 오류검사에 사용된다.
    • 헤더들의 값, 데이터의 크기들을 다 더해서 저장한다. 이 값이 이동했을 때도 동일하면 손실이 없는 것이다.
    • 이때 다 더하면 16비트 이상의 값이 나올 수 있기 때무에 앞자리만 때서 따로 더하고 1의 보수로 바꾸어 저장한다.
  • Window size:
    • 16bit, 송신자가 한 번에 보낼 수 있는 크기
    • 송신자에게 Ack를 보내기 전에, 자신의 수신 버퍼 여유 용량 크기를 지속적으로 통보하는데 사용

MTU(Maximum Transfer Unit)

  • 네트워크 기기가 전송할 수 있는 최대 전송 단위이다.
  • 네트워크 환경에 따라 각각 다르다
  • 현재 대부분은 네트워크 환경이기 때문에 1500 byte로 통용되고 있다.

MSS(Maximum Segment Size)

  • TCP 상에서 전송할 수 있는 사용자 데이터의 최대 크기
  • MSS값은 MTU- IP Header의 크기(최소 20 Byte) - TCP Header의 크기(최소 20 Byte)
  • 4계층에서 단편화를 하고 3계층에서 단편화를 하지 않도록 MSS 사이즈를 잘 설정할 필요가 있다.
    • 3계층에서는 재조립을 할 때 ID,offset, flag를 보고 재조립을 해야하지만 4계층에서는 sequence number 만 가지고 재조립이 가능하기 때문이다.

UDP header

  • Header
    • 비연결성, 비신뢰성이 특징인 UDP답게 Data의 가번성이 필요없기 때문에 8byte로 고정된다
  • source port number(16bit), Destination port number(16bit), Total length, Checksum으로 구성되고 기능은 TCP와 동일하다
    • Total length 헤더 8byte를 포함한 길이를 명시한다..