What is Internet Control Message Protocol (ICMP)?

19 minutes 0 comments
Dimitri Nek
Dimitri Nek
Web Hosting Geek


The Internet Control Message Protocol (ICMP in short), playing a pivotal role in ensuring seamless interactions, stands out for its significance in network diagnostics and error reporting. In essence, ICMP acts as the messenger for IP, conveying essential network diagnostics and ensuring the robustness of internet communications.

In this article, as we delve into the world of ICMP, we’ll uncover its foundational principles, its interactions with other protocols, and the tools that leverage its capabilities.

Moreover, we’ll explore the security implications surrounding ICMP and gaze into its future in the ever-evolving landscape of digital communication.

Let’s get started!

Key Takeaways:

  • The Internet Control Message Protoco is pivotal for network diagnostics and error reporting. It operates within the network layer, ensuring seamless communication across devices.
  • While ICMP is neither TCP nor UDP, it plays a crucial role in IP-based communications. Its interactions with other protocols like DHCP and VPN highlight its versatility in the digital realm.
  • Common network utilities like ‘ping’ and ‘traceroute’ utilize ICMP for their operations. These tools underscore ICMP’s significance in network troubleshooting and connectivity checks.
  • ICMP, though invaluable, has vulnerabilities that can be exploited in cyber attacks. Measures like monitoring ICMP traffic and implementing firewalls can mitigate potential risks.
  • With the advent of IPv6 and the rise of IoT, ICMP continues to adapt and evolve. Its future iterations promise enhanced security and compatibility with emerging digital trends.

Definition and Basic Function of ICMP

The Internet Control Message Protocol is a vital component of the internet protocol suite, designed primarily for sending error messages and operational information. Unlike transport protocols such as TCP and UDP, which handle data transmission, ICMP operates at the network layer and is more concerned with the health and status of the network itself.

Feature Description
Definition A protocol for conveying network-related messages and operational info.
Position in IP Suite Operates at the network layer, alongside IP, for error and info communication.
History Introduced in 1981, defined in RFC 792, and essential for IP operations since.
Reason for Inception Designed to relay error messages and aid in diagnosing connectivity issues.

ICMP is a network layer protocol used by network devices, including routers, to send error messages and operational information. Its primary function is to report an error in datagram processing. For instance, if a particular service is unavailable, ICMP will relay this information. Another common use of ICMP is in the “ping” utility, where it helps diagnose the status of the network.

Within the IP suite, ICMP works closely with the Internet Protocol (IP). While IP is responsible for addressing and routing packets, ICMP provides feedback on issues related to these packet operations. It’s essential to understand that ICMP messages are encapsulated within IP datagrams, making them an integral part of the IP layer.

ICMP was developed as a part of the original Internet Protocol suite defined in RFC 792. The inception of ICMP was driven by the need for a protocol that could provide feedback on problems related to the processing of IP packets. Before ICMP, there was no standardized method for reporting errors or conveying certain informational messages about the state of the network. ICMP filled this gap, ensuring that devices could relay and receive crucial network status and error information.

ICMP Messages and Their Varieties:

The Internet Control Message Protocol is an integral part of IP networking, responsible for error reporting and diagnostics. ICMP messages, often referred to as “datagrams” or “packets,” are categorized into different types, each designed for a specific function within the network communication process. These types are essential for network administrators and IT professionals to understand, as they provide insights into network health, connectivity issues, and potential threats.

Category Type Message
Error-Reporting Messages 3 Destination unreachable
4 Source quench
11 Time Exceeded
12 Parameter Problem
5 Redirection
Query Message 8 or 0 Echo request or reply
13 or 14 Timestamp request or reply
17 or 18 Address mask request or reply
10 or 9 Router Solicitation or advertisement

Some of the primary ICMP message types include:

  • Echo Request and Echo Reply (Ping): Commonly known as “ping” and “pong,” these messages are used to test the reachability of a host on an IP network. When a device sends an Echo Request, it awaits an Echo Reply to confirm that the destination is accessible and responsive.
  • Destination Unreachable: This message type indicates that the destination host or network is unreachable. It can be due to various reasons, such as network congestion, a downed router, or a non-existent domain.
  • Time Exceeded: Generated when a packet doesn’t reach its destination within a stipulated time, often due to long routing loops or delays. It’s a vital message for troubleshooting routing issues.
  • Redirect: This message advises the sender to take a different route for optimal performance. It’s typically sent by routers to inform hosts of a more efficient pathway to the destination.
  • Address Mask Request and Reply: Used to determine the subnet mask of a network. While not as commonly used today, it was crucial in earlier networking environments.
  • Router Advertisement and Solicitation: These messages assist hosts in discovering the routers on their local network. They play a pivotal role in ensuring smooth network operations by maintaining updated routing tables.

By understanding these ICMP message types and their functions, network professionals can better diagnose, troubleshoot, and optimize their network environments.

How Does ICMP Work?

The Internet Control Message Protocol, while seemingly intricate, operates on a straightforward principle. It functions as the network’s feedback mechanism, providing insights and diagnostics crucial for maintaining network health.

ICMP operates predominantly at the network layer, working in tandem with the Internet Protocol (IP). When a device encounters an issue processing an IP packet, ICMP steps in. Instead of merely dropping the packet or ignoring the problem, the device generates an ICMP message detailing the specific issue and sends it back to the source of the original packet. This feedback mechanism ensures that the sender is aware of any hiccups in the transmission process, allowing for timely corrective action.

Message Type Purpose/Function
Echo Reply Used to test the reachability of a host and measure round-trip time.
Destination Unreachable Indicates that the destination host or network is unreachable.
Source Quench Requests the sender to reduce the rate of message transmission.
Redirect Advises the sender to send packets on an alternative route.
Time Exceeded Indicates that a packet has been discarded due to time-to-live expiration.
Parameter Problem Indicates an issue with the IP header of the original packet.
Echo Request (Ping) Used to probe the availability of a remote host.
Timestamp Request/Reply Used to measure the delay between hosts.
RELATED:   Apache HTTP Server Explained in Simple Terms

Error-reporting is at the heart of ICMP’s functionality. When a router or gateway encounters an issue with a packet, it generates an ICMP error message detailing the problem and sends it back to the packet’s source. This feedback is invaluable. It not only informs the sender of potential issues but also provides insights into the nature of the problem, be it network congestion, unavailable services, or routing issues.

The significance of this error-reporting mechanism cannot be overstated. In the vast and complex landscape of internet communications, ICMP acts as a beacon, shedding light on potential pitfalls and ensuring that network communications remain as seamless and efficient as possible.

The Core Functions of ICMP

The ICMP, often perceived as the backbone of network diagnostics, plays several pivotal roles in maintaining and optimizing internet communications. It is more than just a protocol; it’s a vital tool that ensures the smooth functioning of the internet, providing invaluable feedback and diagnostics in the intricate world of network communications.

Function Brief Description
Ping Used to test the reachability of a host and measure network latency.
Error Reporting Communicates network errors, such as host or network unreachability.
Rate Limiting Requests the sender to reduce message transmission rate to avoid congestion.
Routing Updates Advises senders on better routes for packet delivery.
Time Exceeded Notifies the sender when a packet is discarded due to time-to-live expiration.

Let’s delve deeper into its core functions and understand its significance in various scenarios.

At its essence, ICMP is a network protocol used to convey error messages and operational information about network activities. It acts as a feedback mechanism for the Internet Protocol (IP), helping network devices communicate issues they encounter during packet processing. Whether it’s a routing loop, an unreachable destination, or a service that’s not responding, ICMP ensures that such issues don’t go unnoticed.

The term “ping” is synonymous with network diagnostics, and ICMP is the force behind it. When you “ping” a device, you’re essentially sending an ICMP Echo Request to that device. If everything’s in order, the device responds with an ICMP Echo Reply, confirming its accessibility. This process is invaluable for troubleshooting, allowing administrators to quickly check network connectivity and response times.

While they’re closely intertwined, “ping” and ICMP are not the same. “Ping” is a utility that uses ICMP to test network connectivity. ICMP, on the other hand, is the protocol that facilitates this test, among other functions. Think of “ping” as the application and ICMP as the underlying protocol that makes it work.

In web hosting and servers, ICMP holds significant importance. Web administrators often use ICMP-based tools like ping and traceroute to diagnose network issues, ensuring that hosted websites remain accessible. Moreover, by understanding ICMP feedback, hosting providers can optimize server configurations, enhance routing paths, and ensure robust security measures against threats like ICMP-based DDoS attacks.

ICMP in Relation to Other Protocols

The Internet Control Message Protocol, while a standalone entity, interacts and coexists with various other protocols in the vast landscape of network communications. Understanding its relationship with these protocols provides a clearer picture of its role and significance.

Protocol Relationship/Comparison with ICMP
TCP While TCP is a connection-oriented protocol used for data transmission, ICMP is used for error reporting and diagnostics.
UDP UDP is a connectionless protocol for data transfer, whereas ICMP is primarily for network diagnostics and not for data transfer.
IP ICMP operates at the same layer as IP but serves to report errors and provide information about IP packet processing.
DHCP DHCP is used for dynamic IP address assignment, while ICMP is for network diagnostics and error reporting.
SNMP While SNMP is used for network management and monitoring, ICMP is used for error reporting and network diagnostics.

ICMP is neither a TCP nor a UDP protocol. While TCP and UDP are transport layer protocols responsible for data transmission between devices, ICMP operates primarily at the network layer, focusing on error messages and operational information. It’s essential to note that ICMP messages are encapsulated within IP datagrams, emphasizing its close relationship with the Internet Protocol (IP).

When comparing ICMP with TCP, one might wonder about their speed. While ICMP is generally faster due to its simpler structure and lack of connection establishment, it’s not designed for data transfer like TCP. Instead, ICMP’s speed advantage is most evident in diagnostic utilities like ping, where rapid feedback is crucial.

Delving into ICMP’s relation with other protocols, DHCP (Dynamic Host Configuration Protocol) and ICMP are distinct in their functions. While DHCP is designed to assign IP addresses dynamically to devices in a network, ICMP provides feedback on network health. However, both can coexist in a network environment, with ICMP potentially reporting issues related to DHCP operations.

Similarly, VPN protocols, which secure data transmission over public networks, can operate alongside ICMP. ICMP can be used to diagnose connectivity issues within VPN tunnels, ensuring seamless and secure communication.

In terms of the OSI model, ICMP operates predominantly at the network layer, which is layer 3. However, it’s worth noting that the OSI model is a theoretical framework, and in real-world IP networking, distinctions between layers can sometimes blur.

Another protocol often mentioned in the same breath as ICMP is SNMP (Simple Network Management Protocol). While both are network protocols, their purposes differ. SNMP is designed for managing and monitoring network devices, while ICMP is geared towards error reporting and diagnostics.

Lastly, ICMP is versatile and exists in both IPv4 and IPv6 versions. While its core function remains consistent, there are differences in structure and message types between ICMP for IPv4 (often referred to as ICMPv4) and ICMP for IPv6 (ICMPv6).

In essence, while ICMP has its unique role, its interactions and relationships with other protocols underscore its importance in ensuring a robust and efficient network environment.

Technical Insights into ICMP

The Internet Control Message Protocol, often seen as the diagnostic tool of the internet, has intricacies that go beyond its primary function of error reporting. Delving deeper into its technical aspects provides a comprehensive understanding of its capabilities and structure.

Feature Description/Insight
Data Carrying While ICMP can carry data, it’s primarily for diagnostic purposes, such as echoing back data in ping operations.
Port Requirement ICMP doesn’t use traditional ports like TCP or UDP. Instead, it uses type and code fields to distinguish its messages.
Packet Structure ICMP packets have a specific structure, starting with a header (containing type, code, and checksum fields) followed by variable data.
Error Reporting One of ICMP’s primary functions is to report errors in IP packet processing, helping diagnose network issues.
Message Types ICMP has various message types, each serving a specific purpose, from echo requests (ping) to destination unreachable messages.

While ICMP is primarily designed for sending error messages and operational information, it can indeed carry data. This data is typically a portion of the IP packet that caused the ICMP message to be generated. For instance, when you use the “ping” utility, the ICMP Echo Request and Echo Reply messages carry a payload, which is often a sequence of bytes used to measure round-trip times and detect packet loss.

RELATED:   What is a Circuit-Switched Network?

Contrary to protocols like TCP and UDP, ICMP doesn’t operate with ports. Instead, it uses “type” and “code” fields to distinguish its various messages. This distinction is crucial because it means ICMP messages aren’t directed towards specific applications but are processed by the IP layer itself.

Diving into the ICMP packet structure, it consists of a header and a payload. The header, in turn, contains the aforementioned “type” and “code” fields, followed by a checksum to ensure data integrity. The payload’s content varies based on the message type but often includes a portion of the IP packet that triggered the ICMP message.

The variety of ICMP types is a testament to its versatility. Each type represents a different kind of message, such as “Destination Unreachable” or “Time Exceeded.” These types, coupled with their respective codes, provide detailed feedback about network issues, making ICMP an invaluable tool for network diagnostics.

The ICMP protocol is defined in a series of documents called Request for Comments. The primary RFC for ICMP is RFC 792, which lays out the protocol’s specifications, message formats, and intended behaviors. Within this RFC, the ICMP echo function, commonly associated with the “ping” utility, is detailed. The ICMP Echo Request and Echo Reply messages are fundamental to the operation of “ping,” allowing network administrators and users to test connectivity and measure network performance.

In conclusion, ICMP, while seemingly simple, is a protocol rich in technical depth. Its ability to carry data, its unique packet structure, and its diverse message types make it an indispensable tool in the realm of network communications.

Common Tools and Utilities Using ICMP

The Internet Control Message Protocol isn’t just a protocol operating behind the scenes; it’s the driving force behind several commonly used network diagnostic tools and utilities. Its versatility and diagnostic prowess make it a favorite among network administrators and enthusiasts alike.

Tool/Utility Role of ICMP
Ping ICMP is used to send echo request messages and receive echo reply messages to test network connectivity.
Traceroute ICMP is employed to determine the route taken by packets across a network by sending out sequences with varying time-to-live (TTL) values.
PathPing A combination of Ping and Traceroute, ICMP is used to identify packet loss over multiple hops.
Netstat While primarily for TCP and UDP, ICMP statistics can be displayed, showing messages sent, received, and errors.
IPSec Although IPSec is a suite of protocols, ICMP can be used within it for diagnostic purposes and to ensure connectivity between endpoints.

One of the most iconic utilities leveraging ICMP is the ‘ping’ command. At its core, ‘ping’ sends an ICMP Echo Request to a specified target, awaiting an Echo Reply. This process helps users ascertain network connectivity, measure round-trip time, and detect potential packet loss. It’s a first-line diagnostic tool, often used to quickly check if a device is reachable over the network.

Another diagnostic heavyweight is ‘traceroute’, a tool designed to trace the path packets take from the source to their destination. While many implementations of ‘traceroute’ use ICMP Echo Requests, some variants might employ UDP or TCP packets. Regardless of the method, the underlying principle remains the same: by analyzing “Time Exceeded” ICMP messages returned by intermediate routers, ‘traceroute’ maps out the journey of packets through the network.

Routers, the unsung heroes directing traffic across the internet, have a symbiotic relationship with ICMP. They utilize ICMP to communicate network issues back to the source. For instance, if a destination is unreachable or a packet’s time-to-live expires, routers generate ICMP messages to inform the sender, ensuring transparency in network communications.

Diving into some technical nuances:

  • ICMP Port: Unlike TCP or UDP, ICMP doesn’t operate on ports. Instead, it differentiates messages using ‘type’ and ‘code’ fields.
  • ICMP Ping: A colloquial term often used to describe the act of sending ICMP Echo Requests to test network connectivity.
  • ICMP Layer: ICMP predominantly operates at the network layer, seamlessly integrating with the Internet Protocol (IP) to provide feedback on network activities.
  • ICMP vs TCP: While both are integral to network communications, ICMP focuses on error reporting and diagnostics, whereas TCP is a connection-oriented protocol designed for data transmission.
  • ICMP Packet: The fundamental unit of ICMP communication, comprising a header (with type, code, and checksum fields) and a payload.
  • ICMP Types: These define the nature of ICMP messages, with each type representing different messages like “Destination Unreachable” or “Echo Reply.”
  • ICMP RFC: The official documentation (RFC 792) that outlines the specifications, behaviors, and formats of ICMP messages.
  • ICMP Echo: The technical term for the messages (Echo Request and Echo Reply) used by the ‘ping’ utility to test connectivity.

In essence, ICMP’s influence extends far beyond its primary role, powering tools and utilities that have become staples in network diagnostics and optimization.

ICMP’s Significance and Necessity

The Internet Control Message Protocol, while seemingly a background player in the vast orchestra of network protocols, holds a pivotal role in ensuring smooth and informed network communications. Its significance can be likened to a vigilant sentinel, always on the lookout for issues and promptly communicating them.

ICMP’s role in the digital communication realm is both significant and indispensable. It acts as the eyes and ears of the network, providing invaluable insights and feedback, ensuring that the digital world remains interconnected and informed.

Aspect Description/Significance
Necessity ICMP is essential for network diagnostics and error reporting, helping administrators troubleshoot and maintain network health.
Priority In network communication, ICMP messages may be treated with lower priority compared to other traffic, but they remain crucial for diagnostics.
Windows Interaction By default, modern Windows OS might block ICMP ping requests for security reasons. However, ICMP can be enabled through firewall settings for diagnostic purposes.
Layer Operation ICMP operates on the Network layer (Layer 3) of the OSI model, directly interacting with the IP protocol to convey status and error information.
Network Health ICMP aids in monitoring network health by signaling issues like unreachable destinations, time exceeded, or redirecting routes.

One might wonder about the indispensability of ICMP. In essence, while networks can technically function without ICMP, they would be akin to driving in the dark without headlights. ICMP provides feedback about network health, connectivity issues, and operational statuses. Without it, diagnosing network problems would be significantly more challenging, and many automated processes that rely on this feedback would be rendered ineffective.

In the hierarchy of network communication, ICMP doesn’t necessarily hold the highest priority in terms of data transmission. Protocols like TCP and UDP, responsible for the bulk of data transfer, often take precedence. However, ICMP’s priority shines in its ability to promptly communicate network anomalies and operational information. It’s the protocol network administrators turn to when they need insights into what’s happening behind the scenes.

RELATED:   What is a Network Gateway?

Modern operating systems, including Windows, have become increasingly security-conscious. As a result, certain ICMP messages, especially the Echo Request used by the ‘ping’ command, might be blocked by default firewall settings. This is primarily to prevent potential misuse, such as Denial of Service (DoS) attacks using ICMP flood. However, it’s worth noting that ICMP, in its entirety, isn’t blocked. Specific messages are allowed to ensure that essential network diagnostics and feedback mechanisms remain functional.

Diving into the layered architecture of network protocols, ICMP operates predominantly at the network layer of the TCP/IP model. This positioning allows it to work closely with the Internet Protocol (IP), ensuring that feedback and error messages are seamlessly integrated with IP operations.

Potential Risks and Limitations of ICMP

The Internet Control Message Protocol, while instrumental in network diagnostics and error reporting, is not without its set of challenges. Like many protocols in the digital realm, ICMP can be a double-edged sword, offering invaluable services on one hand and presenting potential vulnerabilities on the other.

Vulnerability/Risk Mitigation Strategy
DDoS attacks Implement rate limiting for ICMP requests and deploy intrusion detection/prevention systems to identify and block malicious traffic.
Information Leak Disable unnecessary ICMP message types, especially those that can reveal information about the network topology or active devices.
ICMP Redirect Attack Configure routers and firewalls to ignore ICMP redirect messages. Ensure end devices are not trusting ICMP redirects by default.
ICMP Tunneling Use deep packet inspection (DPI) to detect abnormal ICMP traffic patterns. Block or limit ICMP traffic if not needed for network operations.
Ping of Death Update and patch network devices and operating systems to versions that are immune to oversized ICMP packet issues.

ICMP’s open nature, designed to provide feedback about network health and issues, can sometimes be its Achilles’ heel. Malicious actors have identified ways to exploit this openness, leading to several known vulnerabilities. For instance, ICMP can inadvertently leak information about a network’s internal structure, providing attackers with insights that can be used for more targeted attacks.

One of the most notorious ways ICMP has been weaponized is in Distributed Denial of Service (DDoS) attacks. By flooding a target with ICMP Echo Request messages, commonly known as “ping flood,” attackers can overwhelm a system, rendering it unresponsive. This type of attack exploits ICMP’s primary function, turning a diagnostic tool into a weapon of disruption.

However, the digital community is not defenseless against these threats. Several measures have been developed to mitigate the risks associated with ICMP. Firewalls and Intrusion Detection Systems (IDS) can be configured to monitor and limit ICMP traffic, ensuring that it remains within expected parameters. Additionally, rate limiting can be applied to ICMP messages, preventing any sudden influx of requests, typical in DDoS attacks. Network administrators can also selectively disable certain ICMP messages, especially if they are not crucial for their network’s operation, further reducing the attack surface.

In conclusion, while ICMP plays a pivotal role in network communication, it’s essential to approach its use with a security-first mindset. By understanding its potential risks and implementing robust security measures, the benefits of ICMP can be enjoyed without compromising network integrity.

The Future of ICMP

The Internet Control Message Protocol, having been a cornerstone of network diagnostics and communication for decades, naturally prompts questions about its relevance and evolution in the rapidly changing landscape of digital communication.

Future Aspect Expected Development/Change
ICMPv6 With the adoption of IPv6, ICMPv6 will play a crucial role in error handling and diagnostics, offering enhanced features tailored for the IPv6 protocol.
IoT Integration As the Internet of Things (IoT) expands, ICMP will need to adapt to the unique requirements of IoT devices, ensuring efficient error reporting and network diagnostics in diverse environments.
Security Enhancements Given the vulnerabilities associated with ICMP, future iterations may introduce more robust security measures to prevent misuse and attacks.
Advanced Diagnostics ICMP might evolve to offer more granular diagnostic capabilities, providing deeper insights into network health and performance.
Integration with AI With the rise of AI in network management, ICMP could integrate with AI-driven tools to predict network issues and offer proactive solutions.

As networks grow in complexity and the demands on infrastructure evolve, ICMP continues to adapt. With the advent of IPv6, a new iteration, ICMPv6, was introduced. This version not only supports the extended address lengths of IPv6 but also integrates functionalities like Neighbor Discovery and Multicast Listener Discovery, which were previously managed by separate protocols in IPv4.

The rise of the Internet of Things and the proliferation of connected devices also underscore the importance of efficient network diagnostics and error reporting. ICMP’s role in these environments is crucial, ensuring that vast arrays of devices can communicate effectively and that network administrators can swiftly identify and address issues.

However, with advancements come challenges. The security concerns associated with ICMP, as with many legacy protocols, will continue to be a focal point. As cyber threats become more sophisticated, there’s a pressing need for ICMP to incorporate more robust security features, possibly integrating with advanced encryption methods or adopting machine learning techniques to identify and counteract malicious activities in real-time.

Moreover, as software-defined networking (SDN) and network function virtualization (NFV) gain traction, ICMP might need to evolve to operate seamlessly in these virtualized environments. The protocol might see adaptations that allow it to work more efficiently with virtual routers, switches, and other network components.

In conclusion, while ICMP’s core principles and functionalities remain consistent, its future is one of adaptation and evolution. As the digital world continues to expand and transform, ICMP will undoubtedly rise to the challenges, ensuring that it remains an integral part of the internet’s backbone.


The journey through the realms of ICMP underscores its undeniable importance in the digital world. From its foundational role in network diagnostics to its interactions with a myriad of other protocols, ICMP proves to be both versatile and indispensable. However, like all digital tools, it comes with its set of challenges, especially in the realm of security.

As we look ahead, it’s evident that ICMP will continue to adapt, meeting the demands of an increasingly connected world while addressing its vulnerabilities.

As digital enthusiasts, professionals, or even curious readers, understanding ICMP equips us with knowledge that’s crucial in navigating the digital age.

Welcome to the comments.


  1. What exactly is ICMP?

    ICMP, or Internet Control Message Protocol, is a network layer protocol used primarily for error reporting and diagnostics.

  2. How does ICMP differ from TCP and UDP?

    While TCP and UDP are transport layer protocols responsible for data transmission, ICMP operates at the network layer and focuses on error messages and operational information.

  3. Is ICMP necessary for a network?

    Yes, ICMP is essential for diagnosing network issues, providing feedback on network problems, and facilitating certain network operations like ping and traceroute.

  4. Are there security concerns with ICMP?

    Yes, ICMP can be exploited for various attacks, including DDoS attacks. It’s crucial to implement security measures to mitigate these risks.

  5. How is ICMP expected to evolve in the future?

    ICMP is expected to adapt to newer network protocols like IPv6, integrate better with IoT devices, and see enhanced security features and AI-driven diagnostic capabilities.


Leave a Reply

Your email address will not be published. Required fields are marked *