[네트워크] 전송계층 - TCP(1)

장현수·2023년 5월 30일
0

네트워크

목록 보기
5/11

복습

  • 전송계층의 프로토콜 TCP, UDP
  • 이들이 제공하는 기능 : multiplexing, demultiplexing 쉽게 말해 정보를 내보내고 받는 것
  • TCP의 demux 방식과 UDP의 demux방식의 차이 : connection oriented와 connectionless의 차이
  • UDP가 제공하는 기능 : 포트번호를 통해 mux&demux, checksum필드를 통해 최소한의 error checking

TCP의 기능

Reliable Data Transfer(RDT) 1.0

  • 메세지 하나 보내고, 그 메세지가 제대로 갔는 지 확신 후 다음 메세지 전송하는 방식
  • 메세지 전송 도중 error, 유실 발생 가능
  • 연결이 reliable하다는 가정하에 sender은 메세지를 보내고, receiver는 메세지를 받는 단순한 형태

Reliable Data Transfer(RDT) 2.0

  • 메세지 전송 도중 error가 발생 가능한 경우를 가정
  • error checking을 위해 checksum이 있어야 함

acknowledgements(ACKs)

  • receiver가 잘 받았다고 sender에게 응답
  • 이 경우 sender는 다음 메세지를 전송

negative acknowledgements(NACKs)

  • receiver가 error가 있다고 sender에게 응답
  • 이 경우 sender는 해당 메세지를 재전송
  • error detection과 feedback을 통해 reliable한 전송을 구현
  • 피드백 전송단계의 오류를 해결할 수 없음
  • 피드백 판별이 불가할 때마다 메세지를 재전송하게 되면 receiver입장에서 받은 메세지가 이전 메세지의 재전송인지, 다음 메세지인지 구분할 수 없게 되는 문제 발생
    -> 메세지에 seq.no가 필요 (seq.no로 메세지 구분)

Reliable Data Transfer(RDT) 2.1

  • 위의 메세지 구분을 위한 seq.no를 적용한 버전
  • error detection, feedback, seq.no를 가지고 error가 발생할 수 있는 unreliable한 채널의 한계를 극복

Reliable Data Transfer(RDT) 2.2

  • NAK-free protocol
  • NAK없이 ACK만으로 RDT 2.1과 같은 동작을 구현
  • receiver는 무조건 피드백을 ACK를 줌, 그러나 seq.no를 함께 준다.
  • sender는 피드백을 확인해 seq.no에 해당하는 메세지를 전송
  • 메세지 전송 후 다음 메세지의 seq.no를 받지 못하면 계속 재전송

Reliable Data Transfer(RDT) 3.0

  • 가장 현실적인 프로토콜로서, error와 loss(데이터 유실)이 발생할 수 있는 환경에서 필요한 매커니즘
  • timer를 통해 delay 또는 loss에 대한 대응
    [동작]
  • error가 없는 경우 : seq.no를 확인하여 메세지 전송
  • 메세지가 유실된 경우 : timer에 설정한 시간 동안 피드백이 없을 경우 유실로 판단, 메세지 재전송
  • 피드백이 유실된 경우 : sender입장에서는 메세지 유실과 동일. timer시간 초과시 메세지 재전송. -> receiver는 메세지 중복인 경우 알아서 버리고 ACK + seq.no 전송.
  • 유실이 아닌데 지연으로 인해 timer가 먼저 터진 경우 : sender는 유실로 판단, 메세지 재전송. receiver는 중복 판단하고 피드백으로 ACK + seq.no 전송
profile
개같이 발전하자 개발

0개의 댓글