protocol function

박진은·2022년 5월 5일
0

컴퓨터 네트워크

목록 보기
3/12

3장 protocol Function

protocol function 은 프로토콜에서 사용되는 공통적인 기능임

error control

  • pdu가 정상적으로 전달되지 않은 상태에서 protocol entity의 동작이다
  • connectino orientd communication protocol에게 주어지는 중요한 역할은 상대방에게 확실하게 pdu를 전달하는 것인데
    • 프로토콜에서 확실한전달을 하려면 두가지 항목에 대한 정의가 필요하다
      • Detect: 송신 측에서 erorr한 상황을 인지
      • react: error한 사아황에서 송신 측의 동작
  • Comfirmation
    • 한쪽 entity에게 pdu를 보내면 receiver entity에 그 pdu 가 도달했는지 알수 있어야함 그래서

    • 도달 여부를 알리기 위해서 사용하는 방법이 명시적 에크놀리지먼트이다(explicit acknowledgement)

    • explicit acknowlegement 매우 단순하게 수신측에서 송신측에게 잘받았다고 메세지를 전달하는데 그 메세지의 이름이 ACK이다

    • explicit acknowlegement는 두가지의 종류가 존재한다

      • positive ACK - 정상 수신된 pdu를 알려주는 방식
        • 지금까지 수신한 pdu의 다음 sequence number 를 알려준다
        • 만약에 10 까지 중에 5까지 받았으면 6을 보내는 거다
        • 네트워크 용량을 줄이기 위해서 cumulative ACK를 사용한다 하나의 pdu에 하나하나 전송하는것이 아니라 여러개의 pdu를 전송받은뒤에 ack를 한번에 보낸다 음 한 5개 pdu 받고 다 잘받았다고 메세지하나 남기는 거지
      • nagativeACK : 미수신 PDU를 알려주는 방식
        • 결함이 있거나 미해결 시퀀스(faulty or outstanding sequence)
        • 활성오류제어(active error control)
      • 여기까지가 송신 측에서 error를 detect하는 방법 postive ACK, negative ACK
    • reaction은 재전송이나, 세부적인 방법은 다양하다

      • 보통의 경에는 못받은 pdu를 재전송하거나 연결을 끊는다
    • piggy backing - 수신측에서 수신된데이터에 대한확인 응답을 즉시 보내지 않고 별도의제어프레임도 사용하지 않은채,전송할데이터가 있는 경우에 만, 그데이터 프레임 안에 확인 필드를 덧붙여전송(Piggyback,등에 업혀 보냄)하는,

      다시 말하면 ack를 다른 데이터를 송신 측에 보낼일이 있을 때 같이 실어서 보낸다는거 같다

      timer

    • ACK역시 시간이 지나면 손실되어야함 그 이유는 송신측(TXentity)에서는 PDU를 보낸뒤에 ACK를 무한정으로 기다릴 순 없다 - ㅅTX 가 ACK를 무한정으로 기다려서 기능을 수행하지 못하는 상황을

      • deadlock stiutaion
    • 따라서 deadlock stiuation을 피하기 위해서는 ack를 얼마나 기다릴지 기한을 정하고 기한을 넘기면 action을 취할 필요가 있다
      - TX측에서 PDU를 보내고 부터 timer가 작동하면서 ACK의 도달을 monitoring한다
      - 보통의 경우에 pdu를 보내고 타이머가 작동한다
      - timer interval(그냥 타이머 시간)은 ACK가 도달할 예상 시간을 감안하여 정의 한다
      - 만일 ack가 도달하지 않으면 timer expriry(시간초과)가 되고
      - time-out 이 되면 기정의된 plan B를 수행해서 deadlock에 빠지지 않도록 만든다
      - ACK가 정상적으로 수신측에 도달하면 timer를 다시 reset한다.

      ### Activity timer
      
      - peer entity의 대한 모니터링 용도로 활용한다
      - peer entity가 무슨 이유에 의해서 communication을 몸추었을 때 deadlock이 발생할 수 있으므로 이를 방지하기 위해서 timer 를 가동한다
          - peer partner의 inactive 감지하면 timer를 작동한다.(갑자기 최규현이 동작을 안하면 이새끼 이상하다고 느끼고 잠깐 ! 하는거임)
      - peer entity의 inactivation을 감지하고 timer를 작동하고 나서 다시 peer entity에서 PDU를 받아서 peer entity의 reaction을 확인하면 activity의 작동을 멈춘다
      - 보통 reaction 타임 보다 더 큰 시간 간격을 둔다

      TIMER를 설정할때는 항상 적절한 고려사항이 있음

    • timer name/interval/start/stop/expiry

    • 특히나 시간 간격 설정이 매우 중요한데(time interval)
      - time interver이 너무 길다면 불필요한 deadlock에 빠질 위험이 있음.
      - time intever이 너무 짧으면 너무 빈번하게 time out이 발생하니까 불필요한 reaction을 수행하게되고

      pdu loss and duplication

    • data전송 동안(data transmission) pdu가 손시로디거나 중복 수신이 될 수 있다

      • RX entity는 pdu sequence number를 통해서 데이터의 pdu의 손실이나 중복을 감지한다.
      • pdu sequence number는 데이터를 보낼때 각각의 데이터에 할당되는 순서 번호 같은거임 이게 있어야 데이터를 몇번째 까지 받았는가를 알 수 있는거지
  • PDU loss가 발생하는경우는 다음고 같은데
    • RX가 pdu loss를 판단하는 경우
      • RX에게 time interval 이후에도 pdu 가 전해지지 않은 경우 pdu loss라고 판단한다
      • RX가 갑자기 더 큰 sequence number PDU 수신시
    • TX가 pdu loss를 판단하는 경우
      • ack를 통해 빠진 sequence 인식 - 여러개를 보냈는데 ack sequence가 보낸거 보다 적은거지
      • 중복된 ACK sequence를 수신하는 경우 - 아까 1번 pdu에 대한 ack를 받았는데 다시 ack1이 돌아온거지
  • PDU duplication이 발생하는 경우
    • 수신 쪽에서 보낸 ACK가 timeout에 의해서 손실되면서 reaction으로 송신측에서 다시 pdu를 재전송해서 deplication이 발생한다.

    • 수신쪽에서는 이렇게 재전송된 pdu를 자기가 가지고 있는 pdu의 sequence number를 확인해서 무시 할 수 있다 중복전송된 정보는 그냥 상대도 안한는 거지

      ARQ(automatic repeat request)

    • ARQ : 의 구성요소 acknowledgement + timer + reactions

      • 신뢰성 있는 pdu 전송을 위한 가장 보편적인 protocol function
      • Tx/ Rx가 confirmation을 받거나 time out까지 기다리는 동안하는 일련의 동작을 포함한다.
    • pdu loss가 발생했을 때 pdu를 재전송하는 방식에 따라서 여러가지 방식이 존재한다

      • go back N
        - 풀어서 말하면 n 번째 sequence에서 pdu 로스 가 발생해서 TX가 ack를 받지 못하면 n번째 pdu부터 Rx에게 pdu를 모두 재전송하는 방식이다. 재 전송이 시작되면 RX는 n번째 이후 데이터 부터 다시 받기 때문에 n 번째 이후에 수신했던 모든 데이터를 버린다.
        - 조금 비효휼적인 면은 Tx에서 데이터를 모두 전송하기 전까지 모든 데이터를 항상 다 저장하고 있어야한다. 왜냐하면 그래야 오류가 발생한 부분부터 데이터를 다시 보내는 것이 가능할 것이니까 그렇게 데이터를 가지고 있지 않으면 TX측에서 데이터를 다시 보내는 것이 불가능하겠죠?
        - selective repeat
        - 손실이 발생한 PDU에 대해서만 골라서 재전송하는 방식이다
        - RX쪽에선 데이터 transmission이 모두 완료될 때까지 pdu 시퀀스를 모두 저장하고 있다가 오류가 발생한 n번째 pdu 만을 재전송 받는다. 따라서 Rx 쪽에서 제대로 받은 trasnmission order대로 다 받을때 가지 pdu를 저장할 수 있는 버퍼가 필요하다
        - cumulative ack를 통해서 제대로 전달된 pdu를 TX entity에서 확인 가능하다.

            go back n , selective repeat 방식 비교
            
            - go back n 방식은 TX 측에서 reaction으로 pdu를 재전송해야하기 때문에 데이터를 저장할 수 있는 버퍼가 Tx측에서 필요하고 또한 pdu를 재전송하는 시간이발생한다
            - selective repeat방식은 RX쪽에서 빠진 시퀀스 넘버를 알아야하기 때문에 pdu를 저장 할 수 있는데 버퍼가 RXㄷ쪽에 필요하다 하지만 빠진 시퀀스 만을 재전송하기때문에 go backㅜn방식보다 재전송에 필요한 시간이 상대적으로 적다는 장점이 있다.
        
        - stop and wait TX에서 RX측의 ack를 기다렸다 ack를 받은 후에야만 다음 시퀀스를 가진 pdu를 전송하는 방식이다
        
        # Forward Error control
        
        - 이는 재전송을 통해서 에러를 해결하는 방식이 아니고 수신측에서 에러를 coding theory를 이용해서 복구하는 방법이다. 이론의 배경은 다음고 같은데 일부 bit 오류에 대해서 정정이 가능하도록 data bit을 뻥튀기 해주는 이론이다.
        - FEC를 사용하기 위해서는 coding theory를 기반으로 pdu의 일부 오류를 정정한다.
            - coding theory를 사용하기 위해서 추가적인 데이터를 삽입해서 전송하는데 이렇게 오류수정을 위해서 사용하는 추가적인 데이터를 redundant data라고 한다.
            - FEC특징
                - 보통의 경우 계산량이 증가한다
                - 하지만 재전송을 하지 않으니까 실시간 통신에 강점을 가진다.(real time traffic)
                    - 이러한 음성이다 영상 통화는 시간이 지나면 pdu의 수신이 의미가 없기 때문에 재전송이 필요가 없는 FEC가 재격인거임 받는 즉시 coding throy를 이용해서 수정을 해야 의미가 있는 것임
                - 요즘에 대부분의 무선통신에서 사용하는 기술이다.
                    - 최근에 FEC가 활성화된 이유는 기기의 계산능력의 향상때문이고 무선자원에 대한 효휼성이 증가했기 때문이다.

        CRC(cyclic redundant check)

      • FEC를 이용하더라도 모든 많은 비트에 손상이 발생한경우에는 무든 오류를 복원할 수는 없다 따라서 이때 CRC를 사용한다. FEC는 redundant data를 이용해서 오류를 수정하는 반면에 CRC 는 원데이터에 paritybit 들을 꼬리에 추가하여 error를 detacting하고 이를 재전송을 요구하는 방식이다.

      • CRC는 원데이터에 parity bit들을 꼬리에 추가하는데

        • LTE의 경우 16/24bit 추가한다
        • 원데이터의 연산을 통해서 partity bit을 만들어서 붙인다.
      • 주로 FEC와 조합해서 사용한다

        • 수신 측에서 pdu를 받으면 TX측에서 pdu안에 parity bit을 붙여서 보냈기 때문에 수신측에서 parity bit을 확인할 수 있는데 이때 수신 측에서는 원데이터를 바탕으로 다시 연산해서 자체적인 parity bit를 만들고 이를 송신측에서 pdu와 함께 보낸 parity bit와 비교해서
          • Tx에서 만들어낸 parity bit와 수신측에서 만들어낸 parity bit 가 동일하다면 오류를 발생하지 않고 다르면 오류가 발생한다.

            if TX parity bit  == RX parity bit :
            	return nopoblem
          • channel coding이 원데이트를 완벽하게 복원했는지 확인하는 용도이다.

profile
코딩

0개의 댓글