TCP - 하편

EN·2023년 6월 21일
0

Network

목록 보기
3/9

TCP timer

  • 요게 이제 TCP timer의 종류임.
  • Persistence Timer : 영속 타이머. 이거 어디서 했나? Clark 솔루션에서 응답시 보내는 패킷의 loss가 발생했을 경우 timer재서 다시 probe패킷 보낸다고 했었쥐
  • Keepalive Timer : 클라이언트가 강제 종료되거나, 소프트웨어적인 종료를 하면 클로즈 함수를 호출 안해도 연결 종료를 서버에 보냄. 근데 하드웨어적인 종료를 당하면? 클라이언트가 소리도 없이 죽어버림! 이걸 확인하기 위한 타이머.

RTT

  • RTT란? Round Trip Time임
  • 왕복 시간을 의미하는것.


Karn`s Algorithm

  • 만약, 타임아웃이 발생했다고 생각해서 재전송을 했는데, 사실 패킷 loss가 아닌 늦게 도착했을뿐이라면? 이러면 도착시간이 비정상적이게 짧게 측정될것이다.
  • Karn : "그럼 재전송할때 RTT측정하지 말자."

Options

  • TCP 헤더에서 전에 옵션에 대해서는 그냥 넘어갔었음.
  • 이제 옵션에 대해서 배워볼 것임
  • EOP랑 NOP는 1바이트 옵션임.
  • EOP는 끝에서만 쓰여야 함, NOP는 여러번 쓰일 수 있는 땜빵용임.
  • MSS와 Window Scale Factor옵션
  • Timestamp option
  • 패킷 안에다가 출발 시간을 달고가면, ACK으로 받을때도 그 시간을 달고 옴. 나중에 RTT계산하기도 편함.
  • 요거는 PAWS에도 사용됨.(Property Against Wrapped Sequence Number). 이게 뭐냐?
  • Sequence number로는 32 비트가 사용되는데, 패킷은 대량 2^32정도를 시퀀스 넘버로 가질 수가 있는거지.
  • 근데 만약 시퀀스 넘버의 중간에 시작해서, 파일의 크기가 엄청 커서, 시퀀스 넘버의 최대를 벗어났다고 가정해보자.
  • 그럼 나중에 들어온 패킷들은 이전에 들어온 패킷들과 시퀀스 넘버가 같아서 헷갈릴 수가 있어.
    이걸 보호하기 위한게 출발 시간을 같이 써서 구분하게 하기 위한 방법인거지.

  • SACK 옵션
  • 기존에 Accumulative ACK의 단점을 보완하고자, Selective를 사용하기 위한 옵션.
profile
iOS/JUJITSU

0개의 댓글