[컴퓨터네트워크] 애플리케이션 계층 2

백은진·2021년 4월 4일
1

강의

목록 보기
1/7
post-custom-banner

복습

transport - TCP/UDP

  • TCP
    • reliable한 통신 지원 (APP에서 내려온 데이터가 하나도 유실되지 않고 receiver까지 모두 전달됨, 그러나 실제 환경은 unreliable함)
  • UDP가 하는 기본 기능
    • 멀티플렉싱
    • 에러체킹 (에러가 있을 경우 receiver process로 전달되지 않음)

각 레이어는 상위 레이어로 서비스를 제공해주고, 하위 레이어로부터 서비스를 제공 받는다.


본 학습

Principles of reliable data transfer

  • reliable한 통신 지원이란? APP에서 내려온 데이터가 하나도 유실되지 않고 receiver까지 모두 전달되는 것을 보장하는 것.
    그러나 실제 네트워크 환경은 unreliable하다. packet error 혹은 packet loss를 잘 처리하여 reliable한 통신을 지원한다.

  • 패킷 하나를 보내고, 리시버가 패킷을 받은 걸 확신한 후에, 다음 패킷을 보내는 방식으로 reliable한 통신을 지원한다.

  • underlying이 reliable 한 상황이라면, 그냥 패킷을 보내면 된다.

  • 그러나 underlying이 unreliable한 상황이라면, 특정 메카니즘이 필요하다.

    • 에러 인식 (Error detection)
      • add checksum bits (to send and to receive)
    • Feedback (센더가 패킷을 받을 때마다 피드백을 주어야 함.)
      이 메커니즘은 사람이 전화할 때의 메커니즘과 같다.
      - Acknowledgements(ACKs): 리시버가 센더에게 패킷을 정확하게 받았는지 명시적으로 알린다.
      - Negative acknowledgements(NAKs): 리시버가 센더에게 패킷에 에러가 있는지 명시적으로 알린다.
    • Retransmission (if the sender got NAKs)
  • sequence number (Seg #)

    • 패킷중복을 판별하기 위해 패킷에 붙이는 번호
    • HEAD의 한 필드에 입력된다.
      • HEAD의 필드는 최소화 되어야 한다.
    • 시퀀스 넘버는 2개면 충분하다.(0, 1. 즉, 1bit) 왜냐하면 reliable한 환경에서 패킷 하나씩 통신되기 때문에
    • 시퀀스 넘버를 활용하여 NCK-free 매커니즘도 가능하다. 항상 ACK를 전송하되, ACK에 마지막으로 정상 수신한 시퀀스 넘버를 담아 보내는 방법이다.
  • sender가 receiver에게 패킷을 보냈는데, 패킷이 중간에 유실되어서 receiver로부터 NCK도 오지 않은 상황이라고 가정해보자.

    • 이 때 sender는 패킷 전송 이후 나름의 시간을 재고 있다가, 일정 시간이 지나면 패킷이 유실되었다고 판단한다.
    • 일정 시간은 얼마 정도의 시간으로 맞춰야 할까? "적당히". 짧고 긴 시간 모두 장단점을 갖고 있기 때문에 상황에 맞춰 타이머를 지정할 수 있다.
      • 짧은 시간 - 유실 극복이 빠른데, 네트워크가 느릴때는 필요 이상으로 네트워크를 사용할 수 있다. (사용 효율 나쁨)
      • 긴 시간 - 유실 극복이 느리다. 네트워크 사용 효율은 좋다.
    • ACK가 유실된 상황
      • sender 입장에서는 가는 패킷이 유실되나, 오는 피드백이 유실되나 동일한 상황이다. 따라서 같은 패킷을 한 번 더 보내게 된다.
      • receiver는 같은 패킷을 한 번 더 받게 되더라도 동일한 ACK를 sender에게 보내준다.
    • Timeout이 짧은 시간에 발생한 상황
      • receiver가 피드백을 보내는 시간을 기다리지 못하고 sender가 같은 패킷을 한 번 더 보낼 수 있다.
      • 이 때 sender는 같은 패킷 번호의 피드백을 연달아 받을 수 있다.
      • 이럴 때는 어떻게 처리할까? receiver가 duplicated packet을 처리하듯 sender도 duplicated feedback을 처리하면 어떨까?

정리

  • network underlying이 unreliable한 상황을 대비하기 위해 매커니즘을 만들어 적용한다.
  • packet error를 위한 매커니즘에는 error detection, feedback, retransmission, requence# 등이 있다.
  • packet loss를 위한 매커니즘에는 timeout이 있다.
  • reliable 통신을 지원하는 TCP가 이 매커니즘들을 갖고 있고, 해당 매커니즘을 위한 정보는 TCP의 HEAD 안의 필드 부분에 위치하게 된다.
  • 이 방법은 신뢰성 있는 통신을 지원하기에는 좋은 방법이지만, 시간 효율이 좋지 않다는 단점이 있다. 마치 16차선에서 차를 한 대 씩만 보내는 격이다.
  • 따라서, 패킷을 한 번에 보내고 각 패킷에 대한 피드백을 한 번에 받는 형식이 요즘 사용되고 있다. (batch style)

참고 강의

<컴퓨터 네트워크>, 이석복, 한양대학교, 2015학년 2학기.

profile
💡 Software Engineer - F.E
post-custom-banner

0개의 댓글