1. tcp/ icmp/udp 는 의사헤더가 필요하다.
2. tcp/cimp/udp에 들어가는 의사헤더는 체크섬을 계산할때만 사용하고 실제 데이터를 전송할때는 포함하지 않는다.
ex ) 의사헤더 + 실제헤더로 체크섬을 계산하여 결과값을 실제 헤더의 체크섬부분에 넣어주면됌
3. 상위 헤더는 하위헤더의 size를 포함한다. 가령 ip의헤더가 20이고 icmp 헤더가 8이라면 ip토탈사이즈는 28이되고 만약 icmp밑에 데이터가20만큼더있다면 토탈사이즈는 48이된다.
4.모든헤더는 반드시 0으로 초기화 하고 사용한다.
이유 : 체크섬및 사용되지않는 부분이 존재하는데 값에따라서 초기화를 중간에하면 결과값이 달라지는 항목이 존재 대표적으로 체크섬
5. UDP는 데이터의 전송보장을 하지않는 프로토콜이다. 따라서 체크섬이 필요할 경우가 없을 수 있고 그럴경우 체크섬에 0을 넣어주면 체크섬이 off되어 체크섬을 사용하지 않는다. (체크섬은 데이터의 오류 검증을 위해 존재한다,)
'C++' 카테고리의 다른 글
옛날에 만든 Hex Stream 으로 wireshark세이브 파일 포맷로그저장하는 클래스! (0) | 2016.12.15 |
---|---|
로컬의 Mac값 알아내기 +_+ (0) | 2016.12.15 |
IPv6헤더 (0) | 2016.12.15 |
체크섬 예제 (0) | 2016.12.15 |
MySql/MariaDB 한글 깨짐 문제 해결방법(링크참조) (0) | 2016.12.15 |