- Today
- Yesterday
- Total
메이쁘
[Network - 전송] 2020.11.21. 오늘의 면접 Q&A 본문
안녕하세요.
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 체크섬 값을 비교하여 다르면 전송 오류, 같으면 오류가 아님을 판별할 수 있습니다.
이상입니다.
감사합니다!
'면접 대비 CS지식 > SELF CS면접 Q&A' 카테고리의 다른 글
[Android] 2021.01.28. 오늘의 면접 Q&A (0) | 2021.01.28 |
---|---|
[Network] 2020.12.04. 오늘의 면접 Q&A (0) | 2020.12.04 |
[Programming] 2020.11.20. 오늘의 면접 Q&A (2) | 2020.11.21 |
[OS - Memory] 2020.11.20. 오늘의 면접 Q&A (0) | 2020.11.21 |
[OS] 2020.11.18. 오늘의 면접 Q&A (0) | 2020.11.19 |