TCP header

  • 한 줄에 4 byte (=32 bits)



Source port address

  • 16 bits
  • 보낸 port 번호



Destination port address

  • 16 bits
  • 받는 port 번호



Sequence number

  • 4 byte (32 bits)
  • 상대한테 정보를 보낼 때, 의미 있는 정보를 담아 보냄.



Acknowledgment number

  • =Ack =응답 번호
  • 4 byte (32 bits)
  • 상대한테 정보를 보낸 후 다시 신호를 받을 때, 의미 있는 정보를 담아 보냄.



HLEN

  • 4 bits

  • Header의 Length를 나타냄.

  • 20 <= header size <= 60

    Q. header size는 max 60이라는데 4 bits(0~15)로 어떻게 나타낼까?

    A. 원래 60까지 표현하려면 6 bits(0~63)이어야한다. 하지만 공간을 절약할 방법을 생각해 보다 찾은 방법이 보낼 때는 (header size / 4)를 해서 HLEN에 저장하고, 받고 header size를 알고 싶을 때는 (HLEN * 4)를 한다.
    ex) header size = 40, HLEN = 60 / 4 = 15

    Q. HLEN이 왜 필요할까?

    A. header가 끝나는 지점 즉 Data 시작 지점을 알기 위해서 HLEN이 필수적이다.



Reserved

  • 6 bits
  • 미래를 위해 절약해 둔 공간



6가지 1 bit Control field(6 bits) 중 3가지

ACK

  • Acknowledgment number가 의미 있는 정보가 있는지 알려주는 방법
  • 1: 의미 있는 정보니까 확인하라는 의미.
  • 0: 의미 없다는 의미.

SYN

  • Sequence number가 의미 있는 정보가 있는지 알려주는 방법
  • 1: 의미 있는 정보니까 확인하라는 의미.
  • 0: 의미 없다는 의미.

FIN

  • 더 이상 전송할 데이터가 없음을 나타냄.



Checksum

  • Pseudoheader와 TCP header를 16 bits 씩 잘라 줄을 세운 다음에 모두 더해서 보수로 바꾼 값
  • data가 상대로 전송하는 과정에서 bit가 변할 수 있음. 이것을 Checksum을 통해 검출할 수 있음.
  • 'Checksum != 전송받은 header의 보수'이면 최소 1 bit의 오류가 존재한다는 사실을 알 수 있음. 그러나 어디에서 bit이 변했는지 알 수 없으므로 그냥 버리고, 다시 전송해달라고 요청함.
  • Checksum은 IP header에도 존재함.

Pseudoheader

IP header의 정보(보낸 IP, 받는 IP, protocol 종류, TCP 길이)를 담고 있는 header. 그다음 network layer에 보낼 때 Pseudoheader는 보내지 않음.

Q. 보내지도 않는 Pseudoheader를 왜 TCP segment에 보낼까?

A. TCP segment에 존재하는 CheckSum을 구하기 위해서.

profile
Hey there!

0개의 댓글