ICMP는 계층 3 위의 프로세스를 사용합니까?

ICMP는 계층 3 위의 프로세스를 사용합니까?

저는 프로젝트를 수행 중이며 레이어 7에서 1로 ping하는 프로세스를 설명해야 합니다. Ping은 레이어 3인 ICMP를 사용하므로 데이터는 레이어 3 헤더 아래에 위치합니다. 이는 그 위의 레이어가 중요하지 않다는 의미입니까, 아니면 여전히 어떻게든 사용되고 있습니까?

답변1

애플리케이션 계층(모델에 따라 7개 또는 4개)과 3개 이하를 사용합니다. ICMP는 TCP나 UDP만큼 유연한 프로토콜이 아니므로 다소 제한된 기능 세트를 제공합니다.ICMP최대 지원255 명령 메시지 유형, 네트워크 IO를 프로세스에 배포하기 위해 상위 계층 프로토콜을 사용하는 대신 내부적으로 그렇게 합니다.

따라서 애플리케이션은 명령 메시지를 사용하여 네트워크를 제어합니다. 예를 들어 Ping은 ICMP 패킷에 적합한 데이터 구조를 생성하고 이를 OS에 제출하여 IP로 보내는 응용 프로그램입니다. 그런 다음 IO가 반환될 때까지 기다립니다. IP 스택이 에코 응답을 받으면 해당 IO를 프로그램에 전달한 다음 사용자에게 메시지를 인쇄할 수 있습니다.

TCP/IP와 마찬가지로 애플리케이션 계층은 네트워크 스택에서 제공하는 모든 기본 작업을 제어하고 조정하여 현대 사용자에게 가치 있는 기능을 구성합니다.

당신이 코드에 관심이 있는 사람이라면 고려해 보세요.이 코드 조각그래서 끝났어. ICMP 메시지를 수신하고 프로그램 출력에 인쇄합니다. ICMP에 대한 "원시 소켓"을 설정하고 해당 소켓을 IP 인터페이스에 바인딩하고(두 레이어 3 작업 모두) 일부 데이터 구조를 설정하고 소켓 IO에서 읽어 응답을 찾는 것을 볼 수 있습니다. ICMP 메시지가 수신되면 해당 데이터 영역이 프로그램 IO 스트림에 나타나고 화면에 인쇄됩니다. 꽤 깔끔해요.

요청에 따라 편집:

따라서 OSI 모델은 작업에 전제 조건(아래 계층에서 사용되는 프로토콜의 특성)과 충족해야 하는 사후 조건이 있다는 책임을 생각하는 방식을 추상적으로 표현한 것입니다. 모델이 수행하는 또 다른 작업은 이러한 각 작업을 통해 데이터를 파이프하는 수단을 설정하는 것입니다.

OSI 모델의 기본 목표는 시스템 구성에서 추상화되어 시스템 간에 이식 가능하도록 만드는 방식으로 응용 프로그램이 네트워크 메시지를 쉽게 보내고 받을 수 있는 수단에 대한 설명을 제공하는 것입니다. 초기에는 애플리케이션이 모든 작업을 자체적으로 수행해야 했기 때문에 다른 플랫폼 및 구성에서 작동하도록 애플리케이션을 다시 작성해야 했습니다. 책임을 분리함으로써 프로그램은 해당 작업에만 집중할 수 있으며 이는 시스템마다 크게 다르지 않습니다. 또한 시스템 및 네트워크 관리자는 애플리케이션에 전혀 영향을 주지 않고 시스템이 다른 시스템에 연결되는 방식을 변경할 수 있습니다.

OSI 스택의 맨 아래에는 시스템 상호 연결을 위한 필수 네트워크 표준이 모두 포함되어 있습니다. 모든 사람이 이 일을 같은 방식으로 수행해야 합니다. 그렇지 않으면 아무것도 작동하지 않습니다. 모든 제조업체는 판매할 수 있는 제품을 갖기 위해 이러한 규칙을 준수해야 할 구속력 있는 책임이 있습니다.

그러나 OS 공급업체는 자신의 플랫폼이 다른 제품보다 눈에 띄는 것을 방해하는 엄격한 규칙과 구조에 덜 열중합니다. 완전한 OSI 호환 시스템이 없었던 이유는 어떤 OS 공급업체도 시스템을 작성하려고 하지 않기 때문입니다.

따라서 OSI 레이어 1-4는 견고하고 예측 가능하며 필수적입니다. 그러나 레이어 5와 6은 전적으로 선택 사항입니다. 애플리케이션은 필요한 것에 따라 이를 활용하기 위해 코드를 작성하거나 작성하지 않을 것입니다.

대부분의 최신 애플리케이션은 전송 프로토콜 세그먼트에서 데이터를 읽습니다. 이러한 경우에는 L5/L6에 대해 캡슐화된 데이터그램이 없습니다. 세그먼트 페이로드의 데이터는 애플리케이션 데이터이므로 애플리케이션은 IO 스트림을 L4 포트에 연결하고 L4 포트에서 읽거나 씁니다.

ICMP의 경우 Layer4를 사용하지 않으므로 애플리케이션은 원시 IP 소켓만 읽습니다. 같은 개념입니다.

레이어 5네트워크 프록시나 터널링이 필요한 애플리케이션에만 사용됩니다. 이 데이터그램의 페이로드는 터널을 통해 전송되는 또 다른 프레임이나 패킷이거나 SOCKS 프록시를 통해 프록시되는 세그먼트인 경우가 많습니다. 응용 프로그램은 일반적으로 프록시가 작동 중인지 알지 못하거나 해당 시스템에 적용 가능한 경우 OS를 사용하여 계층 5를 처리하지만 일부 OS의 일부 응용 프로그램은 실제로 L5 데이터그램의 캡슐화 해제를 제어할 수 있습니다. 종종 L5 작업은 드라이버(VPN 가상 네트워크 어댑터, 시스템 프록시 등)를 사용하여 커널에서 처리됩니다.

대부분의 계층 5 프로토콜은 메시지 보내기/받기를 원하는 애플리케이션과 아무 관련이 없는 상호 작용을 제어하는 ​​데 사용되며 일반적으로 통신에 관련된 두 시스템 모두에 의미가 없다는 점은 주목할 만합니다. 일반적으로 두 시스템이 대화할 수 있도록 네트워크를 제어하는 ​​데 사용됩니다. 실제로 대부분의 경우 애플리케이션 데이터 스트림은 OS에 의해 가로채고 시스템 애플리케이션은 외부 데이터그램의 캡슐화를 처리하므로 애플리케이션 패킷을 가져와 애플리케이션이 알지도 못하는 다른 패킷에 넣습니다. 존재하다. 해당 시점에서는 시스템 애플리케이션이 데이터를 제어합니다.

레이어 6실제로는 사용되지 않습니다. 내가 사용한 모든 프로그래밍 프레임워크에서 인코딩은 적절한 라이브러리를 사용하여 애플리케이션에서 처리됩니다. 응용 프로그램이 원하는 경우 OS 인코더/디코더를 사용하거나 자체 제공을 사용하여 계층 6 작업을 작성하는 것이 가능하지만 내 경험에 따르면 이는 일반적으로 응용 프로그램에 의해 처리되며 데이터그램 캡슐화에는 영향을 미치지 않습니다.

따라서 결국 이 모든 것은 네트워크 작동 방식에 대한 사전 지식이 거의 없이 네트워크를 통해 메시지를 보내고 받기 위해 읽고 쓸 수 있는 애플리케이션 IO 스트림을 제공하기 위한 것입니다. 이것이 바로 현대 네트워킹의 100% 내용입니다.

시스템이 시스템 전체 프록시나 VPN을 사용하는 경우 일반적으로 L5 데이터그램을 자동으로 캡슐화하므로 전송 애플리케이션은 L5 데이터그램이 있는지조차 알 수 없습니다. 수신 측에서는 L5 헤더가 수신될 때 이미 제거되었을 것입니다. 왜냐하면 L5 헤더는 프록시 서버나 VPN 엔드포인트에 의해 처리되었기 때문입니다. 따라서 원격 OS는 레이어 4 페이로드에서 데이터를 응용 프로그램.

따라서 주어진 패킷에는 작업을 완료하는 데 필요한 만큼의 레이어만 캡슐화됩니다. 레이어 2에서만 작동하고 L3+ 구성 요소를 포함하지 않는 하위 수준 애플리케이션이 있습니다. L4+를 사용하지 않는 인터네트워크 계층 애플리케이션이 있으므로 더 높은 수준(예: ICMP)을 캡슐화하지 않습니다. 작업하려는 레이어 아래에 모든 레이어가 있어야 하지만 그 위에는 필요하지 않습니다. 대부분의 일반적인 애플리케이션은 계층 4에서 읽고 쓰는 데 중점을 두고 OS가 필요에 따라 계층 5와 6에 대해 걱정하도록 합니다.

마지막으로 귀하가 혼란스러워하시는 이유와 이 주제에 대한 좋은 정보를 찾는 것이 왜 어려운지 이해합니다. 이 모든 것을 실제로 이해하려면 네트워킹, 애플리케이션 프로그래밍 및 OS 설계에 대한 어느 정도의 이해가 필요하므로 이 모든 것이 작동하는 방식을 충분히 이해했다고 느끼기까지 수년이 걸렸습니다.

답변2

ICMP는인터넷 제어 메시지 프로토콜. 이름에서 알 수 있듯이 ICMP는인터넷 프로토콜. 그것은~ 아니다OSI규약.

인터넷 프로토콜 스택에는 다음과 같은 4개의 계층만 있습니다.

  • 애플리케이션
  • 수송
  • 인터넷
  • [링크] (이 레이어는 인터넷 외부에 존재한다고 가정하며, 인터넷 프로토콜 스택 자체에 의해 지정되지는 않습니다)

ICMP는 인터넷 프로토콜 스택의 레이어 2인 인터넷 레이어 프로토콜입니다.

이더넷 스택과 같이 네트워킹을 위한 다른 인기 있는 계층형 모델이 있습니다.

  • 링크 레이어
    • 논리 링크 제어(LLC)
    • 미디어 액세스 제어(MAC)
      • RS(조정 하위 계층)
  • PHY
    • PCS(물리적 코딩 하위 계층)
    • PMA(물리적 매체 부착 하위 계층)
    • PMD(물리적 매체 종속 하위 계층)

이 8개 계층과 하위 계층은 모두 인터넷 프로토콜 스택의 단일 계층인 링크 계층에 해당합니다. 그리고 OSI 프로토콜 스택의 두 계층인 물리 계층과 데이터 링크 계층에 해당합니다.

보시다시피, 이러한 서로 다른 스택은 모두 서로 다른 레이어를 갖고 있으며, 한 스택의 프로토콜(예: 이더넷 스택의 IEEE 802.3cd 또는 인터넷 스택의 ICMP)이 다른 스택에 완벽하게 매핑될 수 있다는 보장은 없습니다. .

예를 들어 ICMP를 이더넷 스택에 매핑할 수 없습니다. 당신은 할 수 있습니다노력하다IEEE 802.3cd를 인터넷 스택에 매핑하지만 이는 실제로 부정확합니다. 말할 수 있는 것은 링크 계층에 속한다는 것뿐이지만 이더넷 스택에서는 해당 계층이 8개의 계층과 하위 계층으로 분할되어 있으며 IEEE 802.3cd 모두가 아닌 그 중 하나에만 속합니다.

마찬가지로, IEEE 802.3cd를 OSI 스택에 매핑하려고 하면 이것이 물리 계층에 속한다고 말할 수 있지만 이더넷 스택에서는 세 개의 서로 다른 하위 계층에 해당하고 IEEE 802.3cd는 다음 중 하나에만 속합니다. 저것들.

관련 정보