07. ICMP 프로토콜 - 멀리있는 컴퓨터끼리는 이렇게 데이터를 주고받는다
🍂 ICMP 프로토콜
1. ICMP가 하는일
- Internet Control Message Protocol 인터넷 제어 메시지 프로토콜
- 특정대상과 내가 통신이 잘 되는지 확인
- 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 사용
- 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송 받음
2. ICMP 프로토콜의 구조
- Type은 대분류, Code는 소분류
- Type 중 0, 8번 / 3, 11번 / 5번은 알아둬야함
- 0,8번은 통신을 확인하는 것 : 8번은 요청, 0번은 응답
- 3은 목적지에 도달하지 못한 것, 11번은 요청시간이 만료되었습니다.
- 3번은 보통 목적지까지 가지못함, 11번은 목적지까지 갔는데 응답X
- 보통 3번일 때 가는경로에서 문제있고 11번은 상대방이 문제가 있을 때
- 3번의 예로는 라우터 경로설정 잘못, 11번의 예로는 상대방이 방화벽 켜놨을 때
- 5번은 원격지에 있는 상대방의 라우팅 테이블을 수정할 때 사용, 남의것을 수정하기 때문에 보안상 문제 때문에 요즘은 잘 안씀
👻 실습 (IPv4, ICMP 프로토콜)
- ping 하고 와이어샤크에서 내가 ping 보낸 것중 ICMP를 확인해보자
- 8바이트인데 아주길다? 자기자신만 가는게 아니라 뒤에 쓸데없는 것을 붙여서 보낸다.
- 요청이니까 08로 시작
- IPv4를 확인해보자
- 버전 4니까 맨앞에 4, 20바이트니까 4로 나눠서 5를 써준다
- TOS는 안쓰니까 00
- Total Length는 페이로드까지 합친길이
- ICMP 8바이트 + 쓸데없는데이터 abcd... + IPv4 자기자긴 20바이트
- 총 60바이트니까 60바이트 16진수로 바꿔서 써줌
- id값은 다 다름
- flag는 총 3비트로 조각화가 되었나 안되었나 알려주는데
첫번째꺼는 안쓰는거고, 조각화가 필요한데 안하겠다라고 명시하는 것인데 둘다 잘 안씀, 세번째꺼는 조각화 된것 뒤에 있다고 알려주는건데 지금은 ping만 보내서 큰데이터가 없으니까 전부 0임
- offset도 데이터가 얼마만큼 떨어져잇나 알려주는 것인데 지금은 데이터가 없으니 0
- 네트워크 장비 하나씩 돌아다닐때마다 1씩 줄어드는 것
- 이것은 보낸거니까 하나도 안지났음
- 윈도우는 처음부터 128로 설정 되어있어서 128임
- 상위프로토콜 지정하는 것은 ICMP니까 01
- checksum은 헤더에 있는 여러가지 값 계산하는건데 여기선 사용X