충돌
컴퓨터 과학에서 "충돌"은 두 가지 의미를 가집니다. 하나는 두 개 이상의 데이터 집합이 수정되어 동일한 결과값을 생성할 때 발생합니다. 다른 하나는 네트워킹에만 해당하며, 두 장치가 동시에 데이터를 전송할 때 발생합니다.
1. 데이터 충돌
데이터 충돌은 데이터를 해싱하거나 체크섬을 계산할 때 발생할 수 있습니다. 해시 함수는 데이터를 더 작은 값으로 줄이며, 압축과 암호화에 자주 사용됩니다. 해시 작업을 사용하면 디스크 공간을 절약할 수 있지만, 서로 다른 두 입력이 동일한 출력을 생성할 가능성이 있습니다. 충돌이 발생했을 때 중복된 값을 피하기 위해 여러 해시 함수를 사용할 수 있습니다.
마찬가지로 체크섬도 원본 데이터보다 작기 때문에 고유한 값이라고 보장할 수 없습니다. 그 가능성은 대개 매우 낮지만, 이론적으로는 서로 다른 두 데이터 집합이 동일한 체크섬 값을 생성할 수 있습니다. 잘 설계된 알고리즘은 이러한 위험을 최소화해야 합니다.
2. 네트워크 충돌
네트워크 충돌은 둘 이상의 장치가 동시에 네트워크를 통해 데이터를 전송하려고 할 때 발생합니다. 예를 들어 Ethernet 네트워크에 연결된 두 컴퓨터가 같은 순간에 데이터를 보내면 데이터가 "충돌"하여 전송을 완료하지 못합니다. 따라서 대부분의 네트워킹 프로토콜은 추가 데이터를 전송하기 전에 패킷이 수신되었는지 확인합니다.
스위치와 라우터는 데이터를 전송하기 전에 전송 회선이 유휴 상태인지 또는 "사용 중"인지 확인하여 충돌을 줄일 수 있습니다. 일반적인 방법으로 CSMA/CD 또는 "반송파 감지 다중 접속 및 충돌 회피"가 있습니다. 충돌을 줄이는 것은 가능하지만 완전히 피할 수는 없습니다. 예를 들어 두 시스템이 회선이 유휴 상태라고 판단한 후 정확히 동시에 데이터를 전송하면 충돌이 발생할 수 있습니다. 이 문제는 임의의 지연 시간 후 데이터를 재전송하여 해결할 수 있습니다.
지식 테스트하기