네트워크계층
과 전송계층
에 있다.<참고>
꼭 이 부분에서만 사용하는 것이 아니다. 정확하게 컴퓨터에서 확인이 쉽게 되는 내용만 적었고, 그 아랫단계에서도 쓸 수도있고, 무언가를 다운 받을 때에도 md5 checksum이라는것을 쓰기도 한다.
데이터가 올바르게 갔다고 하면 크게
이렇게 두 가지로 볼 수 있다.
이 글에서 무결성은 통신상의 문제
를 해결하기 위한 checksum
에 대해 알아본다.
checksums을 사용한다.
인터넷에서 데이터를 주고받을 때 무결성 검사를 위해
이 두가지를 잘 생각해서 만들어야한다.
실행시간이 길면 통신이 느려질 것이고, 패킷의 bit를 많이 차지하면 마찬가지로 통신의 헤더의 공간이 늘어나서 좋지 않다.
즉, 실행시간
, 패킷의 bit차지량
, 통신상 문제확인
의 세가지 요소를 잘 타협하여 만들어진 기술이 checksum이다.
<참고>
이 알고리즘은 해킹같은 문제에는 약하다.
알고리즘 자체가 쉬우며, 패킷자체를 가로채서 값을 변경한 후, checksum을 다시 계산하여 넣었을때, 수신자가 이 값이 문제가 있는지 확인 할 수가 없다.
즉 데이터를 변하고 checksum만 다시 넣어주면 수신자는 이를 인지할 수가 없다.
이 중간자 공격 문제를 해결하는 알고리즘은 다른 부분에서 한다. (일반적으로 ssl 같이 공개키/개인키 방식으로 해결한다)
워드
단위로 구분하고, 그림에서 보면, tcp/udp 에서 체크섬이 있고, ip 헤더에서도 따로 체크섬이 있는 것을 알 수 있다.
udp는 꼭 체크섬을 할 필요는 없다. 옵션으로 checksum을 안하게 바꾸면 체크섬을 체크하지않는다.