<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.cas.mcmaster.ca/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Collim&amp;title=Special%3AContributions</id>
		<title>Computing and Software Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Collim&amp;title=Special%3AContributions"/>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Special:Contributions/Collim"/>
		<updated>2026-06-06T16:21:00Z</updated>
		<subtitle>From Computing and Software Wiki</subtitle>
		<generator>MediaWiki 1.15.1</generator>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-23T20:13:12Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Command Line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles''' originally presented by Ben Shneiderman in 1983 represent the five basic ways that humans interact with a computer interface. Each interaction style effects the overall efficiency and usability of the computer system, but that is not to say there are good or bad interaction styles. The styles all have benefits and trade offs when dealing with certain types of users and it is often in an interface designers best interest to use a combination of styles instead of anyone one style alone.&lt;br /&gt;
&lt;br /&gt;
= Shneiderman's Five Interaction Styles =&lt;br /&gt;
&lt;br /&gt;
== Visual representation ==&lt;br /&gt;
&lt;br /&gt;
Visual representation (also known as [[Direct Manipulation]]) features a natural representation of task [http://www.cas.mcmaster.ca/wiki/index.php/The_Object-Action_%28or_visa-versa%29_model_and_its_applications objects and actions]. This helps present the process as actually performing a task itself directly even though it is being doing through an intermediary like a computer. The visual representation usually takes the form of a metaphor related to the actual task being performed. In this way well designed visual representation systems tend to make the interaction enjoyable for the users, which is excellent for novice users or complex tasks that can lead to anxiety.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Visual presentation of task concepts&lt;br /&gt;
* Allows easy learning&lt;br /&gt;
* Encourages exploration&lt;br /&gt;
* Users can immediately see if their actions are furthering their goals&lt;br /&gt;
* Users gain confidence because they feel in control and can predict system responses&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can be hard to implement&lt;br /&gt;
* Requires graphics display/pointing devices&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
&lt;br /&gt;
== Fill-In-The-Blanks ==&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interaction style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognized'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
== Command Line ==&lt;br /&gt;
[[Image:Commandline.png|thumb|300px|right|Ubuntu command line showing basic commands]]&lt;br /&gt;
&lt;br /&gt;
Command line is the earliest used interaction style and is still seen predominantly in Unix operating systems though still usable to varying degrees on Windows and OSX. This style is mainly used by expert users by typing into a prompt that allows them to quickly execute commands. Unfortunately command line places a considerable burden on the user to learn and recall commands from memory. It is often the case that commands take parameters as well and most of the added benefits (mainly in the way of efficiency) come from using them. This leads to an unfriendly environment for both novice and intermediate users that may attempt to use this style. The large overhead in learning commands and minimal help for the user leaves this style almost exclusively in the domain of the expert user.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* quick and powerful for experienced users&lt;br /&gt;
* user-controlled interaction&lt;br /&gt;
* minimal amount of typing (no mouse use)&lt;br /&gt;
* can be used in conjunction with other user interfaces&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* little or no prompting&lt;br /&gt;
* requires user’s knowledge of system, programs&lt;br /&gt;
* relies on recall of commands and syntax&lt;br /&gt;
* difficult to learn&lt;br /&gt;
* error prone&lt;br /&gt;
&lt;br /&gt;
== Natural Language ==&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Motivations for the Studies of HCI]]&lt;br /&gt;
* [[Contexts for HCI]]&lt;br /&gt;
* [[Process for User-centered Development]]&lt;br /&gt;
* [[Social issues influencing HCI design and use]]&lt;br /&gt;
* [[HCI - Accommodating human diversity]]&lt;br /&gt;
* [[User Interface Standards]]&lt;br /&gt;
* [[The Object-Action (or visa-versa) model and its applications]]&lt;br /&gt;
* [[Direct Manipulation]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
= External links =&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 23:50, 21 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Frostd|Frostd]] 00:58, 22 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-23T20:12:43Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Fill-In-The-Blanks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles''' originally presented by Ben Shneiderman in 1983 represent the five basic ways that humans interact with a computer interface. Each interaction style effects the overall efficiency and usability of the computer system, but that is not to say there are good or bad interaction styles. The styles all have benefits and trade offs when dealing with certain types of users and it is often in an interface designers best interest to use a combination of styles instead of anyone one style alone.&lt;br /&gt;
&lt;br /&gt;
= Shneiderman's Five Interaction Styles =&lt;br /&gt;
&lt;br /&gt;
== Visual representation ==&lt;br /&gt;
&lt;br /&gt;
Visual representation (also known as [[Direct Manipulation]]) features a natural representation of task [http://www.cas.mcmaster.ca/wiki/index.php/The_Object-Action_%28or_visa-versa%29_model_and_its_applications objects and actions]. This helps present the process as actually performing a task itself directly even though it is being doing through an intermediary like a computer. The visual representation usually takes the form of a metaphor related to the actual task being performed. In this way well designed visual representation systems tend to make the interaction enjoyable for the users, which is excellent for novice users or complex tasks that can lead to anxiety.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Visual presentation of task concepts&lt;br /&gt;
* Allows easy learning&lt;br /&gt;
* Encourages exploration&lt;br /&gt;
* Users can immediately see if their actions are furthering their goals&lt;br /&gt;
* Users gain confidence because they feel in control and can predict system responses&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can be hard to implement&lt;br /&gt;
* Requires graphics display/pointing devices&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
&lt;br /&gt;
== Fill-In-The-Blanks ==&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interaction style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognized'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
== Command Line ==&lt;br /&gt;
[[Image:Commandline.png|thumb|300px|right|Ubuntu command line showing basic commands]]&lt;br /&gt;
&lt;br /&gt;
Command line is the earliest used interaction style and is still seen predominantly in Unix operating systems though still usable to varying degrees on Windows and OSX. This style is mainly used by expert users by typing into a prompt that allows them to quickly execute commands. Unfortunately command line places a considerable burden on the user to learn and recall commands from memory. It is often the case that commands take parameters as well and most of the added benefits (mainly in the way of efficiency) come from using them. This leads to an unfriendly environment for both novice and intermediate users that may attempt to use this style. The large overhead in learning commands and minimal help for the user leaves this style almost exclusively in the domain of the expert user.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* quick and powerful for experienced users&lt;br /&gt;
* user-controlled interaction&lt;br /&gt;
* minimal amount of typing (no mouse use)&lt;br /&gt;
* can be used in conjunction with other user interfaces&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* little or no prompting&lt;br /&gt;
* requires user’s knowledge of system, programs&lt;br /&gt;
* relies on recall of commands and syntax&lt;br /&gt;
* difficult to learn&lt;br /&gt;
* error prone&lt;br /&gt;
&lt;br /&gt;
== Natural Language ==&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Motivations for the Studies of HCI]]&lt;br /&gt;
* [[Contexts for HCI]]&lt;br /&gt;
* [[Process for User-centered Development]]&lt;br /&gt;
* [[Social issues influencing HCI design and use]]&lt;br /&gt;
* [[HCI - Accommodating human diversity]]&lt;br /&gt;
* [[User Interface Standards]]&lt;br /&gt;
* [[The Object-Action (or visa-versa) model and its applications]]&lt;br /&gt;
* [[Direct Manipulation]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
= External links =&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 23:50, 21 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Frostd|Frostd]] 00:58, 22 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T04:50:40Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
= Shneiderman's Five Interaction Styles =&lt;br /&gt;
&lt;br /&gt;
== Visual representation ==&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
&lt;br /&gt;
== Fill-In-The-Blanks ==&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
== Command Prompt ==&lt;br /&gt;
&lt;br /&gt;
== Natural Language ==&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
= External links =&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 23:50, 21 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:51:13Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Fill-In-The-Blanks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:50:01Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Fill-In-The-Blanks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:47:41Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:46:39Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:44:15Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, dgp.toronto.org, http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, billbuxton.com, http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:42:18Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* - Disadvantages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
2. Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, dgp.toronto.org, http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
3. Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, billbuxton.com, http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:41:38Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
2. Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, dgp.toronto.org, http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
3. Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, billbuxton.com, http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:38:14Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:37:28Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with it through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:33:46Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with it through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:32:44Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with it through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboarding skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:30:57Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with it through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures, and a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboarding skills, and once it more accurately interprets verbal commands may even see widespread use one day.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:29:02Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with it through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures, and a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:27:10Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with it through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures, and a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-22T02:25:25Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Natural Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
=== Fill-In-The-Blanks ===&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Oriaginally Fill-In-The-Blanks is to arrange one or more fileds in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design nowadays, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interation style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&lt;br /&gt;
==== - Advantages ====&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognised'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
==== - Disadvantages ====&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
Natural Language is an interaction style which allows the user to simply communicate with it through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures, and a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
1. Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-21T00:20:50Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles'''&lt;br /&gt;
&lt;br /&gt;
== Shneiderman's Five Interaction Styles ==&lt;br /&gt;
&lt;br /&gt;
=== Visual representation ===&lt;br /&gt;
&lt;br /&gt;
=== Menus ===&lt;br /&gt;
&lt;br /&gt;
===Fill-In-The-Blanks ===&lt;br /&gt;
&lt;br /&gt;
=== Command Prompt ===&lt;br /&gt;
&lt;br /&gt;
=== Natural Language ===&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-13T02:27:51Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the [[internet]]. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|A datagram encounters a problem at R1 and an ICMP message is generated in response to this and sent back to the source of the original datagram&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted in favour of other data. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6 - Alternate Host Address    ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up a target machine with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[http://tools.ietf.org/html/rfc792 DARPA Internet Program Protocol Specification]&lt;br /&gt;
*[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html A Somewhat Illustrative Explanation]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Internet_control_message_protocol Wikipedia's Page on ICMP]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T22:42:22Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the [[internet]]. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted in favour of other data. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6 - Alternate Host Address    ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up a target machine with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[http://tools.ietf.org/html/rfc792 DARPA Internet Program Protocol Specification]&lt;br /&gt;
*[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html A Somewhat Illustrative Explanation]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Internet_control_message_protocol Wikipedia's Page on ICMP]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T22:19:10Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Partial List of Control Messages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted in favour of other data. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6 - Alternate Host Address    ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up a target machine with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[http://tools.ietf.org/html/rfc792 DARPA Internet Program Protocol Specification]&lt;br /&gt;
*[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html A Somewhat Illustrative Explanation]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Internet_control_message_protocol Wikipedia's Page on ICMP]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T22:07:12Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted in favour of other data. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up a target machine with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[http://tools.ietf.org/html/rfc792 DARPA Internet Program Protocol Specification]&lt;br /&gt;
*[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html A Somewhat Illustrative Explanation]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Internet_control_message_protocol Wikipedia's Page on ICMP]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T21:18:13Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Misuses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up a target machine with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[http://tools.ietf.org/html/rfc792 DARPA Internet Program Protocol Specification]&lt;br /&gt;
*[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html A Somewhat Illustrative Explanation]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Internet_control_message_protocol Wikipedia's Page on ICMP]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T21:10:17Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[http://tools.ietf.org/html/rfc792 DARPA Internet Program Protocol Specification]&lt;br /&gt;
*[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html A Somewhat Illustrative Explanation]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Internet_control_message_protocol Wikipedia's Page on ICMP]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T21:09:33Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
*[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html Internet Control Message Protocol (somewhat illustrative)]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Internet_control_message_protocol Internet Control Message Protocol (Wikipedia)]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T21:09:09Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
[http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html Internet Control Message Protocol (somewhat illustrative)]&lt;br /&gt;
[http://en.wikipedia.org/wiki/Internet_control_message_protocol Internet Control Message Protocol (Wikipedia)]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T21:05:57Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T21:05:10Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
#Internet Message Protocol (ICMP). Retrieved on April 12th, 2009 from http://www.erg.abdn.ac.uk/users/gorry/course/inet-pages/icmp.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T21:04:31Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
[[Image:Icmp-gen.gif|thumb|right|400px|ICMP Message Generation]]&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Icmp-eg.gif|thumb|center|400px|Echo Request and Reply]]&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Icmp-eg.gif</id>
		<title>File:Icmp-eg.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Icmp-eg.gif"/>
				<updated>2009-04-12T20:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;An illustration of ICMP's Echo Request and Echo Reply (ping)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An illustration of ICMP's Echo Request and Echo Reply ([[ping]])&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Icmp-gen.gif</id>
		<title>File:Icmp-gen.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Icmp-gen.gif"/>
				<updated>2009-04-12T20:54:05Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;The generation of an ICMP message&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The generation of an ICMP message&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:48:30Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial Of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:46:52Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:46:37Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
#Types of DDoS attacks. Retrieved on April 12th, 2009 from http://anml.iu.edu/ddos/types.html#flood&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:44:55Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Misuses===&lt;br /&gt;
While ICMP can be used to diagnose and repair a network, it can also be exploited in order to perform attacks. An example of this is the [[Denial of Service Attacks|Denial of Service Attack]]. By clogging up their target with a large number of ICMP messages, or otherwise abusing how the network deals with these messages, an attacker can cause disruptions in service and maybe even a system crash.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:37:47Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Utilization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:37:20Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Utilization==&lt;br /&gt;
ICMP can be an invaluable tool for network managers or users to identify network problems. For instance, a host or a router can send an ICMP echo request message to a specific location. Any machine which receives an echo request creates an echo reply and sends it back to the source of the request. So this request and reply can be used to determine whether a destination is reachable and responding. Since both the request and reply are sent in IP datagrams, successfully receiving the reply verifies that important parts of the transport system work.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:26:47Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#Internet Control Message Protocol. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:25:51Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=6| 40 - Photuris, Security failures&lt;br /&gt;
|                  0   || Bad SPI&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Authentication Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Decompression Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Decryption Failed&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Need Authentication&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Need Authorization &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 40 - Photuris, Security failures  ||  ?    || &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4],[5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
#ICMP Packet Filtering. Retrieved on April 12th, 2009 from http://www.daemon.be/maarten/icmpfilter.html&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:15:28Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=12| 31 - Datagram Conversion Error&lt;br /&gt;
|                  0   || Unknown Error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Don't Convert Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Unknown Mandatory Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Known Unsupported Option Present&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Unsupported Transport Protocol&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Overall Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || IP Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Transport Protocol &amp;gt; 255&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Port Conversion Out of Range&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Transport Header Length Exceeded&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || 32-bit Rollover Missing and ACK set&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Unknown Mandatory Transport Option Present&lt;br /&gt;
|-&lt;br /&gt;
| 32 - Mobile Host Redirect ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 33 - Where-Are-You ([[The practicality of IPv6|IPv6]]) ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 34 - Where-Are-You/Here-I-Am (IPv6) ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 35 - Mobile Registration Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 36 - Mobile Registration Reply ||  ?    ||  ?&lt;br /&gt;
|-&lt;br /&gt;
| 37 - Domain Name Request ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 38 - Domain Name Reply ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 39 - SKIP Algorithm, Simple Key-Management  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 40 - Photuris, Security failures  ||  ?    || &lt;br /&gt;
|-&lt;br /&gt;
| 41 - ICMP for experimental mobility protocols  ||  ?    || ?&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4], [5]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:03:55Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Partial List of Control Messages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You ([[The practicality of IPv6|IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T20:00:03Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;/* Format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets of the header are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T19:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T19:57:28Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Permitted Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T19:57:17Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Permitted Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[traceroute]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T19:55:20Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and can contain eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. If the ICMP message is not of the Echo Reply type, then the last four octets are omitted. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Partial List of Permitted Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T19:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and contains eight octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message. The third and fourth octets of the ICMP header contain the checksum. The checksum field contains error checking data which is calculated from the ICMP header and data. The fifth and sixth octets contain the ID, which is returned in the case of an [[ping|Echo Reply]]. The seventh and eighth octets contain the sequence, which is also returned in the case of Echo Reply. &lt;br /&gt;
&lt;br /&gt;
===Partial List of Permitted Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T19:46:26Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header and also an ICMP header. The ICMP header starts after bit 160 in the IP header and contains four octets. The first octet of ICMP header is the ICMP type field, the value of which determines the format of the remaining data. This type can be further specified using the second octet, which contains the code. The value of the code determines what subtype the ICMP message is. For instance a message of type 3 code 1 is destination host unreachable, whereas a message of type 3 code 2 is destination protocol unreachable. Both of these messages are of the same main type, type 3, which is a destination unreachable message.&lt;br /&gt;
&lt;br /&gt;
===Partial List of Permitted Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  ?    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  ?    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  ?    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  ?    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  ?    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  ?    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  ?    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  ?    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  ?    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  ?    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  ?    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  ?    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol</id>
		<title>Internet Control Message Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Internet_Control_Message_Protocol"/>
				<updated>2009-04-12T19:35:51Z</updated>
		
		<summary type="html">&lt;p&gt;Collim:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Internet Control Message Protocol''' ('''ICMP''') is mainly responsible for the sending of error messages to indicate issues that occur between networked entities on the internet. ICMP is a special-purpose message mechanism, and is considered a required part of the [[Internet Protocol]] (IP) which must be included in every IP implementation. Much like other network traffic, ICMP messages travel across the internet in the data portion of IP datagrams. The Internet Control Message Protocol can only report the error back to the original source of the datagram, it is the source's responsibility then to relate the error to a program or take other action to solve the problem. The major advantage of allowing hosts to use ICMP is that it provides a single mechanism for all control and information messages. Other than [[ping]] and [[traceroute]], ICMP is not usually used directly by user applications.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
ICMP messages are created as a response to errors that may occur in IP datagrams or for routing or diagnostic purposes. The ICMP messages are generated at the IP layer, and is encapsulated and then transmitted much like IP datagrams. ICMP messages are generated in several situations, such as when a datagram cannot reach its destination or if the gateway does not have the buffering capacity to forward a datagram. These control messages are not considered reliable, as there is no guarantee that a datagram will be delivered. If reliability is required then higher level protocols which use IP must implement their own reliability procedures. ICMP messages are never sent in response to errors with ICMP messages themselves, as this could result in an infinite amount of messages. &amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
===Format===&lt;br /&gt;
ICMP messages use the basic IP header. The first octet of the data portion of the datagram is the ICMP type field, the value of which determines the format of the remaining data.&lt;br /&gt;
&lt;br /&gt;
===Partial List of Permitted Control Messages===&lt;br /&gt;
{|border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type &lt;br /&gt;
! Code &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 - [[ping|Echo Reply]] &lt;br /&gt;
|                 0    || Echo reply (used to [[ping]])&lt;br /&gt;
|-&lt;br /&gt;
| 1 and 2&lt;br /&gt;
|                     N/A || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=14| 3 - Destination Unreachable  &lt;br /&gt;
|                  0   || Destination network unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Destination host unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Destination protocol unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Destination port unreachable&lt;br /&gt;
|-&lt;br /&gt;
|                  4   || Fragmentation required, and DF flag set&lt;br /&gt;
|-&lt;br /&gt;
|                  5   || Source route failed&lt;br /&gt;
|-&lt;br /&gt;
|                  6   || Destination network unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  7   || Destination host unknown&lt;br /&gt;
|-&lt;br /&gt;
|                  8   || Source host isolated&lt;br /&gt;
|-&lt;br /&gt;
|                  9   || Network administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 10   || Host administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
|                 11   || Network unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 12   || Host unreachable for TOS&lt;br /&gt;
|-&lt;br /&gt;
|                 13   || Communication administratively prohibited&lt;br /&gt;
|-&lt;br /&gt;
| 4 - Source Quench&lt;br /&gt;
|                  0   || Source quench (congestion control)&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=4| 5 - Redirect Message&lt;br /&gt;
|                  0   || Redirect Datagram for the Network&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Redirect Datagram for the Host&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Redirect Datagram for the TOS &amp;amp; network&lt;br /&gt;
|-&lt;br /&gt;
|                  3   || Redirect Datagram for the TOS &amp;amp; host&lt;br /&gt;
|-&lt;br /&gt;
| 6            ||  N/A    || Alternate Host Address&lt;br /&gt;
|-&lt;br /&gt;
| 7            ||  N/A    || ''Reserved''&lt;br /&gt;
|-&lt;br /&gt;
| 8 - Echo Request&lt;br /&gt;
|                  0   || Echo request&lt;br /&gt;
|-&lt;br /&gt;
| 9 - Router Advertisement&lt;br /&gt;
|                  0   || Router Advertisement&lt;br /&gt;
|-&lt;br /&gt;
| 10 - Router Solicitation&lt;br /&gt;
|                  0   || Router discovery/selection/solicitation&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=2| 11 - Time Exceeded&lt;br /&gt;
|                  0   || TTL expired in transit&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Fragment reassembly time exceeded&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=3| 12 - Parameter Problem: Bad IP header&lt;br /&gt;
|                  0   || Pointer indicates the error&lt;br /&gt;
|-&lt;br /&gt;
|                  1   || Missing a required option&lt;br /&gt;
|-&lt;br /&gt;
|                  2   || Bad length&lt;br /&gt;
|-&lt;br /&gt;
| 13 - Timestamp&lt;br /&gt;
|                  0   || Timestamp&lt;br /&gt;
|-&lt;br /&gt;
| 14 - Timestamp Reply&lt;br /&gt;
|                  0   || Timestamp reply&lt;br /&gt;
|-&lt;br /&gt;
| 15 - Information Request&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 16 - Information Reply&lt;br /&gt;
|                  0   || Information Reply&lt;br /&gt;
|-&lt;br /&gt;
| 17 - Address Mask Request&lt;br /&gt;
|                  0   || Address Mask Request&lt;br /&gt;
|-&lt;br /&gt;
| 18 - Address Mask Reply&lt;br /&gt;
|                  0   || Address Mask Reply&lt;br /&gt;
|-&lt;br /&gt;
| 19           ||   N/A   || ''Reserved'' for security&lt;br /&gt;
|-&lt;br /&gt;
| 20 to 29||   N/A   || ''Reserved'' for robustness experiment&lt;br /&gt;
|-&lt;br /&gt;
| 30 - Traceroute&lt;br /&gt;
|                  0   || Information Request&lt;br /&gt;
|-&lt;br /&gt;
| 31           ||  N/A    || Datagram Conversion Error&lt;br /&gt;
|-&lt;br /&gt;
| 32           ||  N/A    || Mobile Host Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 33           ||  N/A    || Where-Are-You (originally meant for [[IPv6]])&lt;br /&gt;
|-&lt;br /&gt;
| 34           ||  N/A    || Where-Are-You|Here-I-Am (originally meant for IPv6)&lt;br /&gt;
|-&lt;br /&gt;
| 35           ||  N/A    || Mobile Registration Request&lt;br /&gt;
|-&lt;br /&gt;
| 36           ||  N/A    || Mobile Registration Reply&lt;br /&gt;
|-&lt;br /&gt;
| 37           ||  N/A    || Domain Name Request&lt;br /&gt;
|-&lt;br /&gt;
| 38           ||  N/A    || Domain Name Reply&lt;br /&gt;
|-&lt;br /&gt;
| 39           ||  N/A    || SKIP Algorithm, Simple Key-Management&lt;br /&gt;
|-&lt;br /&gt;
| 40           ||  N/A    || Photuris, Security failures&lt;br /&gt;
|-&lt;br /&gt;
| 41           ||  N/A    || ICMP for experimental mobility protocols&lt;br /&gt;
|-&lt;br /&gt;
| 42 to 255||  N/A   || ''Reserved''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;sup&amp;gt;[3],[4]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
#Douglas E. Comer (2000). &amp;quot;Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture&amp;quot;. ''Internet Protocol: Error and Control Messages(ICMP)'' 129-145, Prentice Hall&lt;br /&gt;
#Internet Control Message Protocol - DARPA Internet Program Protocol Specification. Retrieved on April 12th, 2009 from http://tools.ietf.org/html/rfc792&lt;br /&gt;
#ICMP Type Numbers. Retrieved on April 12th, 2009 from http://www.iana.org/assignments/icmp-parameters.&lt;br /&gt;
#ICMP. Retrieved on April 12th, 2009 from http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Internet Protocol]]&lt;br /&gt;
*[[Denial Of Service Attacks]]&lt;br /&gt;
*[[Smurfing]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
[http://tools.ietf.org/html/rfc792 Internet Control Message Protocol - DARPA Internet Program Protocol Specification]&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 21:26, 4 April 2009 (EDT)&lt;/div&gt;</summary>
		<author><name>Collim</name></author>	</entry>

	</feed>