주로 TCP/IP환경에서 IP 패킷을 처리할때 발생하는 오류를 알려주는 프로토콜로, IP는 오직 패킷이 목적지에 도달했는지만 확인하기 때문에, 어떤 이유로 에러가 발생했는지는 알려주지 못한다. 그래서 이러한 단점을 보완하기위해 나온게 바로 ICMP(Internet Control Message Protocol)이다.
ICMP의 패킷형태는 요로케 생겼는데, 하나하나 아라보자
Type: ICMP의 패킷종류를 의미한다
Code: Type에서 파생된 세부분류를 의미한다
Checksum: 코드의 오류가 없는지 검증해준다.
Additional header field:Type에 따라 사용되는 부분으로 사용되지않는다면 0으로 채워진다
Payload: 직접적인 데이터내용이 있는부분이다
그럼 이제 Type의 세부내용을 아라보자
먼저 에러타입 3번에 해당하는 Destination Unreachable 코드들은
code 0: Network 도달불가
code 1: Host 도달불가
code 2: protocol 도달불가
code 3: port 도달불가
code 4: fregment(단편화)가 필요하지만 DF(dont fregment)가 설정되어 있음
이렇게 5가지가 있고
에러타입 4번에 해당하는 Source quench 오류코드는 TCP가 congestion control을 지원하게 되면서 사용하지 않는다(UDP는 애초에 그딴거 안함)
그 다음 에러타입 5번에 해당하는 Redirect는 default router가 지금 상황이 최적의 경로가 아니라고 판단했을때 보내지는 코드로 더 나은 게이트 웨이를 알려준다.
마지막으로 에러타입 11번에 해당하는 Time Exceeded는 2가지 경우에 발생하는데
1.TTL(Time To Live)가 0일때
2.Fregment가 손상되어 재조합이 불가능할때
가 있다.
OSI 7계층중에 3계층(Network Layer)에서 사용하는 프로토콜로, 일종의 주소 같은 개념이고, 현대의 네트워크 통신에서 필수불가결한 요소이다.
서브넷 마스크란, ipv4의 고갈로 서브망을 구성하기위해 ip주소를 호스트부분과 네트워크 부분으로 나누었는데, 서브넷마스크는 이 호스트부분과 네트워크부분을 나누어주는 것이다. 예를들어 서브넷 마스크가 255.255.255.0으로 되어있을때, 예시로 192.168.1.4라는 ip를 이용하면, 먼저 서브넷마스크와 ip를 and연산을 한다면 그 결과는 192.168.1.0이 된다. 여기서 0으로 되어있는 부분은 호스트부분이고, 앞의 부분은 네트워크 부분이 되는것이다. 참고로 서브넷마스크는 이렇게 255.255.255.0으로 표기하는 방식외에도 접두사길이라고해서 2진수로 바꾸고 1의개수를 세어 표기하기도한다 (255.255.255.0일때는 접두사길이가 24!)'
게이트웨이란 쉽게말해 네트워크와 네크워크를 지나다닐때 통과하는 집으로 치면 대문(?)같은 것이다.
우리가 같은 네트워크인 192.168.1.XX끼리 통신을 한다면, MAC주소를 이용해 통신할수있다. 하지만 172.74.3.XX와 통신을 할려면, MAC주소를 이용할 수는 없기 때문에 먼저 이 게이트웨이장비로 보낸다음, 게이트웨이에서 알맞은 단말기로 보내주는 것이다.
DNS를 먼저 설명하자면, 우리가 네이버나 구글에 접속할때 보통 google.com 이런식으로 문자를 입력해서 접근하지 ip를 이용해서 접근하지는 않는다. 이렇듯, 외우기 어려운 ip주소 대신 외우기 쉽고 사이트를 더 잘나타낼 수 있는 문자로 치환해주는 시스템을 DNS(Domain Name System)이라고 하고 DNS를 구동시키는 서버가 DNS서버이다.
우와 유익해요