우리가 직접 로우 패킷을 조작하여 헤더들을 보내기 위해서는 체크섬을 계산 할 줄 알아야한다.

체크섬이 잘못 계산되면 전송중 패킷이 손상되었다고 판단되어 오류가 난다. 

 

체크섬(checksum) 

 - 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.

 - 체크섬이 맞아 떨어지는지 확인해 봄으로써 메시지가 손상되지 않았다고 결론을 내릴 수도 있다.

 - 체크섬을 구하기 위해 체크섬 필드를 제외한 모든 필드를 더해서 구한다. 

7 ~ 8     : 데이터가 홀수 바이트면 제로바이트를 더해줘서 짝수 바이트가 되도록 만든다. 

12         : 숫자화된 모든 필드를 모두 더한다.

14 ~ 17 : 올림수, 즉 16진수의 다섯번째 자릿수가 생기지 않을때 까지 반복한다.

18         : 올림수를 나머지 16비트와 더해준다.

20 ~ 22 : 1의 보수를 취하고 값을 리턴한다. 



ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)

 - 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는 데 주로 쓰인다.

 - 인터넷 프로토콜의 주요 구성원 중 하나로 인터넷 프로토콜에 의존하여 작업을 수행한다.

 - 프로토콜 번호 1로 할당되고 시스템 사이에 데이터를 교환하지 않거나 최종 사용자에

   적용되지 않는다는 점에서 TCP UDP와는 다르다


ICMP 헤더(8byte)

   

1. type(1byte)

 - 0(Echo reply) , 3(Destination Unreachable) , 8(Echo request)


2. code(1byte)

 - type 0과 type 8은 코드가 없음.

 - type 3은 0~13 까지의 코드가 있다.

   ex) type 3 code 3(Destination Unreachable / Port Unreachable) : 포트가 닫혀있어서 icmp 메세지가 도착할 수 없다.


3.checksum(2byte)


4.payload(4byte)

  1). id(2byte)

  2). seq(2byte)

  

5. data (없어도됨)






WRITTEN BY
Bugday

,