인프라 7기/Network

TCP segment 구조

킹버거 2023. 3. 30. 13:10

source port # : 출발지의 port 번호             dest port # : 도착지의 port 번호

sequence number(4bytes) : 보내줘야 할 데이터의 sequence number

여러 개의 패킷을 전달받기 때문에 패킷들의 순서를 보장하기 위해서 sequence number을 알려줘야 함. 

ex) 만약 이전 패킷으로 499번 data까지 전달받았다면, 500번부터 받아야 하기 때문에 이번에 보내줘야 할 sequence number가 500번부터라는 정보를 전달함. 

 

acknowledgment number(4bytes) : 몇번째 패킷까지 성공적으로 전달받았는지에 대한 정보

- byte stream number 내가 몇 번째 바이트까지 잘 받았다.

 

head len(header length) : header는 20bytes로 고정되어 있음. 하지만 header에 담을 정보가 더 필요할 수 있기 때문에 여유 공간을 줌. 확장된 header 정보를 4bits까지 허용함. (0~15) (word단위)  1word=  4bytes 

*** 엥 무슨 소리인지 모르겠어.

 

not used: flag가 확장될 경우 대비해서 비워둔 공간

 

UAPRSF :  bit flags
F: ping 비트 ? 1 >  접속 끊음  0> 평범
S: sink 비트    1> 접속  3-way handshake할 때 0은 평범
R: 접속 중간에 sequence number 등 통신에 필요한 정보를 잃어버리면 접속 초기화 //근데 요즘은 그냥 접속을 끊어버림 
R,S,F 는 동시에 1일 수 없음. R,S,F 중 두 개 이상이 1이라면, 보통 패킷이 깨졌네.라고 보는데 지금은 이상한 짓하네? 라고 받아들임
P: push 지금은 안 씀. 1이면 app에 따라 패킷을 빠르게 처리해주세요. 하려고 했ㄴㄴ데 지금 안 씀. 이 플래그의 값이 뭐든 신경 안 씀. 읽지를 않음.
  A: ackknowled비트 0이면 acknowledgement number 안 읽음. 값 있어도 신경 안 씀. 근데 보통 0 넣겠지. A비트가 1일 때만 ACKNOWLED NUMBER가 의미가 잇음.
U: urgent point 1이면 Urg data pnter 읽어서 행동해라~인데. 지금은 둘 다 안 씀. 

A,R,S,F만 사용