메이쁘

[Network - 전송] 2020.11.21. 오늘의 면접 Q&A 본문

면접 대비 CS지식/SELF CS면접 Q&A

[Network - 전송] 2020.11.21. 오늘의 면접 Q&A

메이쁘 2020. 11. 21. 14:56

안녕하세요.

 

CS관련 질문과 면접에 맞는 답변을 작성하면서 지식도 쌓고 면접도 대비하는 시간을 가지려고 합니다.

 

 

틈틈히 게시글을 작성하며 면접 대비 데이터셋을 확보해둔 다음

 

언젠간 면접하게 될 때 모아서 쓰려고 합니다.

 

(실제로 면접에서 들었던 질문이 아니라, 제가 스스로 답을 정해놓고 짜논 질문이라 이렇게 안나올 수 있습니다!!!)

 

 

 

이번 글은 Network - 전송 카테고리 입니다.

 

 

 

 

  -- 질문 목록

 

Q1.  패리티 비트(Parity Bit) 가 무엇인가요?

Q2.  체크섬(Checksum) 이 무엇인가요?


Q1.  패리티 비트(Parity Bit) 가 무엇인가요?

 

A.  패리티 비트는 시리얼 통신에서 데이터의 오류를 검출하기 위한 일종의 장치 중 하나 입니다.  이러한 패리티 비트에는 짝수 패리티, 홀수 패리티가 있는데요. 이러한 패티리 비트로 오류를 검출하는 방법에 대해 설명드리겠습니다.

 

우선, 데이터는 전부 0과 1로 이루어져 있습니다. 따라서, 데이터를 전송할 때에는 그 데이터를 0과 1로 변환해서 전송하는데요.

만약 100이라는 데이터를 전송하려한다면 100을 2진법으로 변환한 1100100 을 보내게 되겠죠.

1100100 이란 데이터를 보낼 때 뒤에 1비트를 추가한 8비트를 전송합니다.

이렇게 뒤에 추가한 1비트를 패리티 비트라고 합니다.

 

이러한 패리티 비트에는 규칙이 있기에, 수신자는 받은 데이터가 문제가 있는지 없는지 판별할 수 있습니다.

 

만약 짝수 패리티라고 한다면, 데이터의 모든 1의 개수를 짝수로 맞춰야 합니다. 그렇기 때문에 위의 1100100 의 1의 개수는 3개(홀수) 이므로, 자동적으로 패리티 비트는 1이 되어 총 1의 개수는 4개(짝수) 가 됩니다.

 

반면, 홀수 패리티라고 한다면, 패리티 비트는 0이 됩니다.

 

만약 데이터가 중간에 손실되서 11001001 이 아닌 10001001 이 가게 된다면 짝수 패리티에 의해 손실을 발견할 수 있습니다.

하지만, 2bit의 데이터가 손실되면 알아차릴 수 없다는 단점이 있습니다.

 

 

Q2.  체크섬(Checksum) 이 무엇인가요?

 

A.  체크섬이란 TCP 전송 시 데이터 값이 변경되었는지(무결성) 검사하기 위한 값 입니다. 이를 통해 수신받은 데이터의 오류를 판별할 수 있는데요. 

 

계산 방법은 이렇습니다. (예시와 함께 설명드리겠습니다. 여기서는 계산하기 쉽게 8비트로 설명드리겠습니다.)

*** (slowknight.tistory.com/4 님 감사합니다. (출처))

 

먼저, TCP Header의 데이터 값을 16비트로 분할한다음, 앞에서부터 전부 다 더해줍니다.

 

이렇게 TCP Header 값이 존재한다면,

 

00110011
11001100
11100110 

 

하나씩 더해줍니다.

 

처음 두 개의 합은

 


  00110011
+11001100
———————
  11111111

 

로서, carry가 발생하지 않아서 warp around 또한 일어나지 않습니다.

 

 

다음, 이 결과 11111111 과 마지막 비트를 더하면


   11111111
 +11100110
————————
 111100101

 

8bit를 초과했기 때문에, warp around를 진행합니다.

warp around는 초과한 비트를 다시 더하는 작업 입니다.

 

 11100101
+             1
———————
11100110

 

이 결과값에 대한 1의 보수는 00011001 이며, 이것이 곧 체크섬 값이 됩니다.

 

이를 데이터 전송 시 데이터와 TCP 체크섬 값을 전송자가 함께 보내는데요. 수신자는 이를 받아 체크섬 검사를 수행해 나온 결과값과 TCP 체크섬 값을 비교하여 다르면 전송 오류, 같으면 오류가 아님을 판별할 수 있습니다.

 

 

 

이상입니다.

 

감사합니다!

Comments