<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkYFRnc7cCp7ImA9WhRRFEk.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901</id><updated>2011-11-28T07:28:37.908+07:00</updated><title>Parapat Notes</title><subtitle type="html">Free is beautiful. Improve your performance with opensource.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://parapatnotes.blogspot.com/" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ParapatNotes" /><feedburner:info uri="parapatnotes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DE8MSHkzeyp7ImA9WhZSGE8.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-1195937915720343743</id><published>2011-04-03T17:34:00.001+07:00</published><updated>2011-04-03T17:34:49.783+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-03T17:34:49.783+07:00</app:edited><title>Mobile blogging</title><content type="html">This is my first time posting my blog from mobile using an iPhone. Nice to used. I can blogging everywhere and everythink I want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-1195937915720343743?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6hHn_efbF-Jfa_MEkhPr97bO6kU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6hHn_efbF-Jfa_MEkhPr97bO6kU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6hHn_efbF-Jfa_MEkhPr97bO6kU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6hHn_efbF-Jfa_MEkhPr97bO6kU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/TOusPF6569c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/1195937915720343743/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2011/04/mobile-blogging.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/1195937915720343743?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/1195937915720343743?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/TOusPF6569c/mobile-blogging.html" title="Mobile blogging" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2011/04/mobile-blogging.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkENSX4zeyp7ImA9Wx5XE00.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-3249851191911495908</id><published>2010-09-12T23:16:00.005+07:00</published><updated>2010-09-12T23:24:58.083+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-12T23:24:58.083+07:00</app:edited><title>Improving (network) I/O performance</title><content type="html">&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The reason for the current work is to analyze different methods for efficent delivery of network events from kernel mode to user mode. Five methods are examined, poll() that has been chosen as the better old-style method, standard /dev/poll interface, standard RT signals, RT signals with one-sig-per-fd patch and a new /dev/epoll that uses a quite different notification method. This work is composed by :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;1) the new /dev/epoll kernel patch&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;2) the /dev/poll patch from Provos-Lever modified to work with 2.4.6&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;3) the HTTP server&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;4) the deadconn(tm) tool to create "dead" connections&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;As a measurement tool httperf has been chosen coz, even if not perfect, it offers a quite sufficent number of loading options.&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-family: Courier; "&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The new /dev/epoll kernel patch&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The patch is quite simple and it adds notification callbacks to the 'struct file' data structure :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;******* include/linux/fs.h&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;struct file {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        /* file callback list */&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        rwlock_t f_cblock;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        struct list_head f_cblist;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;****** include/linux/fcblist.h&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;/* file callback notification events */&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define ION_IN          1&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define ION_OUT         2&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define ION_HUP         3&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;#define ION_ERR         4&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define FCB_LOCAL_SIZE  4&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define fcblist_read_lock(fp, fl)              read_lock_irqsave(&amp;amp;(fp)-&gt;f_cblock, fl)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define fcblist_read_unlock(fp, fl)            read_unlock_irqrestore(&amp;amp;(fp)-&gt;f_cblock, fl)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;#define fcblist_write_lock(fp, fl)             write_lock_irqsave(&amp;amp;(fp)-&gt;f_cblock, fl)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;#define fcblist_write_unlock(fp, fl)           write_unlock_irqrestore(&amp;amp;(fp)-&gt;f_cblock, fl)&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;struct fcb_struct {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        struct list_head lnk;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        void (*cbproc)(struct file *, void *, unsigned long *, long *);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        void *data;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        unsigned long local[FCB_LOCAL_SIZE];&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;extern long ion_band_table[];&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;extern long poll_band_table[];&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;static inline void file_notify_init(struct file *filep)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        rwlock_init(&amp;amp;filep-&gt;f_cblock);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        INIT_LIST_HEAD(&amp;amp;filep-&gt;f_cblist);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;void file_notify_event(struct file *filep, long *event);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int file_notify_addcb(struct file *filep,&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;  void (*cbproc)(struct file *, void *, unsigned long *, long *), void *data);&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int file_notify_delcb(struct file *filep,&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;  void (*cbproc)(struct file *, void *, unsigned long *, long *));&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;void file_notify_cleanup(struct file *filep);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The meaning of this callback list is to give lower IO layers the ability to notify upper layers that will register their "interests" to the file structure. In fs/file_table.c initialization and cleanup code has been added while in fs/fcblist.c the callback list handling code has been fit :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;****** fs/file_table.c&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;struct file * get_empty_filp(void)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        file_notify_init(f);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int init_private_file(struct file *filp, struct dentry *dentry, int mode)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        file_notify_init(filp);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;void fput(struct file * file)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        file_notify_cleanup(file);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;****** fs/fcblist.c&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;void file_notify_event(struct file *filep, long *event)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        unsigned long flags;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        struct list_head *lnk;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_read_lock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        list_for_each(lnk, &amp;amp;filep-&gt;f_cblist) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;                struct fcb_struct *fcbp = list_entry(lnk, struct fcb_struct, lnk);&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                fcbp-&gt;cbproc(filep, fcbp-&gt;data, fcbp-&gt;local, event);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_read_unlock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int file_notify_addcb(struct file *filep,&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                void (*cbproc)(struct file *, void *, unsigned long *, long *), void *data)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        unsigned long flags;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        struct fcb_struct *fcbp;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        if (!(fcbp = (struct fcb_struct *) kmalloc(sizeof(struct fcb_struct), GFP_KERNEL)))&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                return -ENOMEM;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        memset(fcbp, 0, sizeof(struct fcb_struct));&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcbp-&gt;cbproc = cbproc;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcbp-&gt;data = data;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_write_lock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        list_add_tail(&amp;amp;fcbp-&gt;lnk, &amp;amp;filep-&gt;f_cblist);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_write_unlock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        return 0;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int file_notify_delcb(struct file *filep,&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                void (*cbproc)(struct file *, void *, unsigned long *, long *))&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        unsigned long flags;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        struct list_head *lnk;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_write_lock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        list_for_each(lnk, &amp;amp;filep-&gt;f_cblist) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;                struct fcb_struct *fcbp = list_entry(lnk, struct fcb_struct, lnk);&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                if (fcbp-&gt;cbproc == cbproc) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        list_del(lnk);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        fcblist_write_unlock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        kfree(fcbp);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        return 0;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_write_unlock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        return -ENOENT;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;void file_notify_cleanup(struct file *filep)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        unsigned long flags;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        struct list_head *lnk;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_write_lock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        while ((lnk = list_first(&amp;amp;filep-&gt;f_cblist))) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;                struct fcb_struct *fcbp = list_entry(lnk, struct fcb_struct, lnk);&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                list_del(lnk);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                fcblist_write_unlock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                kfree(fcbp);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                fcblist_write_lock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        fcblist_write_unlock(filep, flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The callbacks will receive a 'long *' whose first element is one of the ION_* events while the nexts could store additional params whose meaning will vary depending on the first one. This interface is a draft and I used it only to verify if the transport method is efficent "enough" to work on. At the current stage notifications has been plugged only inside the socket files by adding :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;****** include/net/sock.h&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;static inline void sk_wake_async(struct sock *sk, int how, int band)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        if (sk-&gt;socket) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                if (sk-&gt;socket-&gt;file) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;                        long event[] = { ion_band_table[band - POLL_IN], poll_band_table[band - POLL_IN], -1 };&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        file_notify_event(sk-&gt;socket-&gt;file, event);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                if (sk-&gt;socket-&gt;fasync_list)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        sock_wake_async(sk-&gt;socket, how, band);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The files  fs/pipe.c  and  include/linux/pipe_fs_i.h  has been also modified to extend /dev/epoll to pipes ( pipe() ).&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The /dev/epoll implementation resides in two new files driver/char/eventpoll.c and the include/linux/eventpoll.h include file.&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The interface of the new /dev/epoll is quite different from the previous one coz it works only by mmapping the device file descriptor while the copy-data-to-user-space has been discarded for efficiency reasons. By avoiding unnecessary copies of data through a common set of shared pages the new /dev/epoll achieves more efficency due 1) less CPU cycles needed to copy the data 2) a lower memory footprint with all the advantages on modern cached memory architectures.&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;The /dev/epoll implementation uses the new file callback notification machanism to register its callbacks that will store events inside the event buffer. The initialization sequence is :&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        if ((kdpfd = open("/dev/epoll", O_RDWR)) == -1) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        if (ioctl(kdpfd, EP_ALLOC, maxfds))&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        {&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        if ((map = (char *) mmap(NULL, EP_MAP_SIZE(maxfds), PROT_READ,&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        MAP_PRIVATE, kdpfd, 0)) == (char *) -1)&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        {&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;where  maxfds  is the maximum number of file descriptors that it's supposed to stock inside the polling device. Files are added to the interest set by :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        struct pollfd pfd;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        pfd.fd = fd;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        pfd.events = POLLIN | POLLOUT | POLLERR | POLLHUP;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        pfd.revents = 0;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        if (write(kdpfd, &amp;amp;pfd, sizeof(pfd)) != sizeof(pfd)) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;and removed with :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        struct pollfd pfd;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        pfd.fd = fd;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        pfd.events = POLLREMOVE;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        pfd.revents = 0;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        if (write(kdpfd, &amp;amp;pfd, sizeof(pfd)) != sizeof(pfd)) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The core dispatching code looks like :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        struct pollfd *pfds;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        struct evpoll evp;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        for (;;) {&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                evp.ep_timeout = STD_SCHED_TIMEOUT;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;                evp.ep_resoff = 0;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                nfds = ioctl(kdpfd, EP_POLL, &amp;amp;evp);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                pfds = (struct pollfd *) (map + evp.ep_resoff);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                for (ii = 0; ii &lt;&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                        ...&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;                }&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Basically the driver allocates two sets of pages that it uses as a double buffer to store files events. The field  ep_resoff  will tell where, inside the map, the result set resides so, while working on one set, the kernel can use the other one to store incoming events. There is no copy to userspace issues, events coming from the same file are collapsed into a single slot and the EP_POLL function will never do a linear scan of the interest set to perform a file-&gt;f_ops-&gt;poll(). To use the /dev/epoll interface You've to mknod such name with major=10 and minor=124 :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;# mknod /dev/epoll c 10 124&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;You can download the patch here :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll-lt-2.4.32-0.23.diff"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll-lt-2.4.32-0.23.diff&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The /dev/poll patch from Provos-Lever&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;There's very few things to say about this, only that a virt_to_page() bug has been fixed to make the patch work. I fixed also a problem the patch has when it tries to resize the hash table by calling kmalloc() for a big chunk of memory that can't be satisfied. Now vmalloc() is used for hash table allocation. I modified a patch for 2.4.3 that I found at the CITI web site and this should be the port to 2.4.x of the original ( 2.2.x ) one used by Provos-Lever. You can download the patch here :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/olddp_last.diff.gz"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;http://www.xmailserver.org/linux-patches/olddp_last.diff.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The RT signals one-sig-per-fd patch&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;This patch coded by Vitaly Luban implement RT signals collapsing and try to avoid SIGIO delivery that happens when the RT signals queue become full. You can download the patch here :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;a href="http://www.luban.org/GPL/gpl.html"&gt;http://www.luban.org/GPL/gpl.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The HTTP server&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The HTTP server is very simple(tm) and is based on event polling + coroutines that make the server quite efficent. The coroutine library implementation used inside the server has been taken from :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.goron.de/~froese/coro/"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;http://www.goron.de/~froese/coro/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;It's very small, simple and fast. The default stack size used by the server is 8192 and this, when trying to charge a lot of connections, may result in memory waste and vm trashing. A stack size of 4096 should be sufficent with this ( empty ) HTTP server implementation. Another issue is about the allocation method used by the coro library that uses mmap() for stack allocation. This, when the rate of accept()/close() become high may result in performance loss. I changed the library ( just one file coro.c ) to use malloc()/free() instead of mmap()/munmap(). Again, it's very simple ( the server ) and always emits the same HTTP response whose size can be programmed by a command line parameter. Other two command line options enable You to set the listening port and the fd set size. You can download the server here :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/ephttpd-0.2.tar.gz"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ephttpd-0.2.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Old version:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/dphttpd_last.tar.gz"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;http://www.xmailserver.org/linux-patches/dphttpd_last.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The deadconn(tm) tool&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;If the server is simple this is even simpler and its purpose is to create "dead" connections to the server to simulate a realistic load where a bunch of slow links are connected. You can download  deadconn  here :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/deadconn_last.c"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;http://www.xmailserver.org/linux-patches/deadconn_last.c&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The test&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The test machine is a PIII 600MHz, 128 Mb RAM, eepro100 network card connected to a 100Mbps fast ethernet switch. The kernel is 2.4.6 over a RH 6.2 and the coroutine library version is 1.1.0-pre2. I used a dual PIII 1GHz, 256 Mb RAM and dual eepro100 as httperf machine, while a dual PIII 900 MHz, 256 Mb RAM and dual eepro100 has been used as deadconn(tm) machine. Since httperf when used with an high number of num-conns goes very quickly to fill the fds space ( modified to 8000 ) I used this command line :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;--think-timeout 5 --timeout 5 --num-calls 2500 --num-conns 100 --hog --rate 100&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;This basically allocates 100 connections that will load the server under different values of dead connections. The other parameter I varied is the response size from 128, 512 and 1024. Another test, that has more respect of the nature of the internet sessions, is to have a burst of connections that are opened, make two HTTP requests and than are closed. This test is implemented with httperf by calling :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;--think-timeout 5 --timeout 5 --num-calls 2 --num-conns 27000 --hog --rate 5000&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Each of these numbers is the average of three runs. You can download  httperf  here :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.hpl.hp.com/personal/David_Mosberger/httperf.html"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;http://www.hpl.hp.com/personal/David_Mosberger/httperf.html&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;img src="webkit-fake-url://1187CAB7-7263-4E02-8DBB-04B156BD24B8/test128.png" alt="test128.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 12px/normal 'Lucida Grande'; "&gt;&lt;span class="Apple-style-span" style="font-family: Courier; font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 12px/normal 'Lucida Grande'; "&gt;&lt;span class="Apple-style-span" style="font-family: Courier; font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The test show that the /dev/epoll is about 10-12% faster than the RT signals one-sig implementation and that either /dev/epoll and both RT signals implementation keeps flat over dead connections load. The RT-one-sig implementation is slight faster than the simple RT signal, but here only a couple of SIGIO occurred during the test.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; text-align: center; font: normal normal normal 12px/normal Times; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font: normal normal normal 12px/normal Helvetica; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;img src="webkit-fake-url://1187CAB7-7263-4E02-8DBB-04B156BD24B8/test512.png" alt="test512.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;img src="webkit-fake-url://1187CAB7-7263-4E02-8DBB-04B156BD24B8/test1024.png" alt="test1024.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Both the 512 and 1024 Content-Length test show that /dev/epoll, RT signals and RT one-sig behave almost is the same way ( the graph overlap ). This is due the ethernet saturation ( 100Mbps ) occurred during these tests.&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;img src="webkit-fake-url://1187CAB7-7263-4E02-8DBB-04B156BD24B8/test-b128.png" alt="test-b128.png" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;This test shows that /dev/epoll, RT signals and RT one-sig implementation had a quite flat behaviour over dead connections load with /dev/epoll about 15% faster than RT one-sig and RT one-sig about 10-15% faster than the simple RT signals.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt;  &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The system call interface ( aka sys_epoll )&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The need of a system call interface to the event retrival device driven the implementation of sys_epoll, that offsers the same level of scalability through a simpler interface for the developer. The new system call interface introduces three new system calls that maps to the corresponding user space calls :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll_create&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(int maxfds);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll_ctl&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(int epfd, int op, int fd, unsigned int events);&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;int &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll_wait&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(int epfd, struct pollfd *events, int maxevents, int timeout);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;These functions are described in their manual pages :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        : &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll.ps"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll.txt"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;TXT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll.4"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MAN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll_create&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; : &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_create.ps"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_create.txt"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;TXT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_create.2"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MAN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/i&gt;&lt;i&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll_ctl&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    : &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_ctl.ps"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_ctl.txt"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;TXT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_ctl.2"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MAN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/i&gt;&lt;i&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll_wait&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   : &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_wait.ps"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_wait.txt"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;TXT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll_wait.2"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MAN&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/i&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Patches that implement the system call interface are available &lt;/span&gt;&lt;/span&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. A library to access the new ( 2.5.45 ) &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; is available here :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/epoll-lib-0.11.tar.gz"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll-lib-0.11.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;A simple pipe-based &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; performace tester :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/pipetest.c"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;pipetest&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font: 12.0px Times"&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'courier new'; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;User space libraries that supports &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.monkey.org/~provos/libevent/"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;libevent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://sf.net/projects/libivykis/"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ivykis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;During the &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;epoll&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; test I quickly made a patch for &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.acme.com/software/thttpd/"&gt;&lt;span style="text-decoration: underline"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;thttpd&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span style="text-decoration: underline"&gt;&lt;a href="http://www.xmailserver.org/linux-patches/thttpd.epoll.diff"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;thttpd.epoll.diff&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px 'Lucida Grande'"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; font: normal normal normal 13px/normal Courier; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;These numbers show that the new /dev/epoll ( and sys_epoll ) improve the efficency of the server from a response rate point of view and from a CPU utilization point of view ( better value of CPU/load factor ). The response rate of the new /dev/epoll in completely independent from the number of connections while the standard poll() and the old /dev/poll seems to suffer the load. The standard deviation is also very low compared to poll() and old /dev/poll and this let me think that 1) there's more power to be extracted 2) the method has a predictable response over high loads. Both the RT signals and RT one-sig implementations behave pretty flat over dead connections load with the one-sig version that is about 10-12% faster than the simple RT signals version. RT singnals implementations ( even if the one-sig less ) seems to suffer the burst test that simulates the real internet load where a huge number of connections are alive. This because of the limit of the RT signals queue that, even with the one-sig patch applied, is going to become full during the test.&lt;/span&gt;&lt;/span&gt;&lt;span style="font: 12.0px Times"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="safari-extension://com.atxx.flarevideo-H79D2DZZNQ/d1cce3c/default/sdw.jpg" style="position: absolute; top: 0px; left: 0px; z-index: -1; display: none; " height="247" width="683" id="sdw" /&gt;&lt;img src="safari-extension://com.atxx.flarevideo-H79D2DZZNQ/d1cce3c/logo.png" style="position: absolute; z-index: 555; display: none; " height="20" id="ATXXLogo" /&gt;&lt;img src="safari-extension://com.atxx.flarevideo-H79D2DZZNQ/d1cce3c/mask3-left.png" class="" id="LeftPulse" style="display: none; z-index: 111; position: absolute; " /&gt;&lt;img src="safari-extension://com.atxx.flarevideo-H79D2DZZNQ/d1cce3c/default/sdw.jpg" style="position: absolute; top: 0px; left: 0px; z-index: -1; display: none; " height="247" width="683" id="sdw" /&gt;&lt;img src="safari-extension://com.atxx.flarevideo-H79D2DZZNQ/d1cce3c/logo.png" style="position: absolute; z-index: 555; display: none; " height="20" id="ATXXLogo" /&gt;&lt;img src="safari-extension://com.atxx.flarevideo-H79D2DZZNQ/d1cce3c/mask3-left.png" class="" id="LeftPulse" style="display: none; z-index: 111; position: absolute; " /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-3249851191911495908?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gj_VvhIsOPvvNf53nVN_OfylCD0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gj_VvhIsOPvvNf53nVN_OfylCD0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gj_VvhIsOPvvNf53nVN_OfylCD0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gj_VvhIsOPvvNf53nVN_OfylCD0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/Vgjl9OXyhR4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/3249851191911495908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/09/improving-network-io-performance.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/3249851191911495908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/3249851191911495908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/Vgjl9OXyhR4/improving-network-io-performance.html" title="Improving (network) I/O performance" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/09/improving-network-io-performance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EDRXs6eSp7ImA9Wx5XEk8.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-5033668327133915093</id><published>2010-09-11T23:54:00.006+07:00</published><updated>2010-09-12T00:21:14.511+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-12T00:21:14.511+07:00</app:edited><title>How to Extract/Uncompress/Unarchive file in linux.</title><content type="html">&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This is a no-frills Linux command line guide/cheat sheet that will help you extract or unarchive or uncompress just about any file that you’re bound to come across. If you’d like to have more options, read the man pages! Also, the opposite to this guide about creating/compressing/archiving files in Linux can be found here.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Preliminary:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Most compressed or archived files that you’ll come across already have built-in support under popular distributions (Ubuntu, Fedora, Suse, etc…), but some of them aren’t. I would recommend installing this group of packages using apt-get, yum, or an equivalent before using this guide (unless of course you already know what you need):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# yum install -y unzip p7zip unrar bzip2 gzip lzma&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;1. *.tar&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# tar xvf filename.tar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;2. *.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# tar xzvf filename.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;3. *.tgz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# tar xvzf filename.tgz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;4. *.tar.bz2 (Or maybe we mean *.tar.gz2)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# tar xjvf filename.tar.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;5. *.tar.bz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# tar xjvf filename.tar.bz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;6. *.tbz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# tar xjvf filename.tbz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;7. *.tar.Z&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# zcat file.tar.Z | tar xvf -&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;8. *.tar.xz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# lzcat filename.tar.xz | tar xvf -&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;9. *.gz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# gunzip filename.gz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;10. *.gz2 (Or maybe we mean *.bz2. It's the same way like untar *.bz2 above)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;11. *.bz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# bunzip filename.bz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;12. *.bz2&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# bunzip2 filename.bz2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;13. *.Z&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# uncompress filenam&lt;/span&gt;e.Z&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;14. *.xz&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# unlzma filename.xz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;15. *.zip&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# unzip filename.zip&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;16. *.7z&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# 7z x filename.7z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;17. *.rar&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# unrar x filename.rar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;18 *.dmg&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This isn’t a file that can be ‘extracted’ but you can mount and save the files using:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# mkdir /mnt/source&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# mount -o loop -t hfs filename.dmg /mnt/source&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# cp /mnt/source/* /home/username/destination/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;19. *.img, *.dd&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;These aren’t files that can be ‘extracted’ but you can mount and save the files using:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# mkdir /mnt/source&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# mount -o loop -t iso9660 filename.img /mnt/source&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;[root@localhost]# cp /mnt/source/* /home/username/destination/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;NOTES: "*" means to your filename which will to unpack. Example "testsource-12.1.0-1.tar.gz".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-5033668327133915093?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/N4gsxeWfevaYnuQcIiFiruv7ozg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N4gsxeWfevaYnuQcIiFiruv7ozg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/N4gsxeWfevaYnuQcIiFiruv7ozg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N4gsxeWfevaYnuQcIiFiruv7ozg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/jA3s9XG2EMo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/5033668327133915093/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/09/how-to-extractuncompressunarchive-file.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/5033668327133915093?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/5033668327133915093?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/jA3s9XG2EMo/how-to-extractuncompressunarchive-file.html" title="How to Extract/Uncompress/Unarchive file in linux." /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/09/how-to-extractuncompressunarchive-file.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIBQ3gzeip7ImA9WxFUGUU.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-6347200285998393232</id><published>2010-07-01T16:02:00.004+07:00</published><updated>2010-07-01T17:35:52.682+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-01T17:35:52.682+07:00</app:edited><title>Centralizing "syslog-ng" to MySQL</title><content type="html">&lt;span class="Apple-style-span"   style="  color: rgb(206, 206, 206); font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;font-size:11px;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="align-justify"   style="  color: rgb(206, 206, 206); text-align: justify; font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;font-size:11px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Synopsis: &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;This documentation assumes that you have installed and have a working version of syslog-ng version 1.5.x and higher.&lt;br /&gt;&lt;br /&gt;This documentation assumes that you have installed and have a working version of mysql database.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;What is syslog-ng?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;Syslog-ng is the world's most flexible and scalable audit trail processing tool for organizations of any size. It provides a centralised, securely stored log of all devices on your network, whatever platform they run on. And syslog-ng also incorporates a host of powerful features, including filtering based on message content, as well as customisable data mining and analysis capabilities. syslog-ng comes as part of the Zorp product line or can be downloaded ((&lt;a href="http://www.balabit.com/downloads/files/syslog-ng/sources/3.1.1/setups/"&gt;click here&lt;/a&gt;)) as a drop-in replacement for stock UNIX system logging software.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;What is mysql&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;MySQL is an open source relational database management system (RDBMS) that uses Structured Query Language (SQL), the most popular language for adding, accessing, and processing data in a database.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Configure syslog-ng to log to mysql database using fifo template:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;destination d_mysql {&lt;br /&gt;pipe("/tmp/mysql.pipe"&lt;br /&gt;template("INSERT INTO logs (host, facility, priority, level, tag, date,&lt;br /&gt;time, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL','$TAG',&lt;br /&gt;'$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;log { source(net); destination(d_mysql); };&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Comment out the following line&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;#source src { unix-dgram("/dev/log"); internal(); };&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Uncomment out the following lines&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;source src { unix-dgram("/etc/log/log"); internal(); };&lt;br /&gt;source net { udp(); };&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Create the fifo pipe for syslog-ng to export out logs&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;mkfifo /tmp/mysql.pipe&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Create syslog database&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;CREATE DATABASE syslog&lt;br /&gt;USE syslog&lt;br /&gt;&lt;br /&gt;CREATE TABLE logs (&lt;br /&gt;host varchar(32) default NULL,&lt;br /&gt;facility varchar(10) default NULL,&lt;br /&gt;priority varchar(10) default NULL,&lt;br /&gt;level varchar(10) default NULL,&lt;br /&gt;tag varchar(10) default NULL,&lt;br /&gt;date date default NULL,&lt;br /&gt;time time default NULL,&lt;br /&gt;program varchar(15) default NULL,&lt;br /&gt;msg text,&lt;br /&gt;seq int(10) unsigned NOT NULL auto_increment,&lt;br /&gt;PRIMARY KEY (seq),&lt;br /&gt;KEY host (host),&lt;br /&gt;KEY seq (seq),&lt;br /&gt;KEY program (program),&lt;br /&gt;KEY time (time),&lt;br /&gt;KEY date (date),&lt;br /&gt;KEY priority (priority),&lt;br /&gt;KEY facility (facility)&lt;br /&gt;) TYPE=MyISAM;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Create the fifo pipe for syslog-ng to export out logs&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;mkfifo /tmp/mysql.pipe&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Restart syslog-ng process&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;Stop syslog-ng&lt;br /&gt;/etc/init.d/syslog-ng stop&lt;br /&gt;&lt;br /&gt;Start syslog-ng&lt;br /&gt;/etc/ini.d/syslog-ng start&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;Pipe Insert scripts&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;# Created by Matthias Buch&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;In the syslog-ng.conf we use:&lt;br /&gt;destination d_oracle {&lt;br /&gt;pipe("/dev/ora.pipe"&lt;br /&gt;template("INSERT INTO logs (LL_HOST, LL_facility, LL_priority, LL_level, LL_tag,&lt;br /&gt;LL_DATE, LL_program, LL_msg) VALUES ( '$HOST', '$FACILILITY', '$PRIORITY',&lt;br /&gt;'$LEVEL', '$TAG',&lt;br /&gt;to_date('$YEAR.$MONTH.$DAY $HOUR:$MIN:$SEC', 'yyyy.mm.dd hh24:mi:ss'),&lt;br /&gt;'$PROGRAM', substr('$MSG',1,511));\n COMMIT;\n") template-escape(yes));&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;import-to-oracle.sh&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;#to write files to the fifo we have a job import-to-oracle.sh&lt;br /&gt;#!/bin/sh&lt;br /&gt;nohup sqlplus username/password@dbname @/dev/ora.pipe &gt;/dev/null &amp;amp;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;cronjob&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;#and to check for running oracle clients&lt;br /&gt;#we have a cronjob running every 5 minutes:&lt;br /&gt;#!/bin/bash&lt;br /&gt;export ORACLE_HOME=/usr/oracle/product/8.1.7&lt;br /&gt;export ORACLE_BASE=/usr/oracle&lt;br /&gt;export PATH=$ORACLE_HOME/bin:$PATH&lt;br /&gt;SQL=`ps ax|grep sqlplus|grep -v grep|wc -l`&lt;br /&gt;if [ $SQL -lt 1 ];then&lt;br /&gt;/opt/bin/import-to-oracle.sh&lt;br /&gt;fi&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;This script is used to pipe syslog-ng to mysql&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;#&lt;br /&gt;# Created by Tadghe Patrick Danu&lt;br /&gt;#&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;if [ -e /tmp/mysql.pipe ]; then&lt;br /&gt;while [ -e /tmp/mysql.pipe ]&lt;br /&gt;do&lt;br /&gt;mysql -u theuserid --password=thepassword syslogdb &lt; /tmp/mysql.pipe done else mkfifo /tmp/mysql.pipe fi &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;This script is used to pipe syslog-ng to postgreSQL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;# Created by Ben Russo&lt;br /&gt;#!/bin/bash&lt;br /&gt;# run-syslog2pgsql-insert.sh&lt;br /&gt;# 23-April-2002 by Ben Russo&lt;br /&gt;# This script makes sure that the syslogs get&lt;br /&gt;# into the database.&lt;br /&gt;# It is designed to be started by CRON periodically.&lt;br /&gt;# I would run it every minute, or at least every&lt;br /&gt;# every few minutes.&lt;br /&gt;DATADIR="/spooldir/syslog2pgsql"&lt;br /&gt;WORKDIR="/var/lib/pgsql/syslog"&lt;br /&gt;LOGFILE="$WORKDIR/syslog2pgsql-insert.log"&lt;br /&gt;TZ=UCT&lt;br /&gt;export DATADIR WORKDIR TZ&lt;br /&gt;# Here we are going to make sure there isn't&lt;br /&gt;# already an instance of run-syslog2pgsql-insert.sh&lt;br /&gt;# that is running.&lt;br /&gt;if [ -f $WORKDIR/.syslog2pgsql-insert.pid ]&lt;br /&gt;then&lt;br /&gt;OLDPID=`cat $WORKDIR/.syslog2pgsql-insert.pid'&lt;br /&gt;NUMPROCS=`ps -e | grep $OLDPID | grep run-syslog2 | wc -l`&lt;br /&gt;if [ $NUMPROCS -gt 0 ]&lt;br /&gt;then&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;#&lt;br /&gt;# If this script has run this far then there should&lt;br /&gt;# not be another instance of run-syslog2pgsql-insert.sh&lt;br /&gt;# running, therefore let's make a PID file and do it.&lt;br /&gt;echo $$ &gt; $WORKDIR/.syslog2pgsql-insert.pid&lt;br /&gt;#&lt;br /&gt;# Now start an endless loop that looks for control files.&lt;br /&gt;#&lt;br /&gt;while true&lt;br /&gt;do&lt;br /&gt;DATE=`date`&lt;br /&gt;if [ -f $WORKDIR/.insert-die ]&lt;br /&gt;then&lt;br /&gt;echo "=die===== $DATE $WORKDIR/.insert-die file found, exiting." &gt;&gt; $LOGFILE&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;if [ -f $WORKDIR/.insert-restart ]&lt;br /&gt;then&lt;br /&gt;echo "=restart= $DATE $WORKDIR/.insert-restart file found, exiting." &gt;&gt; $LOGFILE&lt;br /&gt;echo "=restart= $DATE Deleteing .insert-restart file." &gt;&gt; $LOGFILE&lt;br /&gt;echo "=restart= $DATE Expecting cron to restart this script." &gt;&gt; $LOGFILE&lt;br /&gt;fi&lt;br /&gt;if [ -f $WORKDIR/.insert-pause ]&lt;br /&gt;then&lt;br /&gt;echo "=pause=== $DATE $WORKDIR/.insert pause file found." &gt;&gt; $LOGFILE&lt;br /&gt;echo "=pause=== $DATE sleeping 3 secs." &gt;&gt; $LOGFILE&lt;br /&gt;sleep 3&lt;br /&gt;else&lt;br /&gt;FILELIST=`find $DATADIR -name&lt;br /&gt;"fulllog.2[0-9][0-9][0-9].[0-1][0-9].[0-3][0-9].[0-2][0-9].[0-5][0-9].[0-6][0-9]"`&lt;br /&gt;usleep 999997&lt;br /&gt;&lt;br /&gt;for i in $FILELIST&lt;br /&gt;do&lt;br /&gt;cat $i | psql -U postgres -d syslog-ng &gt;&gt; $LOGFILE 2&gt;&amp;amp;1&lt;br /&gt;DATE=`date`&lt;br /&gt;echo "========= $DATE finished $i" &gt;&gt; $LOGFILE&lt;br /&gt;rm -f $i&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;done&lt;br /&gt;#&lt;br /&gt;# END OF THE SCRIPT&lt;br /&gt;#&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;This file is the functions" file distributed with Mandrake systems&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="instruction" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(153, 153, 153); border-right-color: rgb(153, 153, 153); border-bottom-color: rgb(153, 153, 153); border-left-color: rgb(153, 153, 153); "&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;br /&gt;# -*-Shell-script-*-&lt;br /&gt;#&lt;br /&gt;# functions This file contains functions to be used by most or all&lt;br /&gt;#  shell scripts in the /etc/init.d directory.&lt;br /&gt;#&lt;br /&gt;TEXTDOMAIN=initscripts&lt;br /&gt;TEXTDOMAINDIR=/etc/locale&lt;br /&gt;LOCPATH=/etc/locale&lt;br /&gt;export TEXTDOMAINDIR LOCPATH&lt;br /&gt;&lt;br /&gt;# Make sure umask is sane&lt;br /&gt;umask 022&lt;br /&gt;&lt;br /&gt;# Set up a default search path.&lt;br /&gt;PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"&lt;br /&gt;export PATH&lt;br /&gt;&lt;br /&gt;[ -z "${CONSOLETYPE:-}" ] &amp;amp;&amp;amp; CONSOLETYPE="`/sbin/consoletype`"&lt;br /&gt;&lt;br /&gt;# Get a sane screen width&lt;br /&gt;[ -z "${COLUMNS:-}" ] &amp;amp;&amp;amp; COLUMNS=80&lt;br /&gt;&lt;br /&gt;if [ -f /etc/sysconfig/i18n -a -z "$NOLOCALE" ]; then&lt;br /&gt;. /etc/sysconfig/i18n&lt;br /&gt;if [ "$CONSOLETYPE" != "pty" ]; then&lt;br /&gt;[ "$CONSOLE_NOT_LOCALIZED" = "yes" ] &amp;amp;&amp;amp; GP_LANG=C&lt;br /&gt;[ "$CONSOLE_NOT_LOCALIZED" = "yes" ] &amp;amp;&amp;amp; GP_LANGUAGE=C&lt;br /&gt;fi&lt;br /&gt;if [ -z "$GP_LANG" ]; then&lt;br /&gt;[ -n "$LC_CTYPE" ] &amp;amp;&amp;amp; GP_LANG=$LC_CTYPE || GP_LANG=$LC_MESSAGES&lt;br /&gt;fi&lt;br /&gt;if [ -z "$GP_LANGUAGE" ]; then&lt;br /&gt;[ -n "$LANGUAGE" ] &amp;amp;&amp;amp; GP_LANGUAGE=$LANGUAGE || GP_LANGUAGE=$GP_LANG&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Read in our configuration&lt;br /&gt;if [ -z "${BOOTUP:-}" ]; then&lt;br /&gt;if [ -f /etc/sysconfig/init ]; then&lt;br /&gt;. /etc/sysconfig/init&lt;br /&gt;else&lt;br /&gt;# This all seem confusing? Look in /etc/sysconfig/init,&lt;br /&gt;# or in /usr/share/doc/initscripts-*/sysconfig.txt&lt;br /&gt;BOOTUP=color&lt;br /&gt;RES_COL=60&lt;br /&gt;MOVE_TO_COL="echo -en \\033[${RES_COL}G"&lt;br /&gt;SETCOLOR_SUCCESS="echo -en \\033[1;32m"&lt;br /&gt;SETCOLOR_FAILURE="echo -en \\033[1;31m"&lt;br /&gt;SETCOLOR_WARNING="echo -en \\033[1;33m"&lt;br /&gt;SETCOLOR_NORMAL="echo -en \\033[0;39m"&lt;br /&gt;LOGLEVEL=1&lt;br /&gt;fi&lt;br /&gt;if [ "$CONSOLETYPE" = "serial" ]; then&lt;br /&gt;BOOTUP=serial&lt;br /&gt;MOVE_TO_COL=&lt;br /&gt;SETCOLOR_SUCCESS=&lt;br /&gt;SETCOLOR_FAILURE=&lt;br /&gt;SETCOLOR_WARNING=&lt;br /&gt;SETCOLOR_NORMAL=&lt;br /&gt;fi&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ "${BOOTUP:-}" != "verbose" ]; then&lt;br /&gt;INITLOG_ARGS="-q"&lt;br /&gt;else&lt;br /&gt;INITLOG_ARGS=&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;gprintf() {&lt;br /&gt;if [ -x /bin/gettext -a -n "$1" ]; then&lt;br /&gt;if [ -n "$GP_LANG" ]; then&lt;br /&gt;local TEXT=`LC_ALL=$GP_LANG LANGUAGE=$GP_LANGUAGE gettext -e --domain=$TEXTDOMAIN "$1"`&lt;br /&gt;else&lt;br /&gt;local TEXT=`gettext -e --domain=$TEXTDOMAIN "$1"`&lt;br /&gt;fi&lt;br /&gt;else&lt;br /&gt;local TEXT=$1&lt;br /&gt;fi&lt;br /&gt;[ "${1#*\\n}" ] || TEXT="$TEXT\n"&lt;br /&gt;&lt;br /&gt;shift&lt;br /&gt;printf "$TEXT" "$@"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Frontend to gprintf (support up to 4 %s in format string)&lt;br /&gt;# returns the message transleted in GPRINTF_MSG and&lt;br /&gt;# the resting parms in GPRINTF_REST&lt;br /&gt;# This simplifies a lot the call of functions like action,&lt;br /&gt;# now with i18n support&lt;br /&gt;gprintf_msg_rest() {&lt;br /&gt;case "$1" in&lt;br /&gt;*%s*%s*%s*%s*)&lt;br /&gt;GPRINTF_MSG=$(gprintf "$1" "$2" "$3" "$4" "$5")&lt;br /&gt;shift 5;;&lt;br /&gt;*%s*%s*%s*)&lt;br /&gt;GPRINTF_MSG=$(gprintf "$1" "$2" "$3" "$4")&lt;br /&gt;shift 4;;&lt;br /&gt;*%s*%s*)&lt;br /&gt;GPRINTF_MSG=$(gprintf "$1" "$2" "$3")&lt;br /&gt;shift 3;;&lt;br /&gt;*%s*)&lt;br /&gt;GPRINTF_MSG=$(gprintf "$1" "$2")&lt;br /&gt;shift 2;;&lt;br /&gt;*)&lt;br /&gt;GPRINTF_MSG=$(gprintf "$1")&lt;br /&gt;shift;;&lt;br /&gt;esac&lt;br /&gt;GPRINTF_REST="$@"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Check if $pid (could be plural) are running with&lt;br /&gt;# the same root as this script&lt;br /&gt;inmyroot() {&lt;br /&gt;local i r&lt;br /&gt;&lt;br /&gt;for i in $* ; do&lt;br /&gt;[ "/proc/$i/root" -ef "/proc/$$/root" ] &amp;amp;&amp;amp; r="$r $i"&lt;br /&gt;done&lt;br /&gt;echo "$r"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Check if $pid (could be plural) are running&lt;br /&gt;checkpid() {&lt;br /&gt;local i&lt;br /&gt;&lt;br /&gt;for i in $* ; do&lt;br /&gt;[ -d "/proc/$i" ] &amp;amp;&amp;amp; return 0&lt;br /&gt;done&lt;br /&gt;return 1&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# A function to start a program.&lt;br /&gt;daemon() {&lt;br /&gt;# Test syntax.&lt;br /&gt;local gotbase= force=&lt;br /&gt;local base= user= nice= bg= pid=&lt;br /&gt;nicelevel=0&lt;br /&gt;while [ "$1" != "${1##[-+]}" ]; do&lt;br /&gt;case $1 in&lt;br /&gt;'') gprintf "%s: Usage: daemon [+/-nicelevel] {program}\n" $0&lt;br /&gt;return 1;;&lt;br /&gt;--check)&lt;br /&gt;base=$2&lt;br /&gt;gotbase="yes"&lt;br /&gt;shift 2&lt;br /&gt;;;&lt;br /&gt;--check=?*)&lt;br /&gt;base=${1#--check=}&lt;br /&gt;gotbase="yes"&lt;br /&gt;shift&lt;br /&gt;;;&lt;br /&gt;--user)&lt;br /&gt;user=$2&lt;br /&gt;shift 2&lt;br /&gt;;;&lt;br /&gt;--user=?*)&lt;br /&gt;user=${1#--user=}&lt;br /&gt;shift&lt;br /&gt;;;&lt;br /&gt;--force)&lt;br /&gt;force="force"&lt;br /&gt;shift&lt;br /&gt;;;&lt;br /&gt;[-+][0-9]*)&lt;br /&gt;nice="nice -n $1"&lt;br /&gt;shift&lt;br /&gt;;;&lt;br /&gt;*) gprintf "%s: Usage: daemon [+/-nicelevel] {program}\n" $0&lt;br /&gt;return 1;;&lt;br /&gt;esac&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;# Save basename.&lt;br /&gt;[ -z "$gotbase" ] &amp;amp;&amp;amp; base=${1##*/}&lt;br /&gt;&lt;br /&gt;# See if it's already running. Look *only* at the pid file.&lt;br /&gt;if [ -f /var/run/${base}.pid ]; then&lt;br /&gt;local line p&lt;br /&gt;read line &lt; /var/run/${base}.pid for p in $line ; do [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] &amp;amp;&amp;amp; pid="$pid $p" done fi  [ -n "${pid:-}" -a -z "${force:-}" ] &amp;amp;&amp;amp; return  # make sure it doesn't core dump anywhere; while this could mask # problems with the daemon, it also closes some security problems ulimit -S -c 0 &gt;/dev/null 2&gt;&amp;amp;1&lt;br /&gt;&lt;br /&gt;# if they set NICELEVEL in /etc/sysconfig/foo, honor it&lt;br /&gt;[ -n "$NICELEVEL" ] &amp;amp;&amp;amp; nice="nice -n $NICELEVEL"&lt;br /&gt;&lt;br /&gt;# Echo daemon&lt;br /&gt;[ "${BOOTUP:-}" = "verbose" -a -z "$LSB" ] &amp;amp;&amp;amp; echo -n " $base"&lt;br /&gt;&lt;br /&gt;# libsafe support&lt;br /&gt;if [ -r /etc/sysconfig/system ] &amp;amp;&amp;amp; grep -q '^LIBSAFE=yes$' /etc/sysconfig/system &amp;amp;&amp;amp; [ -r /lib/libsafe.so.2 ]; then&lt;br /&gt;LD_PRELOAD=/lib/libsafe.so.2&lt;br /&gt;export LD_PRELOAD&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# And start it up.&lt;br /&gt;if [ -z "$user" ]; then&lt;br /&gt;$nice initlog $INITLOG_ARGS -c "$*"&lt;br /&gt;else&lt;br /&gt;$nice initlog $INITLOG_ARGS -c "su -s /bin/bash - $user -c \"$*\""&lt;br /&gt;fi&lt;br /&gt;rc=$?&lt;br /&gt;[ $rc = 0 ] &amp;amp;&amp;amp; success "%s startup" $base || failure "%s startup" $base&lt;br /&gt;unset LD_PRELOAD&lt;br /&gt;return $rc&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# A function to stop a program.&lt;br /&gt;killproc() {&lt;br /&gt;RC=0&lt;br /&gt;# Test syntax.&lt;br /&gt;if [ "$#" -eq 0 ]; then&lt;br /&gt;gprintf "Usage: killproc {program} [signal]\n"&lt;br /&gt;return 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;notset=0&lt;br /&gt;# check for second arg to be kill level&lt;br /&gt;if [ -n "$2" ]; then&lt;br /&gt;killlevel=$2&lt;br /&gt;else&lt;br /&gt;notset=1&lt;br /&gt;killlevel="-9"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Save basename.&lt;br /&gt;base=${1##*/}&lt;br /&gt;&lt;br /&gt;# Find pid.&lt;br /&gt;pid=&lt;br /&gt;if [ -f /var/run/${base}.pid ]; then&lt;br /&gt;  local line p&lt;br /&gt;  read line &lt; /var/run/${base}.pid&lt;br /&gt;  for p in $line ; do&lt;br /&gt;   [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] &amp;amp;&amp;amp; pid="$pid $p"&lt;br /&gt;   done&lt;br /&gt;fi&lt;br /&gt;if [ -z "$pid" ]; then&lt;br /&gt;  pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \&lt;br /&gt;  pidof -o $$ -o $PPID -o %PPID -x $base`&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt; # Avoid killing processes not running in the same root&lt;br /&gt;[ -n "$pid" ] &amp;amp;&amp;amp; pid="`inmyroot $pid`" &lt;br /&gt;&lt;br /&gt;# Kill it.&lt;br /&gt;if [ -n "${pid:-}" ] ; then&lt;br /&gt;  [ "$BOOTUP" = "verbose" -a -z "$LSB" ] &amp;amp;&amp;amp; echo -n "$base"&lt;br /&gt;   if [ "$notset" -eq "1" ] ; then&lt;br /&gt;      if checkpid $pid 2&gt;&amp;1; then&lt;br /&gt;# TERM first, then KILL if not dead&lt;br /&gt;        kill -TERM $pid&lt;br /&gt;        usleep 100000&lt;br /&gt;      if checkpid $pid &amp;amp;&amp;amp; sleep 1 &amp;amp;&amp;amp;&lt;br /&gt;        checkpid $pid &amp;amp;&amp;amp; sleep 3 &amp;amp;&amp;amp;&lt;br /&gt;        checkpid $pid ; then&lt;br /&gt;        kill -KILL $pid&lt;br /&gt;        usleep 100000&lt;br /&gt;      fi&lt;br /&gt;      fi&lt;br /&gt;   checkpid $pid&lt;br /&gt;   RC=$?&lt;br /&gt;   [ "$RC" -eq 0 ] &amp;amp;&amp;amp; failure "%s shutdown" $base || success "%s shutdown" $base&lt;br /&gt;   RC=$((! $RC))&lt;br /&gt;# use specified level only&lt;br /&gt;   else&lt;br /&gt;      if checkpid $pid; then&lt;br /&gt;        kill $killlevel $pid&lt;br /&gt;        RC=$?&lt;br /&gt;        [ "$RC" -eq 0 ] &amp;amp;&amp;amp; success "%s %s" $base $killlevel || failure "%s %s" $base $killlevel&lt;br /&gt;      fi&lt;br /&gt;   fi&lt;br /&gt;else&lt;br /&gt;failure "%s shutdown" $base&lt;br /&gt;RC=1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Remove pid file if any.&lt;br /&gt;if [ "$notset" = "1" ]; then&lt;br /&gt;  rm -f /var/run/$base.pid&lt;br /&gt;fi&lt;br /&gt;return $RC&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# A function to find the pid of a program. Looks *only* at the pidfile&lt;br /&gt;pidfileofproc() {&lt;br /&gt;local base=${1##*/}&lt;br /&gt;&lt;br /&gt;# Test syntax.&lt;br /&gt;if [ "$#" -eq 0 ] ; then&lt;br /&gt;  gprintf "Usage: pidfileofproc {program}\n"&lt;br /&gt;  return 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# First try "/var/run/*.pid" files&lt;br /&gt;if [ -f /var/run/$base.pid ] ; then&lt;br /&gt;  local line p pid=&lt;br /&gt;  read line &lt; /var/run/$base.pid&lt;br /&gt;  for p in $line ; do&lt;br /&gt;  [ -z "${p//[0-9]/}" -a -d /proc/$p ] &amp;amp;&amp;amp; pid="$pid $p"&lt;br /&gt;  done&lt;br /&gt;    if [ -n "$pid" ]; then&lt;br /&gt;     echo $pid return 0&lt;br /&gt;    fi&lt;br /&gt;fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# A function to find the pid of a program.&lt;br /&gt;pidofproc() {&lt;br /&gt;base=${1##*/} &lt;br /&gt;# Test syntax.&lt;br /&gt;if [ "$#" -eq 0 ] ; then&lt;br /&gt;  gprintf "Usage: pidofproc {program}\n"&lt;br /&gt;  return 1&lt;br /&gt;fi&lt;br /&gt;# First try "/var/run/*.pid" files&lt;br /&gt;if [ -f /var/run/$base.pid ]; then&lt;br /&gt;  local line p pid= read line &lt; /var/run/$base.pid&lt;br /&gt;  for p in $line ; do&lt;br /&gt;  [ -z "${p//[0-9]/}" -a -d /proc/$p ] &amp;amp;&amp;amp; pid="$pid $p"&lt;br /&gt;  done&lt;br /&gt;    if [ -n "$pid" ]; then&lt;br /&gt;     echo $pid return 0&lt;br /&gt;   fi&lt;br /&gt;fi&lt;br /&gt;pidof -o $$ -o $PPID -o %PPID -x $1 || \&lt;br /&gt;pidof -o $$ -o $PPID -o %PPID -x $base&lt;br /&gt;}&lt;br /&gt;status() {&lt;br /&gt;local base=${1##*/}&lt;br /&gt;local pid &lt;br /&gt;&lt;br /&gt;# Test syntax.&lt;br /&gt;if [ "$#" -eq 0 ] ; then&lt;br /&gt;  gprintf "Usage: status {program}\n"&lt;br /&gt;  return 1&lt;br /&gt;fi &lt;br /&gt;&lt;br /&gt;# First try "pidof"&lt;br /&gt;pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \&lt;br /&gt;pidof -o $$ -o $PPID -o %PPID -x ${base}`&lt;br /&gt;if [ -n "$pid" ] ; then&lt;br /&gt;  gprintf "%s (pid %s) is running...\n" ${base} $pid&lt;br /&gt;  return 0&lt;br /&gt;fi &lt;br /&gt;&lt;br /&gt;# Next try "/var/run/*.pid" files&lt;br /&gt;if [ -f /var/run/${base}.pid ] ; then&lt;br /&gt;  read pid &lt; /var/run/${base}.pid&lt;br /&gt;    if [ -n "$pid" ] ; then&lt;br /&gt;      gprintf "%s dead but pid file exists\n" ${base}&lt;br /&gt;      return 1&lt;br /&gt;    fi&lt;br /&gt;fi&lt;br /&gt;# See if /var/lock/subsys/${base} exists&lt;br /&gt;if [ -f /var/lock/subsys/${base} ]; then&lt;br /&gt;  gprintf "%s dead but subsys locked\n" ${base}&lt;br /&gt;  return 2&lt;br /&gt;fi&lt;br /&gt;  gprintf "%s is stopped\n" ${base}&lt;br /&gt;  return 3&lt;br /&gt;}&lt;br /&gt;echo_success() {&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $MOVE_TO_COL&lt;br /&gt;echo -n "["&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_SUCCESS&lt;br /&gt;gprintf " OK "&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_NORMAL&lt;br /&gt;echo -n "]" echo -ne "\r" return 0 }  echo_failure() { [ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $MOVE_TO_COL echo -n "["&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_FAILURE&lt;br /&gt;gprintf "FAILED" [ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_NORMAL&lt;br /&gt;echo -n "]"&lt;br /&gt;echo -ne "\r"&lt;br /&gt;return 1&lt;br /&gt;} &lt;br /&gt;echo_passed() {&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $MOVE_TO_COL&lt;br /&gt;echo -n "[" [ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_WARNING&lt;br /&gt;gprintf "PASSED" [ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_NORMAL&lt;br /&gt;echo -n "]"&lt;br /&gt;echo -ne "\r"&lt;br /&gt;return 1&lt;br /&gt;} &lt;br /&gt;echo_warning() {&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $MOVE_TO_COL&lt;br /&gt;echo -n "["&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_WARNING&lt;br /&gt;gprintf "WARNING"&lt;br /&gt;[ "$BOOTUP" = "color" ] &amp;amp;&amp;amp; $SETCOLOR_NORMAL&lt;br /&gt;echo -n "]"&lt;br /&gt;echo -ne "\r"&lt;br /&gt;return 1 } &lt;br /&gt;# Log that something succeeded&lt;br /&gt;success() {&lt;br /&gt;gprintf_msg_rest "$@"&lt;br /&gt;if [ -z "$IN_INITLOG" ]; then&lt;br /&gt;  initlog $INITLOG_ARGS -n $0 -s "$GPRINTF_MSG" -e 1&lt;br /&gt;else&lt;br /&gt;# silly hack to avoid EPIPE killing rc.sysinit&lt;br /&gt;trap "" SIGPIPE&lt;br /&gt;echo "$INITLOG_ARGS -n $0 -s \"$GPRINTF_MSG\" -e 1" &gt;&amp;amp;21&lt;br /&gt;trap - SIGPIPE&lt;br /&gt;fi&lt;br /&gt;[ "$BOOTUP" != "verbose" -a -z "$LSB" ] &amp;amp;&amp;amp; echo_success&lt;br /&gt;return 0&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Log that something failed&lt;br /&gt;failure() {&lt;br /&gt;rc=$?&lt;br /&gt;gprintf_msg_rest "$@"&lt;br /&gt;if [ -z "$IN_INITLOG" ]; then&lt;br /&gt;  initlog $INITLOG_ARGS -n $0 -s "$GPRINTF_MSG" -e 2&lt;br /&gt;  else&lt;br /&gt;  trap "" SIGPIPE&lt;br /&gt;  echo "$INITLOG_ARGS -n $0 -s \"$GPRINTF_MSG\" -e 2" &gt;&amp;amp;21&lt;br /&gt;  trap - SIGPIPE&lt;br /&gt;fi&lt;br /&gt;[ "$BOOTUP" != "verbose" -a -z "$LSB" ] &amp;amp;&amp;amp; echo_failure&lt;br /&gt;return $rc&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Log that something passed, but may have had errors. Useful for fsck&lt;br /&gt;passed() {&lt;br /&gt;rc=$?&lt;br /&gt;gprintf_msg_rest "$@"&lt;br /&gt;if [ -z "$IN_INITLOG" ]; then&lt;br /&gt; initlog $INITLOG_ARGS -n $0 -s "$GPRINTF_MSG" -e 1&lt;br /&gt;else&lt;br /&gt; trap "" SIGPIPE&lt;br /&gt; echo "$INITLOG_ARGS -n $0 -s \"$GPRINTF_MSG\" -e 1" &gt;&amp;amp;21&lt;br /&gt; trap - SIGPIPE&lt;br /&gt;fi&lt;br /&gt;[ "$BOOTUP" != "verbose" ] &amp;amp;&amp;amp; echo_passed&lt;br /&gt;return $rc&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Run some action. Log its output.&lt;br /&gt;action() {&lt;br /&gt;gprintf_msg_rest "$@"&lt;br /&gt;echo -n "$GPRINTF_MSG "&lt;br /&gt;&lt;br /&gt;# libsafe support&lt;br /&gt;if [ -r /etc/sysconfig/system ] &amp;amp;&amp;amp; grep -q '^LIBSAFE=yes$' /etc/sysconfig/system &amp;amp;&amp;amp; [ -r /lib/libsafe.so.2 ]; then&lt;br /&gt;  LD_PRELOAD=/lib/libsafe.so.2&lt;br /&gt;  export LD_PRELOAD&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;initlog $INITLOG_ARGS -c "$GPRINTF_REST" &amp;amp;&amp;amp; success "$GPRINTF_MSG" || failure "$GPRINTF_MSG"&lt;br /&gt;rc=$?&lt;br /&gt;echo&lt;br /&gt;unset LD_PRELOAD&lt;br /&gt;return $rc&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# returns OK if $1 contains $2&lt;br /&gt;strstr() {&lt;br /&gt;#case "$1" in&lt;br /&gt;# *${2}*) return 0 ;;&lt;br /&gt;#esac&lt;br /&gt;#return 1&lt;br /&gt;[ "$1" = "$2" ] &amp;amp;&amp;amp; return 0&lt;br /&gt;slice=${1#*$2*}&lt;br /&gt;[ "$slice" = "$1" ] &amp;amp;&amp;amp; return 1&lt;br /&gt;return 0&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Confirm whether we really want to run this service&lt;br /&gt;confirm() {&lt;br /&gt;gprintf "Start service %s (Y)es/(N)o/(C)ontinue? [Y] \n" $1&lt;br /&gt;local YES=`gprintf "yY"`&lt;br /&gt;local NOT=`gprintf "nN"`&lt;br /&gt;local CNT=`gprintf "cC"`&lt;br /&gt;read answer&lt;br /&gt;&lt;br /&gt;if strstr "$YES" "$answer" || [ "$answer" = "" ] ; then&lt;br /&gt; return 0&lt;br /&gt;elif strstr "$CNT" "$answer" ; then&lt;br /&gt; return 2&lt;br /&gt;elif strstr "$NOT" "$answer" ; then&lt;br /&gt; return 1&lt;br /&gt;fi&lt;br /&gt;confirm $*&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;initsplash() {&lt;br /&gt;[[ -f /etc/sysconfig/bootsplash ]] &amp;amp;&amp;amp; source /etc/sysconfig/bootsplash&lt;br /&gt;[[ -n $SPLASH ]] &amp;amp;&amp;amp; splash_rc=$SPLASH&lt;br /&gt;[[ -n $THEME ]] &amp;amp;&amp;amp; theme=$THEME&lt;br /&gt;[[ -x /sbin/splash.sh ]] || splash_rc=no&lt;br /&gt;if [[ -e /proc/splash ]]; then&lt;br /&gt; grep -q off /proc/splash &amp;amp;&amp;amp; splash_rc=no&lt;br /&gt;else&lt;br /&gt; splash_rc=no&lt;br /&gt;fi&lt;br /&gt; splash_cfg=/etc/bootsplash/&lt;br /&gt;&lt;br /&gt; [[ $splash_rc != "no" &amp;amp;&amp;amp; $splash_rc != "No" &amp;amp;&amp;amp; $splash_rc != "NO" ]] &amp;amp;&amp;amp; export splash_rc=yes&lt;br /&gt; [[ -d $splash_cfg/themes ]] || splash_rc=&lt;br /&gt;  if [[ $splash_rc = "yes" &amp;amp;&amp;amp; -n $theme ]];then&lt;br /&gt;   [[ ! -d $splash_cfg/themes/$theme ]] &amp;amp;&amp;amp; theme=Mandrake&lt;br /&gt;   function box() { true; } # ignore box descriptions in the config file&lt;br /&gt;   tmpval=$LOGO_CONSOLE&lt;br /&gt;     if [ -f /etc/bootsplash/themes/$theme/config/bootsplash-`fbresolution`.cfg ]; then&lt;br /&gt;       . /etc/bootsplash/themes/$theme/config/bootsplash-`fbresolution`.cfg&lt;br /&gt;     fi&lt;br /&gt;&lt;br /&gt;       if [[ $tmpval != "theme" ]];then&lt;br /&gt;         LOGO_CONSOLE=$tmpval&lt;br /&gt;       fi&lt;br /&gt;     fi&lt;br /&gt;if [[ -z "$1" ]]; then&lt;br /&gt;  set `/sbin/runlevel`&lt;br /&gt;  runlevel=$2&lt;br /&gt;  previous=$1&lt;br /&gt;else&lt;br /&gt;  runlevel=5&lt;br /&gt;  previous=N&lt;br /&gt;fi&lt;br /&gt;nbservices=0&lt;br /&gt;#&lt;br /&gt;# for small dir, it is faster than echo /etc/rc$runlevel.d/* | wc -w&lt;br /&gt;#&lt;br /&gt;for i in /etc/rc$runlevel.d/*&lt;br /&gt;do&lt;br /&gt;a=$[nbservices++]&lt;br /&gt;done&lt;br /&gt;for i in /etc/rc$runlevel.d/*.rpm*&lt;br /&gt;do&lt;br /&gt;a=$[nbservices--]&lt;br /&gt;done&lt;br /&gt;a=$[nbservices++]&lt;br /&gt;# this is the number of step in rc.sysinit, could be ajusted&lt;br /&gt;[[ "$previous" = "N" ]] &amp;amp;&amp;amp; nbservices=$(($nbservices+7)) &amp;amp;&amp;amp; progress=6&lt;br /&gt;export nbservices res progress text_x text_y text_color text_size splash_rc LOGO_CONSOLE&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;rc_splash() {&lt;br /&gt;[[ "$splash_rc" = "yes" ]] || return&lt;br /&gt;if [[ -n "$2" ]]; then&lt;br /&gt;progress=$2&lt;br /&gt;else&lt;br /&gt;a=$[progress++]&lt;br /&gt;fi&lt;br /&gt;LANGUAGE=$LANGUAGE /sbin/splash.sh "$1"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# sqlsyslogd This is a daemon that takes syslog-ng input and pipe it into&lt;br /&gt;# a MySQL database.&lt;br /&gt;#&lt;br /&gt;# chkconfig: 2345 92 10&lt;br /&gt;# description: sqlsyslogd bridges syslog-ng and mysql.&lt;br /&gt;# author: Josh Kuo Thu 2004/08/12 13:21:56 PDT&lt;br /&gt;&lt;br /&gt;. /etc/rc.d/init.d/functions&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;start)&lt;br /&gt;if [ -x /tmp/mysql.pipe ]; then&lt;br /&gt;mkfifo /tmp/mysql.pipe&lt;br /&gt;else&lt;br /&gt;# if the service is already running, do not start another one&lt;br /&gt;PIDS=`pidofproc mysql`&lt;br /&gt;if [ "$PIDS" ]; then&lt;br /&gt;gprintf "sqlsyslogd is already running.\n"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;mysql -u DBUSERNAME --password=PASSWORD DBNAME &lt; /tmp/mysql.pipe &amp;amp; fi ;; stop ) killproc mysql ;;  *) gprintf "Usage: sqlsyslogd {start|stop}\n" exit 1; esac exit 0;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-6347200285998393232?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MdZrsUxc1696Odqjz5e8bziGSt0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MdZrsUxc1696Odqjz5e8bziGSt0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MdZrsUxc1696Odqjz5e8bziGSt0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MdZrsUxc1696Odqjz5e8bziGSt0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/UHHL0Lpvbcc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/6347200285998393232/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/07/centralizing-syslog-ng-to-mysql.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/6347200285998393232?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/6347200285998393232?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/UHHL0Lpvbcc/centralizing-syslog-ng-to-mysql.html" title="Centralizing &quot;syslog-ng&quot; to MySQL" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/07/centralizing-syslog-ng-to-mysql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQHRHg4fCp7ImA9WxFXFUw.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-4157976930764016856</id><published>2010-05-22T15:17:00.003+07:00</published><updated>2010-05-22T15:35:35.634+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-22T15:35:35.634+07:00</app:edited><title>Example script for mobile HSDPA with "wvdialconf"</title><content type="html">This is an example for mobile HSDPA modem which use USB connection.&lt;div&gt;In this configuration, i use IndosatM2 as internet provider. And it used as a APN name. And will dial to *99# according to indosatm2 configuration.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;####################################&lt;/div&gt;&lt;div&gt;&lt;div&gt;[Dialer Defaults]&lt;/div&gt;&lt;div&gt;Init1 = ATZ&lt;/div&gt;&lt;div&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;amp;C1 &amp;amp;D2 +FCLASS=0&lt;/div&gt;&lt;div&gt;Ask Password = 1&lt;/div&gt;&lt;div&gt;Phone = *99#&lt;/div&gt;&lt;div&gt;APN = indosatm2&lt;/div&gt;&lt;div&gt;Idle Seconds = 300&lt;/div&gt;&lt;div&gt;Modem Type = Analog Modem&lt;/div&gt;&lt;div&gt;Stupid Mode = 1&lt;/div&gt;&lt;div&gt;Compuserve = 0&lt;/div&gt;&lt;div&gt;Baud = 9600&lt;/div&gt;&lt;div&gt;Auto DNS = 1&lt;/div&gt;&lt;div&gt;Dial Command = ATDT&lt;/div&gt;&lt;div&gt;modem = /dev/ttyUSB0&lt;/div&gt;&lt;div&gt;ISDN = 0&lt;/div&gt;&lt;div&gt;Username = &lt;i&gt;type your username here&lt;/i&gt;&lt;/div&gt;&lt;div&gt;#####################################&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And you'll prompt to insert a password with no shown you for what character you input.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-4157976930764016856?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2kfx1bY6GBrCR9uXhOnMt0QWwKs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kfx1bY6GBrCR9uXhOnMt0QWwKs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2kfx1bY6GBrCR9uXhOnMt0QWwKs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2kfx1bY6GBrCR9uXhOnMt0QWwKs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/BgoxZ6Sx5_k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/4157976930764016856/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/05/example-script-for-mobile-hsdpa-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/4157976930764016856?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/4157976930764016856?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/BgoxZ6Sx5_k/example-script-for-mobile-hsdpa-with.html" title="Example script for mobile HSDPA with &quot;wvdialconf&quot;" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/05/example-script-for-mobile-hsdpa-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8NQXg6eip7ImA9WxFRFkU.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-1697576752380821372</id><published>2010-04-21T00:28:00.012+07:00</published><updated>2010-05-01T11:08:10.612+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-01T11:08:10.612+07:00</app:edited><title>Let's look about OSI</title><content type="html">&lt;span class="Apple-style-span"   style=" color: rgb(68, 68, 68);  line-height: 14px; font-family:sans-serif;font-size:10px;"&gt;&lt;span class="Apple-style-span"  style="color:#000000;"&gt;&lt;b&gt;&lt;p class="MsoNormal" align="center"   style="text-align: center;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; font-style: inherit; vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;OSI (Open System Interconnection)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;OSI&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; adalah suatu dekripsi abstrak mengenai desain lapisan-lapisan komunikasi dan protokol jaringan komputer yang dikembangkan sebagai bagian dari inisiatif Open Systems Interconnection (OSI). Model ini disebut juga dengan model “Tujuh lapisan OSI” (OSI seven layer model).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Ketujuh lapisan dalam model ini adalah:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;1. Lapisan fisik (physical layer)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Physical Layer berfungsi dalam pengiriman raw bit ke channel komunikasi. Masalah desain yang harus diperhatikan disini adalah memastikan bahwa bila satu sisi mengirim data 1 bit, data tersebut harus diterima oleh sisi lainnya sebagai 1 bit pula, dan bukan 0 bit. Pertanyaan yang timbul dalam hal ini adalah : berapa volt yang perlu digunakan untuk menyatakan nilai 1? dan berapa volt pula yang diperlukan untuk angka 0?. Diperlukan berapa mikrosekon suatu bit akan habis? Apakah transmisi dapat diproses secara simultan pada kedua arahnya? Berapa jumlah pin yang dimiliki jaringan dan apa kegunaan masing-masing pin? Secara umum masalah-masalah desain yang ditemukan di sini berhubungan secara mekanik, elektrik dan interface prosedural, dan media fisik yang berada di bawah physical layer.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;2. Lapisan koneksi data (data link layer)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Tugas utama data link layer adalah sebagai fasilitas transmisi raw data dan mentransformasi data tersebut ke saluran yang bebas dari kesalahan transmisi. Sebelum diteruskan kenetwork layer, data link layer melaksanakan tugas ini dengan memungkinkan pengirim memecag-mecah data input menjadi sejumlah data frame (biasanya berjumlah ratusan atau ribuan byte). Kemudian data link layer mentransmisikan frame tersebut secara berurutan, dan memproses acknowledgement frame yang dikirim kembali oleh penerima. Karena physical layer menerima dan mengirim aliran bit tanpa mengindahkan arti atau arsitektur frame, maka tergantung pada data link layer-lah untuk membuat dan mengenali batas-batas frame itu. Hal ini bisa dilakukan dengan cara membubuhkan bit khusus ke awal dan akhir frame. Bila secara insidental pola-pola bit ini bisa ditemui pada data, maka diperlukan perhatian khusus untuk menyakinkan bahwa pola tersebut tidak secara salah dianggap sebagai batas-batas frame.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;3. Lapisan jaringan (network layer)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Network layer berfungsi untuk pengendalian operasi subnet. Masalah desain yang penting adalah bagaimana caranya menentukan route pengiriman paket dari sumber ke tujuannya. Route dapat didasarkan pada table statik yang “dihubungkan ke” network. Route juga dapat ditentukan pada saat awal percakapan misalnya session terminal. Terakhir, route dapat juga sangat dinamik, dapat berbeda bagi setiap paketnya. Oleh karena itu, route pengiriman sebuah paket tergantung beban jaringan saat itu.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;4. Lapisan transpor (transport layer)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Fungsi dasar transport layer adalah menerima data dari session layer, memecah data menjadi bagian-bagian yang lebih kecil bila perlu, meneruskan data ke network layer, dan menjamin bahwa semua potongan data tersebut bisa tiba di sisi lainnya dengan benar. Selain itu, semua hal tersebut harus dilaksanakan secara efisien, dan bertujuan dapat melindungi layer-layer bagian atas dari perubahan teknologi hardware yang tidak dapat dihindari.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Dalam keadaan normal, transport layer membuat koneksi jaringan yang berbeda bagi setiap koneksi transport yang diperlukan oleh session layer. Bila koneksi transport memerlukan throughput yang tinggi, maka transport layer dapat membuat koneksi jaringan yang banyak. Transport layer membagi-bagi pengiriman data ke sejumlah jaringan untuk meningkatkan throughput. Di lain pihak, bila pembuatan atau pemeliharaan koneksi jaringan cukup mahal, transport layer dapat menggabungkan beberapa koneksi transport ke koneksi jaringan yang sama. Hal tersebut dilakukan untuk membuat penggabungan ini tidak terlihat oleh session layer.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Transport layer juga menentukan jenis layanan untuk session layer, dan pada gilirannya jenis layanan bagi para pengguna jaringan. Jenis transport layer yang paling populer adalah saluran error-free point to point yang meneruskan pesan atau byte sesuai dengan urutan pengirimannya. Akan tetapi, terdapat pula jenis layanan transport lainnya. Layanan tersebut adalah transport pesan terisolasi yang tidak menjamin urutan pengiriman, dan membroadcast pesan-pesan ke sejumlah tujuan. Jenis layanan ditentukan pada saat koneksi dimulai.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;5. Lapisan sesi (session layer)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Session layer mengijinkan para pengguna untuk menetapkan session dengan pengguna lainnya. Sebuah session selain memungkinkan transport data biasa, seperti yang dilakukan oleh transport layer, juga menyediakan layanan yang istimewa untuk aplikasi-aplikasi tertentu. Sebuah session digunakan untuk memungkinkan seseorang pengguna log ke remote timesharing system atau untuk memindahkan file dari satu mesin kemesin lainnya.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Sebuah layanan session layer adalah untuk melaksanakan pengendalian dialog. Session dapat memungkinkan lalu lintas bergerak dalam bentuk dua arah pada suatu saat, atau hanya satu arah saja. Jika pada satu saat lalu lintas hanya satu arah saja (analog dengan rel kereta api tunggal), session layer membantu untuk menentukan giliran yang berhak menggunakan saluran pada suatu saat.Layanan session di atas disebut manajemen token. Untuk sebagian protokol, adalah penting untuk memastikan bahwa kedua pihak yang bersangkutan tidak melakukan operasi pada saat yang sama. Untuk mengatur aktivitas ini, session layer menyediakan token-token yang dapat digilirkan. Hanya pihak yang memegang token yang diijinkan melakukan operasi kritis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Layanan session lainnya adalah sinkronisasi. Ambil contoh yang dapat terjadi ketika mencoba transfer file yang berdurasi 2 jam dari mesin yang satu ke mesin lainnya dengan kemungkinan mempunyai selang waktu 1 jam antara dua crash yang dapat terjadi. Setelah masing-masing transfer dibatalkan, seluruh transfer mungkin perlu diulangi lagi dari awal, dan mungkin saja mengalami kegagalan lain. Untuk mengurangi kemungkinan terjadinya masalah ini, session layer dapat menyisipkan tanda tertentu ke aliran data. Karena itu bila terjadi crash, hanya data yang berada sesudah tanda tersebut yang akan ditransfer ulang.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;6. Lapisan presentasi (presentation layer)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Pressentation layer melakukan fungsi-fungsi tertentu yang diminta untuk menjamin penemuan sebuah penyelesaian umum bagi masalah tertentu. Pressentation Layer tidak mengijinkan pengguna untuk menyelesaikan sendiri suatu masalah. Tidak seperti layer-layer di bawahnya yang hanya melakukan pemindahan bit dari satu tempat ke tempat lainnya, presentation layer memperhatikan syntax dan semantik informasi yang dikirimkan. Satu contoh layanan pressentation adalah encoding data. Kebanyakan pengguna tidak memindahkan string bit biner yang random. Para pengguna saling bertukar data sperti nama orang, tanggal, jumlah uang, dan tagihan. Item-item tersebut dinyatakan dalam bentuk string karakter, bilangan interger, bilangan floating point, struktur data yang dibentuk dari beberapa item yang lebih sederhana. Terdapat perbedaan antara satu komputer dengan komputer lainnya dalam memberi kode untuk menyatakan string karakter (misalnya, ASCII dan Unicode), integer (misalnya komplemen satu dan komplemen dua), dan sebagainya. Untuk memungkinkan dua buah komputer yang memiliki presentation yang berbeda untuk dapat berkomunikasi, struktur data yang akan dipertukarkan dapat dinyatakan dengan cara abstrak, sesuai dengan encoding standard yang akan digunakan “pada saluran”. Presentation layer mengatur data-struktur abstrak ini dan mengkonversi dari representation yang digunakan pada sebuah komputer menjadi representation standard jaringan, dan sebaliknya.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;7. Lapisan aplikasi (application layer)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  Application layer terdiri dari bermacam-macam protokol. Misalnya terdapat ratusan jenis terminal yang tidak kompatibel di seluruh dunia. Ambil keadaan dimana editor layar penuh yang diharapkan bekerja pada jaringan dengan bermacam-macam terminal, yang masing-masing memiliki layout layar yang berlainan, mempunyai cara urutan penekanan tombol yang berbeda untuk penyisipan dan penghapusan teks, memindahkan sensor dan sebagainya.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:12px;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_l2lzW0peKlg/S83onHeB2XI/AAAAAAAAABY/4p1gRe60uu8/s1600/osilayer.gif"&gt;&lt;img src="http://1.bp.blogspot.com/_l2lzW0peKlg/S83onHeB2XI/AAAAAAAAABY/4p1gRe60uu8/s400/osilayer.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5462277681787820402" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 228px; " /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="center"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span class="Apple-style-span"  style=" font-weight: normal;font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" align="center"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;TCP/IP (singkatan dari Transmission Control Protocol/Internet Protocol)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; text-indent: 0.5in; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Adalah standar komunikasi data yang digunakan oleh komunitas internet dalam proses tukar-menukar data dari satu komputer ke komputer lain di dalam jaringan Internet. Protokol ini tidaklah dapat berdiri sendiri, karena memang protokol ini berupa kumpulan protokol (protocol suite). Protokol ini juga merupakan protokol yang paling banyak digunakan saat ini. Data tersebut diimplementasikan dalam bentuk perangkat lunak (software) di sistem operasi. Istilah yang diberikan kepada perangkat lunak ini adalah TCP/IP stack. Protokol TCP/IP dikembangkan pada akhir dekade 1970-an hingga awal 1980-an sebagai sebuah protokol standar untuk menghubungkan komputer-komputer dan jaringan untuk membentuk sebuah jaringan yang luas (WAN). TCP/IP merupakan sebuah standar jaringan terbuka yang bersifat independen terhadap mekanisme transport jaringan fisik yang digunakan, sehingga dapat digunakan di mana saja. Protokol ini menggunakan skema pengalamatan yang sederhana yang disebut sebagai alamat IP (IP Address) yang mengizinkan hingga beberapa ratus juta komputer untuk dapat saling berhubungan satu sama lainnya di Internet. Protokol ini juga bersifat routable yang berarti protokol ini cocok untuk menghubungkan sistem-sistem berbeda (seperti Microsoft Windows dan keluarga UNIX) untuk membentuk jaringan yang heterogen. Protokol TCP/IP selalu berevolusi seiring dengan waktu, mengingat semakin banyaknya kebutuhan terhadap jaringan komputer dan Internet. Pengembangan ini dilakukan oleh beberapa badan, seperti halnya Internet Society (ISOC), Internet Architecture Board (IAB), dan Internet Engineering Task Force (IETF). Macam-macam protokol yang berjalan di atas TCP/IP, skema pengalamatan, dan konsep TCP/IP didefinisikan dalam dokumen yang disebut sebagai Request for Comments (RFC) yang dikeluarkan oleh IETF.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 14px; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoListParagraph"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 13.5pt; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; text-indent: -9pt; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;A. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Sebutkan dan jelaskan aplikasi-aplikasi yang bekerja di aplikasi layer dan protocol-protocol yang bekerja di aplikasi layer?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 1.75pt; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Penyelesaian&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Aplikasi Layer merupakan interface antara jaringan dan software aplikasi.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Contoh: Aplikasi yang bekerja pada aplikasi layer&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Mozilla Firefox, Internet Explorer, Opera, Yahoo Messenger, Comfrog..dll&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Contoh: Protocol yang bekerja pada aplikasi layer&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;1. &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;HTTP (Hyper Text Transfer Protocol ) Protokol yang dipergunakan untuk mentransfer dokumen dan web dalam &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sebuah web browser, melalui www.  HTTP juga merupakan protokol  yang meminta dan menjawab antar klien dan &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;server.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;2.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;FTP (File Transfer Protokol) Protokol internet yang berjalam dalam layer aplikasi yang merupakan standar untuk &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;mentransfer  file komputer antar mesin-mesin dalam sebuat jaringan internet.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;3.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;NFS (Network File system) Jaringan protokol yang memungkinkan pengguna di klien komputer untuk menngakses file &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;melalui jaringan dengan cara yang sama dengan bagaiman penyimpanan lokal yang diaksesnya.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;4.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;DNS (Domain Name System) Protokol yang digunakkan untuk memberikan suatu nama domain pada sebuah alamat IP &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;agar lebih mudah diingat.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;5.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;POP3 (Post Office Protocol) Protokol yang digunakan untuk mengambil mail dari suatu mail transfer agent yang &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;akhirnya mail tersebut akan di dowbload kedalam jaringan local.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;6.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MIME (Multipurpose Internet Mail Exension) Protokol yang digunakan untuk mengirim file binary dalam bentuk teks.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;7.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;SMB (Server Messange Block) Protokol yang digunakan untuk mentransfer server-server file ke DOS dan Windows.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;8.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;NNTP (Network News Transfer Protocol) Protokol yang digunakan untuk menerima dan mengirim newsgroup.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;9.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;DHCP (Dynamic Configuration Protocol) Layanan yang memberikan no IP kepada komputer  yang meminta nya secara &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;otomatis.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;B.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jelaskan secara detail prinsip kerja FTP dan HTTP????&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 1.75pt; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jawab :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;FTP (singkatan dari File Transfer Protocol) adalah sebuah protokol Internet yang berjalan di dalam lapisan aplikasi yang merupakan standar untuk pentransferan berkas (file) komputer antar mesin-mesin dalam sebuah internetwork.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;FTP merupakan salah satu protokol Internet yang paling awal dikembangkan, dan masih digunakan hingga saat ini untuk melakukan pengunduhan (download) dan penggugahan (upload) berkas-berkas komputer antara klien FTP dan server FTP. Sebuah Klien FTP merupakan aplikasi yang dapat mengeluarkan perintah-perintah FTP ke sebuah server FTP, sementara server FTP adalah sebuah Windows Service atau daemon yang berjalan di atas sebuah komputer yang merespons perintah-perintah dari sebuah klien FTP. Perintah-perintah FTP dapat digunakan untuk mengubah direktori, mengubah modus transfer antara biner dan ASCII, menggugah berkas komputer ke server FTP, serta mengunduh berkas dari server FTP.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Sebuah server FTP diakses dengan menggunakan Universal Resource Identifier (URI) dengan menggunakan format ftp://namaserver. Klien FTP dapat menghubungi server FTP dengan membuka URI tersebut.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;FTP menggunakan protokol Transmission Control Protocol (TCP) untuk komunikasi data antara klien dan server, sehingga di antara kedua komponen tersebut akan dibuatlah sebuah sesi komunikasi sebelum transfer data dimulai. Sebelum membuat koneksi, port TCP nomor 21 di sisi server akan "mendengarkan" percobaan koneksi dari sebuah klien FTP dan kemudian akan digunakan sebagai port pengatur (control port) untuk (1) membuat sebuah koneksi antara klien dan server, (2) untuk mengizinkan klien untuk mengirimkan sebuah perintah FTP kepada server dan juga (3) mengembalikan respons server ke perintah tersebut. Sekali koneksi kontrol telah dibuat, maka server akan mulai membuka port TCP nomor 20 untuk membentuk sebuah koneksi baru dengan klien untuk mentransfer data aktual yang sedang dipertukarkan saat melakukan pengunduhan dan penggugahan.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;FTP hanya menggunakan metode autentikasi standar, yakni menggunakan username dan passwordenkripsi. Pengguna terdaftar dapat menggunakan username dan password-nya untuk mengakses, men-download, dan meng-upload berkas-berkas yang ia kehendaki. Umumnya, para pengguna terdaftar memiliki akses penuh terhadap beberapa direktori, sehingga mereka dapat membuat berkas, membuat direktori, dan bahkan menghapus berkas. Pengguna yang belum terdaftar dapat juga menggunakan metode anonymous login, yakni dengan menggunakan nama pengguna anonymous dan password yang diisi dengan menggunakan alamat e-mail. yang dikirim dalam bentuk tidak ter&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;HTTP (Hypertext Transfer Protocol, lebih sering terlihat sebagai http) adalah protokol yang dipergunakan untuk mentransfer dokumen dalam World Wide Web (WWW). Protokol ini adalah protokol ringan, tidak berstatus dan generik yang dapat dipergunakan berbagai macam tipe dokumen.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Pengembangan HTTP dikoordinasi oleh Konsorsium World Wide Web (W3C) dan grup bekerja Internet Engineering Task Force (IETF), bekerja dalam publikasi satu seri RFC, yang paling terkenal RFC 2616, yang menjelaskan HTTP/1.1, versi HTTP yang digunakan umum sekarang ini.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: normal; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;HTTP adalah sebuah protokol meminta/menjawab antara client dan server. Sebuh client HTTP seperti web browser, biasanya memulai permintaan dengan membuat hubungan TCP/IP ke port tertentu di tuan rumah yang jauh (biasanya port 80). Sebuah server HTTP yang mendengarkan di port tersebut menunggu client mengirim kode permintaan (request), seperti "GET / HTTP/1.1" (yang akan meminta halaman yang sudah ditentukan), diikuti dengan pesan MIME yang memiliki beberapa informasi kode kepala yang menjelaskan aspek dari permintaan tersebut, diikut dengan badan dari data tertentu. Beberapa kepala (header) juga bebas ditulis atau tidak, sementara lainnya (seperti tuan rumah) diperlukan oleh protokol HTTP/1.1. Begitu menerima kode permintaan (dan pesan, bila ada), server200 OK", dan sebuah pesan yang diminta, atau sebuah pesan error atau pesan lainnya. mengirim kembali kode jawaban, seperti "&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; text-align: justify; line-height: normal; "&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 1.75pt; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;C. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jelaskan secara detail prinsip kerja dari MUA, MTA, MDA????&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 1.75pt; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jawab:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MUA &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(Mail User Agent) menurut FOLDOC adalah sebuah program atau aplikasi yang digunakan oleh seorang pengguna komputer untuk menulis atau membuat suatu email serta digunakan untuk membacanya. MUA merupakan penghubung antara pengguna dan MTA. Sebetulnya ada banyak macam MUA yang bisa digunakan, diantaranya : Microsoft Outlook, Microsoft Outlook Express, Qualcomm Eudora, Netscape Messenger. Menurut FOLDOC (Free Online Dictionary of Computing) definisi dari&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MTA&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; (MessageTransfer Agent) adalah suatu program yang bertanggung jawab dalam hal pengiriman sebuah email ke suatu tujuan alamat. Program ini biasanya akan menjadi sebuah daemon dan membuka koneksi pada port 25 (smtp) yang digunakan sebagai penghubung antar MTA. Dalam beberapa hal, MTA juga merupakan kependekan dari Mail Transfer Agent. Sebenarnya ada banyak macam MTA yang bisa dijumpai di internet, di antaranya : sendmail, Qmail, Mercury, Microsoft Exchange Server dan Mdaemon.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;MDA &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(Mail Delivery Agent) merupakan Local delivery pada user agent yang melakukan hubungan transfer data dengan Transfer Agent. bekerja sama dengan MTA untuk menangani pesan - pesan email yang datang untuk diletakkan sesuai pada mailbox user masing - masing.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal; line-height: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;D. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jelaskan secara detail DHCP-discover, DHCP-offer, DHCP-request, DHCP-acknowledge????&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jawab:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;DHCP (Dynamic Host Configuration Protocol) merupakan protocol yang dipakai untuk memberikan IP secara dinamis kepada client yang tidak mempunyai nomor IP dan juga sebagai pengendali parameter bagi computer client, sehingga admin tidak perlu konfigurasi tiap computer. Format paket DHCP adalah ide dasar memberikan IP ke client, server harus ingat IP tersebut dan parameternya, yang dikirim bukan Cuma IP tapi juga parameter-parameter, jika client booting sedapatkan mungkin diberi IP yang sama.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new', serif;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;E. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Apa yang dimaksud dengan POINT TO POINT PROTOCOL????&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jawab:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 18px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Point-to-Point Protocol&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 18px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; (sering disingkat menjadi PPP) adalah sebuah &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Protokol jaringan" href="http://id.wikipedia.org/wiki/Protokol_jaringan" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;protokol&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a title="Enkapsulasi jaringan (halaman belum tersedia)" href="http://id.wikipedia.org/w/index.php?title=Enkapsulasi_jaringan&amp;amp;action=edit&amp;amp;redlink=1" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;enkapsulasi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Paket jaringan" href="http://id.wikipedia.org/wiki/Paket_jaringan" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;paket&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a title="Jaringan komputer" href="http://id.wikipedia.org/wiki/Jaringan_komputer" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;jaringan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; yang banyak digunakan pada &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Wide area network" href="http://id.wikipedia.org/wiki/Wide_area_network" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;wide area network&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; (WAN). Protokol ini merupakan standar industri yang berjalan pada &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Lapisan data-link" href="http://id.wikipedia.org/wiki/Lapisan_data-link" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;lapisan data-link&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; dan dikembangkan pada awal tahun 1990-an sebagai respons terhadap masalah-masalah yang terjadi pada protokol &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Serial Line Internet Protocol (halaman belum tersedia)" href="http://id.wikipedia.org/w/index.php?title=Serial_Line_Internet_Protocol&amp;amp;action=edit&amp;amp;redlink=1" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Serial Line Internet Protocol&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; (SLIP), yang hanya mendukung&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Alamat IP" href="http://id.wikipedia.org/wiki/Alamat_IP" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;pengalamatan IP&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; statis kepada para &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Klien (halaman belum tersedia)" href="http://id.wikipedia.org/w/index.php?title=Klien&amp;amp;action=edit&amp;amp;redlink=1" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;kliennya&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;. Dibandingkan dengan pendahulunya (SLIP), PPP jauh lebih baik, mengingat kerja protokol ini lebih cepat, menawarkan &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a title="Koreksi kesalahan (halaman belum tersedia)" href="http://id.wikipedia.org/w/index.php?title=Koreksi_kesalahan&amp;amp;action=edit&amp;amp;redlink=1" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;koreksi kesalahan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;, dan negosiasi sesi secara dinamis tanpa adanya intervensi dari pengguna. Selain itu, protokol ini juga mendukung banyak protokol-protokol jaringan secara simultan. PPP didefinisikan pada &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://tools.ietf.org/html/rfc1661" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;RFC 1661&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; dan &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; text-decoration: none; color:black;"&gt;&lt;a href="http://tools.ietf.org/html/rfc1662" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-style: inherit; vertical-align: baseline; color: rgb(53, 118, 102); background: inherit; text-decoration: none; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;RFC 1662.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;F. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Apa yang dimaksud dengan GNUTELLA PROTOCOL ?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Jawab:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Gnutella Protocol&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; merupakan sebuah protocol file sharing, dan popular pada tahu tahun sebelum 2007, yang digunakan file sharing sebanyak 40 %. Gnutella Protocol menggunakan lima paket data yang berbeda pada jaringan.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;1.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Ping      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;:   digunakan untuk menemukan host pada jaringan.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;2.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Pong    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;: tanggapan dari ping, mencakup alamat layanan gnutella yang terhubung.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;3.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Query  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;:   mencari file.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;4.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Query Hint    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;: membalas permintaan file.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"   style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 15px; font-family:inherit;color:initial;"&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border- font-weight: inherit; font-style: inherit;  vertical-align: baseline; line-height: 24px; color:initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="  font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;5.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Push     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;: download permintaan dari servent firewall.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/b&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-1697576752380821372?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2E3xif_l4mpe3t_4RsCp64aU_PU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2E3xif_l4mpe3t_4RsCp64aU_PU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2E3xif_l4mpe3t_4RsCp64aU_PU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2E3xif_l4mpe3t_4RsCp64aU_PU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/-6KnkMt8C1k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/1697576752380821372/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/04/lets-look-about-osi.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/1697576752380821372?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/1697576752380821372?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/-6KnkMt8C1k/lets-look-about-osi.html" title="Let's look about OSI" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_l2lzW0peKlg/S83onHeB2XI/AAAAAAAAABY/4p1gRe60uu8/s72-c/osilayer.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/04/lets-look-about-osi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUENQHs7cCp7ImA9WxFSF0U.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-8633963260411434257</id><published>2010-04-20T22:11:00.011+07:00</published><updated>2010-04-21T00:14:51.508+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-21T00:14:51.508+07:00</app:edited><title>Karakteristik TCP dan UDP</title><content type="html">&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Kali ini kita akan membahas tentang TCP dan UDP. Pada bagian ini, kita akan membahas tentang karakteristik masing-masing dari TCP dan UDP. Dengan mengenal TCP dan UDP, kita dapat tahu kapan kita akan menempatkan suatu protokol yang tepat dalam implementasi jaringan.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;1.Kapan menggunakan TCP dan UDP??&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;DNS menggunakan TCP dan UDP di port komputer 53 untuk melayani permintaan DNS. Nyaris semua permintaan DNS berisi permintaan UDP tunggal dari klien yang diikuti oleh jawaban UDP tunggal dari server. Dan pada saat kapan protocol TCP digunakan? Umumnya TCP dipergunakanhanya ketika ukuran data jawaban melebihi 512 byte, atau untuk pertukaran zona DNS zone transfer. DNS zone transfer adalah sebuah mekanisme untukmereplikasi DNS data dari satu DNS ke DNS server lain. Zone transfer digunakan pada saat kita ingin mereplikasi DNS data pada DNS server kita dalam upaya menghemat bandwidth, untuk meningkatkankecepatan terhadap suatu permintaaan atau untuk membuat DNS data selalu tersedia pada saat DNS server pada internet terputus.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;TCP (Transmission Control Processor) Merupakan suatu protokol yang berada pada layer transport dalam model OSI/ Model DARPA. Yang berorientasi dapat diandalkan (reliable).&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;KARAKTERISTIK TCP :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Berorintasi sambung, yaitu sebelum ada komunikasi 2 host, 2 proses yang berada pada layer aplikasi harus&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;negosiasi terlebih dahulu untuk membuat sesi koneksi.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Full-duplex: Untuk setiap host TCP, koneksi yang terjadi antara dua host terdiri atas dua buah jalur, yakni&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;jalur &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;keluar dan jalur masuk. Dengan menggunakan teknologi lapisan yang lebih rendah yang mendukung &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;full-duplex, maka data pun dapat secara simultan diterima dan dikirim. Header TCP berisi nomor urut (TCP &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;sequence number) dari data yang ditransmisikan dan sebuah acknowledgment dari data yang masuk.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Dapat diandalkan (reliable): Data yang dikirimkan ke sebuah koneksi TCP akan diurutkan dengan sebuah&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;nomor urut paket dan akan mengharapkan paket positive acknowledgment dari penerima. Jika tidak ada &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;paket Acknowledgment dari penerima, maka segmen TCP (protocol data unit dalam protokol TCP) akan &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ditransmisikan ulang. Pada pihak penerima, segmen-segmen duplikat akan diabaikan dan segmen-segmen &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;yang datang tidak sesuai dengan urutannya akan diletakkan di belakang untuk mengurutkan segmen-&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;segmen TCP. Untuk menjamin integritas setiap segmen TCP, TCP mengimplementasikan penghitungan TCP &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Checksum.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Byte stream: TCP melihat data yang dikirimkan dan diterima melalui dua jalur masuk dan jalur keluar TCP sebagai sebuah byte stream yang berdekatan (kontigu). Nomor urut TCP dan nomor acknowlegment dalam &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;setiap header TCP didefinisikan juga dalam bentuk byte. Meski demikian, TCP tidak mengetahui batasan &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;pesan-pesan di &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;dalam byte stream TCP tersebut. Untuk melakukannya, hal ini diserahkan kepada protokol &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;lapisan aplikasi (dalam DARPA Reference Model), yang harus menerjemahkan byte stream TCP ke dalam &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;"bahasa" yang ia pahami.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Memiliki layanan flow control: Untuk mencegah data terlalu banyak dikirimkan pada satu waktu, yang&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;akhirnya membuat "macet" jaringan internetwork IP, TCP mengimplementasikan layanan flow control yang &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;dimiliki oleh pihak pengirim yang secara terus menerus memantau dan membatasi jumlah data yang &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;dikirimkan pada satu waktu. Untuk mencegah pihak penerima untuk memperoleh data yang tidak dapat &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;disangganya (buffer), TCP juga mengimplementasikan flow control dalam pihak penerima, yang &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;mengindikasikan jumlah buffer yang masih tersedia dalam pihak penerima.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Melakukan segmentasi terhadap data yang datang dari lapisan aplikasi (dalam DARPA Reference Model) dan&lt;span class="Apple-style-span" style="white-space: pre;"&gt; m&lt;/span&gt;engirimkan paket secara "one-to-one": hal ini karena memang TCP harus membuat sebuah sirkuit logis &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;antara dua buah protokol lapisan aplikasi agar saling dapat berkomunikasi. TCP tidak menyediakan layanan &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;pengiriman data secara one-to-many.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;·         Port TCP&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Port TCP mampu mengindikasikan sebuah lokasi tertentu untuk menyampaikan segmen-segmen TCP yang dikirimkan yang diidentifikasi dengan TCP Port Number. Nomor-nomor di bawah angka 1024 merupakan port yang umum digunakan dan ditetapkan oleh IANA (Internet Assigned Number Authority). Tabel berikut ini menyebutkan beberapa port TCP yang telah umum digunakan.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;b&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;UDP (User Diagram Protocol) ialah protokol lapisan transprot yang mendukung komunikasi tidak handal tanpa   koneksi.&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;KARAKTERISTIK UDP :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Connectionless (tanpa koneksi): Pesan-pesan UDP akan dikirimkan tanpa harus dilakukan proses negosiasi&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;koneksi antara dua host yang hendak berukar informasi.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Unreliable (tidak andal): Pesan-pesan UDP akan dikirimkan sebagai datagram tanpa adanya nomor urut atau pesan acknowledgment. Protokol lapisan aplikasi yang berjalan di atas UDP harus melakukan pemulihan &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;terhadap pesan-pesan yang hilang selama transmisi. Umumnya, protokol lapisan aplikasi yang berjalan di &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;atas UDP mengimplementasikan layanan keandalan mereka masing-masing, atau mengirim pesan secara &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;periodik atau dengan menggunakan waktu yang telah didefinisikan.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;UDP menyediakan mekanisme untuk mengirim pesan-pesan ke sebuah protokol lapisan aplikasi atau proses &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;tertentu di dalam sebuah host dalam jaringan yang menggunakan TCP/IP. Header UDP berisi field Source &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Process Identification dan Destination Process Identification.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;UDP menyediakan penghitungan checksum berukuran 16-bit terhadap keseluruhan pesan UDP.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;UDP tidak menyediakan layanan-layanan antar-host berikut:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;UDP tidak menyediakan mekanisme penyanggaan (buffering) dari data yang masuk ataupun data yang&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;keluar. Tugas buffering merupakan tugas yang harus diimplementasikan oleh protokol lapisan aplikasi yang &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;berjalan di atas UDP.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;UDP tidak menyediakan mekanisme segmentasi data yang besar ke dalam segmen-segmen data, seperti&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;yang terjadi dalam protokol TCP. Karena itulah, protokol lapisan aplikasi yang berjalan di atas UDP harus &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;mengirimkan data yang berukuran kecil (tidak lebih besar dari nilai Maximum Transfer Unit/MTU) yang &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;dimiliki oleh sebuah antarmuka di mana data tersebut dikirim. Karena, jika ukuran paket data yang dikirim &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;lebih besar dibandingkan nilai MTU, paket data yang dikirimkan bisa saja terpecah menjadi beberapa fragmen &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;yang akhirnya tidak jadi terkirim dengan benar.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;UDP tidak menyediakan mekanisme flow-control, seperti yang dimiliki oleh TCP.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;PENGGUNAAN UDP :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;UDP sering digunakan dalam beberapa tugas berikut :&lt;/span&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Protokol yang "ringan" (lightweight): Untuk menghemat sumber daya memori dan prosesor, beberapaprotokol lapisan aplikasi membutuhkan penggunaan protokol yang ringan yang dapat melakukan fungsi-&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;fungsi spesifik dengan saling bertukar pesan. Contoh dari protokol yang ringan adalah fungsi query nama &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;dalam protokol lapisan aplikasi Domain Name System.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Protokol lapisan aplikasi yang mengimplementasikan layanan keandalan: Jika protokol lapisan aplikasi menyediakan layanan transfer data yang andal, maka kebutuhan terhadap keandalan yang ditawarkan oleh &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;TCP pun menjadi tidak ada. Contoh dari protokol seperti ini adalah Trivial File Transfer Protocol (TFTP) dan &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Network File System (NFS)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Protokol yang tidak membutuhkan keandalan. Contoh protokol ini adalah protokol Routing Information&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;Protocol (RIP).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Transmisi broadcast: Karena UDP merupakan protokol yang tidak perlu membuat koneksi terlebih dahulu&lt;span class="Apple-style-span" style="white-space: pre;"&gt; &lt;/span&gt;dengan sebuah host tertentu, maka transmisi broadcast pun dimungkinkan. Sebuah protokol lapisan aplikasi &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;dapat mengirimkan paket data ke beberapa tujuan dengan menggunakan alamat multicast atau broadcast. &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Hal ini kontras dengan protokol TCP yang hanya dapat mengirimkan transmisi one-to-one. Contoh: query &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;nama dalam protokol NetBIOS Name Service.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;b&gt;·         PORT UDP&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Seperti halnya TCP, UDP juga memiliki saluran untuk mengirimkan informasi antar host, yang disebut dengan UDP Port. Untuk menggunakan protokol UDP, sebuah aplikasi harus menyediakan alamat IP dan nomor UDP Port dari host yang dituju. Sebuah UDP port berfungsi sebagai sebuah multiplexed message queue, yang berarti bahwa UDP port tersebut dapat menerima beberapa pesan secara sekaligus. Setiap port diidentifikasi dengan nomor yang unik, seperti halnya TCP, tetapi meskipun begitu, UDP Port berbeda dengan TCP Port meskipun memiliki nomor port yang sama. Tabel di bawah ini mendaftarkan beberapa UDP port yang telah dikenal secara luas.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;2. Jelaskan tentang IP v4 Header?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Internet Protocol version 4 (IPv4)&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;IPv4 adalah sebuah jenis pengalamatan jaringan yang digunakan di dalam protokol jaringan TCP/IP yang menggunakan protokol IP versi 4. Panjang totalnya adalah 32-bit, dan secara teoritis dapat mengalamati hingga 4 miliar host computer di seluruh dunia. Alamat IP versi 4 umumnya diekspresikan dalam notasi desimal bertitik (dotted-decimal notation), yang dibagi ke dalam empat buah oktet berukuran 8-bit. Karena setiap oktet berukuran 8-bit, maka nilainya berkisar antara 0 hingga 255 (meskipun begitu, terdapat beberapa pengecualian nilai). Contoh alamat IP versi 4 adalah 192.168.1.3&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Format Pengalamatan IPv4 :&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Dalam RFC 791, alamat IP versi 4 dibagi ke dalam beberapa kelas, dilihat dari oktet pertamanya, seperti terlihat pada tabel 2.1. Sebenarnya yang menjadi pembeda kelas IP versi 4 adalah pola biner yang terdapat dalam oktet pertama (utamanya adalah bit-bit awal / high-order bit), tapi untuk lebih mudah mengingatnya, akan lebih cepat diingat dengan menggunakan representasi desimal. Tabel di bawah ini Pengklasifikasian Alamat IPv4 Berdasarkan Oktet Pertama Setiap antarmuka jaringan yang menggunakan protokol TCP/IP harus diidentifikasikan dengan menggunakan sebuah alamat logis yang unik, yang disebut dengan alamat unicast (unicast address). Sebagai contoh, alamat unicast dapat ditetapkan ke sebuah host dengan antarmuka jaringan dengan teknologi Ethernet, yang memiliki alamat MAC sepanjang 48-bit. Alamat unicast inilah yang harus digunakan oleh semua host TCP/IP agar dapat saling terhubung. Komponen alamat ini terbagi menjadi dua jenis, yakni alamat host (host identifier) dan alamat jaringan (network identifier).&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Alamat unicast menggunakan kelas A, B, dan C dari kelas-kelas alamat IP yang telah disebutkan sebelumnya Alamat IP Multicast (Multicast IP Address) adalah alamat yang digunakan untuk menyampaikan satu paket kepada banyak penerima. Dalam sebuah intranet yang memiliki alamat multicast IPv4, sebuah paket yang ditujukan ke sebuah alamat multicast akan diteruskan oleh router ke subjaringan di mana terdapat hosthost yang sedang berada dalam kondisi "listening" terhadap lalu lintas jaringan yang dikirimkan ke alamat multicast tersebut. Dengan cara ini, alamat multicast pun menjadi cara yang efisien untuk mengirimkan paket data dari satu sumber ke beberapa tujuan untuk beberapa jenis komunikasi. Alamat multicast didefinisikan dalam RFC 1112. Alamat-alamat multicast IPv4 didefinisikan dalam ruang alamat kelas D.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Format Paket IPv4 :&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Paket-paket data dalam protokol IP dikirimkan dalam bentuk datagram. Sebuah datagram IP terdiri atas header IP dan muatan IP (payload). Header IP menyediakan dukungan untuk memetakan jaringan (routing), identifikasi muatan IP, ukuran header IP dan datagram IP, dukungan fragmentasi, dan juga IP Options. Sedangkan payload IP berisi informasi yang dikirimkan. Payload IP memiliki ukuran bervariasi, berkisar dari 8 byte hingga 65515 byte. Sebelum dikirimkan di dalam saluran jaringan, datagram IP akan "dibungkus" (encapsulation) dengan header protokol lapisan antarmuka jaringan dan trailer-nya, untuk membuat sebuah frame jaringan. Setiap datagram terdiri dari beberapa field yang memiliki fungsi tersendiri dan memiliki informasi yang berbeda – beda.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Header IP terdiri atas beberapa field sebagai berikut:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Version. Digunakan untuk mengindikasikan versi dari header IP yang digunakan&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Internet Header Length. Digunakan untuk mengindikasikan ukuran header IP.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Type of Service. Field ini digunakan untuk menentukan kualitas transmisi dari sebuah datagram IP.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Total Length. Merupakan panjang total dari datagram IP, yang mencakup header IP dan muatannya.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Identification. Digunakan untuk mengidentifikasikan sebuah paket IP tertentu yang akan difragmentasi..&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Flags. Berisi dua buah flag yang berisi apakah sebuah datagram IP mengalami fragmentasi atau tidak.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;             &lt;/span&gt;Bit 0 = reserved, diisi 0.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;             &lt;/span&gt;Bit 1 = bila 0 bisa difragmentasi, bila 1 tidak dapat difragmentasi.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;             &lt;/span&gt;Bit 1 = bila 0 fragmentasi berakhir, bila 1 ada fragmentasi lagi.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Fragment Offset. Digunakan untuk mengidentifikasikan offset di mana fragmen yang bersangkutan dimulai, dihitung dari permulaan muatan IP yang belum dipecah.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Time to Live. Digunakan untuk mengidentifikasikan berapa banyak saluran jaringan di mana sebuah datagram IP dapat berjalan-jalan sebelum sebuah router mengabaikan datagram tersebut.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Protocol. Digunakan untuk mengidentifikasikan jenis protokol lapisan yang lebih tinggi yang dikandung oleh muatan IP.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Header Checksum. Field ini berguna hanya untuk melakukan pengecekan&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;integritas terhadap header IP.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Source IP Address. Mengandung alamat IP dari sumber host yang mengirimkan datagram IP tersebut.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Verdana, sans-serif;"&gt;Destination IP Address. Mengandung alamat IP tujuan ke mana datagram IP tersebut akan disampaikan.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;3. Jelaskan Protokol ARP??&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Address Resolution Protocol disingkat ARP adalah sebuah protokol dalam TCP/IP Protocol Suite yang bertanggungjawab dalam melakukan resolusi alamat IP ke dalam alamat Media Access Control (MAC Address).&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt; ARP didefinisikan di dalam RFC 826.&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif;"&gt;Ketika sebuah aplikasi yang mendukung teknologi protokol jaringan TCP/IP mencoba untuk mengakses sebuah host TCP/IP dengan menggunakan alamat IP, maka alamat IP yang dimiliki oleh host yang dituju harus diterjemahkan terlebih dahulu ke dalam MAC Address agar frame-frame data dapat diteruskan ke tujuan dan diletakkan di atas media transmisi (kabel, radio, atau cahaya), setelah diproses terlebih dahulu oleh Network Interface Card (NIC). Hal ini dikarenakan NIC beroperasi dalam lapisan fisik dan lapisan data-link pada tujuh lapis model referensi OSI dan menggunakan alamat fisik daripada menggunakan alamat logis (seperti halnya alamat IP atau nama NetBIOS) untuk melakukan komunikasi data dalam jaringan, Jika memang alamat yang dituju berada di luar jaringan lokal, maka ARP akan mencoba untuk mendapatkan MAC address dari antarmuka router lokal yang menghubungkan jaringan lokal ke luar jaringan (di mana komputer yang dituju berada).&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-8633963260411434257?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/J_PZOxAY6UYJao8DLqG9EBe2V5E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J_PZOxAY6UYJao8DLqG9EBe2V5E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/J_PZOxAY6UYJao8DLqG9EBe2V5E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J_PZOxAY6UYJao8DLqG9EBe2V5E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/Zy4nYSEdoqE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/8633963260411434257/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/04/karakteristik-tcp-dan-udp.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/8633963260411434257?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/8633963260411434257?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/Zy4nYSEdoqE/karakteristik-tcp-dan-udp.html" title="Karakteristik TCP dan UDP" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/04/karakteristik-tcp-dan-udp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQCRXc5eyp7ImA9WxBQFUg.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-3374372542833458304</id><published>2010-01-15T13:44:00.000+07:00</published><updated>2010-01-15T17:46:04.923+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-15T17:46:04.923+07:00</app:edited><title>Database Clustering, High Availability, dan Load Balancing.</title><content type="html">High Availability didefinisikan sebagai kemampuan mempertahankan sekumpulan aplikasi bisnis, tersedia bagi user sepanjang waktu. Hal ini meliputi dari antisipasi / persiapan saat aliran listrik padam sampai kondisi bencana seperti kebakaran atau gempa bumi. Setiap critical system punya satu atau lebih redundant backup system. Konsep fault tolerance berhubungan dengan high availability pada aplikasi bisnis.&lt;br /&gt; &lt;br /&gt;  Clustering adalah penggunaan dua atau lebih komputer / node / server untuk sejumlah fungsi-fungsi yang sama. Jadi jika satu komputer mati, maka komputer yang lainnya dapat mengambil alih tugas komputer tersebut. Ide clustering mendukung konsep fault tolerance. Cluster juga dapat meningkatkan kemampuan kalkulasi/komputing/performance/dari sistem komputer sehingga mendukung konsep scalability. Dengan mengimplementasikan ide clustering, kita juga dapat sekaligus mengimplementasikan konsep high availability serta meningkatkan processing power.&lt;br /&gt;&lt;br /&gt;Toleransi terhadap failure bergantung kepada dua hal;&lt;br /&gt;1. Lokasi kegagalan; Dari dalam cluster atau dari luar.&lt;br /&gt;2. Kemampuan aplikasinya sendiri dalam mengatasi kesalahan.&lt;br /&gt;&lt;br /&gt;MySQL cluster adalah sistem database terdistribusi yang terdiri dari 3 komponen utama ;&lt;br /&gt;1. MySQL server ( SQL node atau API node atau mysqld)&lt;br /&gt;     Untuk mendukung MySQL Cluster, MySQL harus dikonfigurasikan untuk menggunakan NDB storage engine. Hal ini bisa   dilakukan dengan (pada saat build dari source) menggunakan parameter "--with-ndbcluster" pada script configure. Untuk bisa menggunakan engine tersebut, harus dipastikan sedikitnya satu "MGM" node sudah berjalan. Secara default, MySQL Server yang dikonfigurasi menggunakan engine NDB akan mencari MGM node pada localhost. Dan jika berada pada host lain perlu dispesifikasikan pada "my.cnf" atau command line.&lt;br /&gt;2. Management Server (management node atau &lt;span style="font-weight:bold;"&gt;MGM node&lt;/span&gt; atau &lt;span style="font-weight:bold;"&gt;ndb_mgmd&lt;/span&gt;)&lt;br /&gt;     Istilah lainnya adalah cluster management server, dll.&lt;br /&gt;3. Data node (NDB node atau ndbd)&lt;br /&gt;     Jika SQL node dijalankan pada host dimana terdapat data node, maka MySQL Server yang bersangkutan harus meng-enable "NDBCLUSTER: storage engine. Selanjutnya setiap proses seperti "create table" atau "alter table" oleh MySQL harus dijalankan setelah cluster dijalankan dan menggunakan engine ndbcluster atau ndb (Misalnya; "create table session (...) engine=ndbcluster;"), selain itu table-table juga harus mempunyai primary key.&lt;br /&gt;4.  Data access program (MySQL client, dll).&lt;br /&gt;&lt;br /&gt;    Untuk 3 komponen pertama, masing-masing daemon yang berjalan adalah:&lt;br /&gt;- "mysqld" (misalnya dijalankan dengan "mysqld --ndbcluster --ndb-connectionstring),&lt;br /&gt;- "ndb_mgmd" (Management server daemon), dan&lt;br /&gt;- "ndbd" (node daemon).&lt;br /&gt;&lt;br /&gt;Database yang menggunakan engine ndbcluster juga bisa mengimport data file dari database yang menggunakan engine lain seperti "myisam", misalnya ;&lt;br /&gt;                                  "mysqldump --add-drop-table "name table" &gt; "nama_backup_file".sql&lt;br /&gt;lalu tinggal substitute semua "engine/type=myisam" dengan "engine=ndbcluster".&lt;br /&gt;&lt;br /&gt;Untuk setiap daemon terdapat program client yang terinstall secara default yaitu "mysql", "ndb_mgm" (management console)&lt;br /&gt;&lt;br /&gt;Contoh:&lt;br /&gt;=====================================================&lt;br /&gt;[root@local bin]&lt;span style="font-weight:bold;"&gt;pwd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/root/mysqlcluster-63-master/install/mysql/bin&lt;br /&gt;&lt;br /&gt;[root@local bin]# &lt;span style="font-weight:bold;"&gt;./ndb_mgm -c "192.168.0.126:1186" -e "all status"&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Connected to Management Server at: 192.168.0.126:1186&lt;br /&gt;&lt;br /&gt;Node 2: started (mysql-5.1.30 ndb-6.3.20)&lt;br /&gt;&lt;br /&gt;Node 3: started (mysql-5.1.30 ndb-6.3.20)&lt;br /&gt;&lt;br /&gt;=====================================================&lt;br /&gt;&lt;br /&gt;Konfigurasi SQL Node dan data Node dispesifikasikan pada "my.cnf" dan management node pada "config.ini".&lt;br /&gt;Dari cluster management server di "dbase-LBal1", berikut ini spesifikasi ketiga node yang terhubung ke management server tersebut misalnya ;&lt;br /&gt;1. "NDB" node: id=3 @dbase-1, id=4 @dbase-2 (not connected, terima koneksi dari dbase-2)&lt;br /&gt;2. "MGM" node: id=1 @dbase-LBal1, id=2 @dbase-LBal2&lt;br /&gt;3, "API" node: id=5 @dbase-1, id=6 @dbase-2, id=7 (not connected)&lt;br /&gt;&lt;br /&gt;Untuk mengaktifkan "NDB" node pada "dbase-1" atau "dbase-2"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;"service ndbd start"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sedangkan untuk "API" node,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;"service mysql start"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Konfigurasi "my.cnf" pada "dbase-1" dan "dbase-2"&lt;br /&gt;&lt;br /&gt;/etc/my.cnf @dbase-1&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;[mysqld]&lt;br /&gt;ndbcluster&lt;br /&gt;# IP Address of the cluster management node&lt;br /&gt;ndb-connectionstring=192.168.0.119, 192.168.0.120&lt;br /&gt;[mysql_cluster]&lt;br /&gt;ndb-connectstring=192.168.0.119, 192.168.0.120&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;&lt;br /&gt;/etc/my.cnf @dbase-2&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;[mysqld]&lt;br /&gt;ndbcluster&lt;br /&gt;# IP Address of the cluster management node&lt;br /&gt;ndb-connectionstring=192.168.0.119, 192.168.0.120&lt;br /&gt;[mysql_cluster]&lt;br /&gt;ndb-connectstring=192.168.0.119, 192.168.0.120&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;&lt;br /&gt;Konfigurasi "config.ini" pada "dbase-LBal1" dan "dbase-LBal2"&lt;br /&gt;&lt;br /&gt;"/var/lib/mysql-cluster/config.ini @dbase-LBal1"&lt;br /&gt;&lt;br /&gt;Proses :&lt;br /&gt;&lt;br /&gt;"/usr/sbin/ndb_mgmd -c localhost:1186 -f /var/lib/mysql-cluster/config.ini"&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;[NDBD DEFAULT]&lt;br /&gt;NoOfReplicas=2&lt;br /&gt;DataMemory=4000M&lt;br /&gt;IndexMemory=500M&lt;br /&gt;MaxNoOfOrderedIndexes=2048&lt;br /&gt;MaxNoOfAttributes = 3000&lt;br /&gt;[MYSQLD DEFAULT]&lt;br /&gt;[NDB_MGMD DEFAULT]&lt;br /&gt;[TCP DEFAULT]&lt;br /&gt;# Sectionfor the cluster management node&lt;br /&gt; [NDB_MGMD]&lt;br /&gt;# IP Address of the management node (this system)&lt;br /&gt;HostName=192.168.0.119&lt;br /&gt; [NDB_MGMD]&lt;br /&gt;# IP Address of the management node (this system)&lt;br /&gt;HostName=192.168.0.120&lt;br /&gt;# Section for the storage nodes&lt;br /&gt; [NDBD]&lt;br /&gt;# IP Address of the first storage node&lt;br /&gt;HostName=192.168.0.121&lt;br /&gt; [NDBD]&lt;br /&gt;# IP Address of the second storage node&lt;br /&gt;HostName=192.168.0.122&lt;br /&gt;DataDir=/var/lib/mysql-cluster&lt;br /&gt;# one [MYSQLD] per storage node&lt;br /&gt; [MYSQLD]&lt;br /&gt; [MYSQLD]&lt;br /&gt;# one for restore process&lt;br /&gt; [MYSQLD]&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;&lt;br /&gt;"/var/lib/mysql-cluster/config.ini @dbase-LBal2&lt;br /&gt;&lt;br /&gt;Proses:&lt;br /&gt;&lt;br /&gt;"/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini"&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;[NDBD DEFAULT]&lt;br /&gt;NoOfReplicas=2&lt;br /&gt;DataMemory=4000M&lt;br /&gt;IndexMemory=500M&lt;br /&gt;MaxNoOfOrderedIndexes=2048&lt;br /&gt;MaxNoOfAttributes = 3000&lt;br /&gt;[MYSQLD DEFAULT]&lt;br /&gt;[NDB_MGMD DEFAULT]&lt;br /&gt;[TCP DEFAULT]&lt;br /&gt;# Sectionfor the cluster management node&lt;br /&gt; [NDB_MGMD]&lt;br /&gt;# IP Address of the management node (this system)&lt;br /&gt;HostName=192.168.0.119&lt;br /&gt; [NDB_MGMD]&lt;br /&gt;# IP Address of the management node (this system)&lt;br /&gt;HostName=192.168.0.120&lt;br /&gt;# Section for the storage nodes&lt;br /&gt; [NDBD]&lt;br /&gt;# IP Address of the first storage node&lt;br /&gt;HostName=192.168.0.121&lt;br /&gt; [NDBD]&lt;br /&gt;# IP Address of the second storage node&lt;br /&gt;HostName=192.168.0.122&lt;br /&gt;DataDir=/var/lib/mysql-cluster&lt;br /&gt;# one [MYSQLD] per storage node&lt;br /&gt; [MYSQLD]&lt;br /&gt; [MYSQLD]&lt;br /&gt;# one for restore process&lt;br /&gt; [MYSQLD]&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;&lt;br /&gt;Proses backup harian dilakukan dari "dbase-LBal1"&lt;br /&gt;=====================================================&lt;br /&gt;&lt;br /&gt;[root@dbase-LBal1 ~]# &lt;span style="font-weight:bold;"&gt;crontab -l&lt;/span&gt;&lt;br /&gt;0 0 * * * /root/automate/automate.sh&lt;br /&gt;&lt;br /&gt;=====================================================&lt;br /&gt;&lt;br /&gt;=====================================================&lt;br /&gt;[root@dbase-LBal1 ~]# &lt;span style="font-weight:bold;"&gt;more /root/automate/automate.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;#!/bin/sh&lt;br /&gt;tgl='date'&lt;br /&gt;echo "------------------------- [ $tgl ] ---------------------------" &gt;&gt;&lt;br /&gt;root/automate.output.automate.log&lt;br /&gt;/usr/bin/ndb_mgm &lt;&lt; EOF &gt;&gt; /root/automate/output.automate.log 2&gt;&amp;1&lt;br /&gt;show&lt;br /&gt;start backup&lt;br /&gt;show&lt;br /&gt;quit&lt;br /&gt;EOF&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;&lt;br /&gt;Hasil backup bisa disimpan di "/var/lib/mysql-cluster/BACKUP @dbase-1. Hal ini dikarenakan output dari management console menyatakan bahwa NDB id=4 (pada dbase-2) tidak terkoneksi, sehingga proses backup hanya dilakukan pada node 3 (db-1).&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;&lt;br /&gt;+++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-3374372542833458304?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l4_-o97eSY-fcgG6W_bckoGE0Ho/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l4_-o97eSY-fcgG6W_bckoGE0Ho/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l4_-o97eSY-fcgG6W_bckoGE0Ho/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l4_-o97eSY-fcgG6W_bckoGE0Ho/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/eCr8LVcbJ6U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/3374372542833458304/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/01/database-clustering-high-availability.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/3374372542833458304?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/3374372542833458304?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/eCr8LVcbJ6U/database-clustering-high-availability.html" title="Database Clustering, High Availability, dan Load Balancing." /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/01/database-clustering-high-availability.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHRn07eSp7ImA9WxBRFEk.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-4182061084097097405</id><published>2010-01-02T23:18:00.001+07:00</published><updated>2010-01-02T23:18:57.301+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-02T23:18:57.301+07:00</app:edited><title>What is SSL ?</title><content type="html">SSL (Secure Sockets Layer) is the standard security technology for establishing an encrypted link between a web server and a browser. This link ensures that all data passed between the web server and browsers remain private and integral. SSL is an industry standard and is used by millions of websites in the protection of their online transactions with their customers.&lt;br /&gt;&lt;br /&gt;To be able to create an SSL connection a web server requires an SSL Certificate. When you choose to activate SSL on your web server you will be prompted to complete a number of questions about the identity of your website and your company. Your web server then creates two cryptographic keys - a Private Key and a Public Key.&lt;br /&gt;&lt;br /&gt;The Public Key does not need to be secret and is placed into a Certificate Signing Request (CSR) - a data file also containing your details. You should then submit the CSR. During the SSL Certificate application process, the Certification Authority will validate your details and issue an SSL Certificate containing your details and allowing you to use SSL. Your web server will match your issued SSL Certificate to your Private Key. Your web server will then be able to establish an encrypted link between the website and your customer's web browser.&lt;br /&gt;&lt;br /&gt;The complexities of the SSL protocol remain invisible to your customers. Instead their browsers provide them with a key indicator to let them know they are currently protected by an SSL encrypted session - the lock icon in the lower right-hand corner, clicking on the lock icon displays your SSL Certificate and the details about it. All SSL Certificates are issued to either companies or legally accountable individuals.&lt;br /&gt;&lt;br /&gt;Typically an SSL Certificate will contain your domain name, your company name, your address, your city, your state and your country. It will also contain the expiration date of the Certificate and details of the Certification Authority responsible for the issuance of the Certificate. When a browser connects to a secure site it will retrieve the site's SSL Certificate and check that it has not expired, it has been issued by a Certification Authority the browser trusts, and that it is being used by the website for which it has been issued. If it fails on any one of these checks the browser will display a warning to the end user letting them know that the site is not secured by SSL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-4182061084097097405?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-LeomoYXpoFNKZ3fAjcMvPWZmbI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-LeomoYXpoFNKZ3fAjcMvPWZmbI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-LeomoYXpoFNKZ3fAjcMvPWZmbI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-LeomoYXpoFNKZ3fAjcMvPWZmbI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/K8GvgO0LqDY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/4182061084097097405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/01/what-is-ssl.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/4182061084097097405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/4182061084097097405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/K8GvgO0LqDY/what-is-ssl.html" title="What is SSL ?" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/01/what-is-ssl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cNRXw-fCp7ImA9WxBRFEk.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-5632482069172673655</id><published>2010-01-02T23:15:00.000+07:00</published><updated>2010-01-02T23:18:14.254+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-02T23:18:14.254+07:00</app:edited><title /><content type="html">"i-Video", Indosat Video. Adalah merupakan suatu layanan berbasis video untuk semua pelanggan dari Indosat Provider. Indosat adalah salah satu provider besar yang ada di Indonesia. Dengan layanan ini, memungkinkan pelanggan dapat melakukan interaksi dengan menggunakan video lewat media 3G. &lt;br /&gt;&lt;br /&gt;Layanan i-video ini memiliki kekurangan dan kelebihan. Untuk kekurangannya, seperti ;&lt;br /&gt; 1. Masalah utamanya adalah belum meratanya coverage area yang mencakup tersedianya sinyal 3G. Saat ini, sinyal 3G &lt;br /&gt;             masih jauh lebih banyak dikuasai oleh provider&lt;br /&gt;      dari Telkomsel. Tentunya pelanggan tidak semua dapat menggunakan layanan ini. Misalnya, di daerah-daerah yang   &lt;br /&gt;             bukan termasuk kota besar.&lt;br /&gt; 2. Saat ini, semua provider dari telekomunikasi masih membutuhkan register manual untuk dapat menggunakan 3G. &lt;br /&gt;&lt;br /&gt;Semoga, provider-provider di indonesia dapat memperbaiki akan hal ini. Sehingga pelanggan yang awam, dapat secara langsung menggunakan layanan ini secara langsung. Tanpa harus perlu melakukan register 3G, dll.&lt;br /&gt;&lt;br /&gt;Sedangkan bila dilihat kelebihannya ;&lt;br /&gt; 1. Layanan ini menggunakan aplikasi yang interaktif. Sehingga user dapat menggunakan layanan ini dengan mengikuti &lt;br /&gt;             petunjuk yang disampaikan oleh, host i-video.&lt;br /&gt; 2. Layanan i-video ini merupakan layanan pertama yang ada di Indonesia untuk soal menu interaktif.&lt;br /&gt; 3. Content yang ditawarkan sangat menyenangkan. Di isi dengan templates kartun yang lucu, dan cerita yang lucu. Untuk &lt;br /&gt;            greeting, kita dapat mengirimkan ucapan kepada teman, keluarga, rekan, dan pasangan dengan waktu yang dapat &lt;br /&gt;            ditentukan untuk jam dan tanggal. Misalnya, kita ingin mengirimkan video pribadi untuk ucapan selamat ulang tahun &lt;br /&gt;            kepada pasangan yang akan diberikan notifikasi lewat sms tepat pada jam 12 malam. Padahal, kita merekam video &lt;br /&gt;            pribadi tersebut mungkin pada saat siang. &lt;br /&gt; 4. GRATIS, Tentu siapa yang tidak ingin dengan kata gratis tersebut. Tetapi gratis disini adalah, gratis bagi penerima video &lt;br /&gt;             ucapan, dll untuk dapat melihat video yang dikirimkan kepadanya gratis untuk dilihat sebanyak 1 kali. Selebihnya, &lt;br /&gt;             menggunakan pulsa dengan tarif normal dari Indosat.&lt;br /&gt; 5. Untuk melakukan panggilan "video call" ke layanan tersebut, dikenakan tarif normal. &lt;br /&gt;&lt;br /&gt;Menggunakan layanan ini sangat mudah. Kita hanya cukup melakukan panggilan video ("Video Call") ke nomer 636. Dan untuk melihat video yang dikirimkan kepada kita, kita dapat melakukan video call ke 637 untuk gratis 1 kali.&lt;br /&gt;&lt;br /&gt;i-Video adalah suatu produk dari PT. Mantenboshi Creative Indonesia. Perusahaan tersebut bekerja sama dengan provider Indosat untuk dapat membuat suatu layanan yang dapat memberikan interaktif dengan cara baru di dunia 3G. Seperti kita tahu, indosat selalu mengembangkan inovasinya untuk dapat memberikan layanan yang dapat mengikuti kemajuan telekomunikasi dan kepuasaan pelanggannya. System dari i-Video tersebut dirancang oleh Maltech,inc. Merupakan salah satu perusahaan Jepang yang turut berperan besar, dalam pembuatan system i-Video tersebut. Kita tahu, Jepang adalah merupakan salah satu negara penemu dari teknologi 3G.&lt;br /&gt;&lt;br /&gt;Bila melihat dari kualitas layanan ini, kita harapkan semua provider telekomunikasi di Indonesia dapat juga mengikuti trend seperti yang disediakan oleh Indosat. &lt;br /&gt;Sehingga, manfaat adanya 3G dapat benar-benar kita gunakan setiap saat. &lt;br /&gt;Bagaimana pun, kepuasaan pelanggan adalah hal yang terpenting dari yang penting..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-5632482069172673655?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Uyi6mefaL1gC6m3tdzJug-rni18/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Uyi6mefaL1gC6m3tdzJug-rni18/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Uyi6mefaL1gC6m3tdzJug-rni18/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Uyi6mefaL1gC6m3tdzJug-rni18/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/RiKmMG5VrhU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/5632482069172673655/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/01/i-video-indosat-video.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/5632482069172673655?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/5632482069172673655?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/RiKmMG5VrhU/i-video-indosat-video.html" title="" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/01/i-video-indosat-video.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4HQXk9fyp7ImA9WxBRFEk.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-2089217120857384232</id><published>2010-01-02T23:14:00.000+07:00</published><updated>2010-01-02T23:15:30.767+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-02T23:15:30.767+07:00</app:edited><title>HOWTO: Securing A Website With Client SSL Certificates</title><content type="html">Let's assume that you have an Apache webserver and a website that you want VERY finite access controls on. You could do it a number of ways, right?&lt;br /&gt;&lt;br /&gt;You could craft a clever login page and use cookies, session IDs, etc.&lt;br /&gt;&lt;br /&gt;You could use a simple authentication method like .htaccess.&lt;br /&gt;&lt;br /&gt;Or, you could create a custom SSL certificate and give that certificate to very specific users that should have access to your site. In a perfect world, only these users could communicate with your site AND the connection would be secured via the magic of SSL.&lt;br /&gt;&lt;br /&gt;I know what you're thinking.&lt;br /&gt;&lt;br /&gt;"But Chief, what if someone STEALS your certificate?"&lt;br /&gt;&lt;br /&gt;Hey, what if someone steals your car keys? :-)&lt;br /&gt;&lt;br /&gt;I have always wanted a good how-to document on doing this, and reader 'Null' (who I must also point out is a heck of a nice guy, and a fun sort to hang out at Def Con with) came through big time.&lt;br /&gt;&lt;br /&gt;Without further ado, here is Null's write-up on the subject. Enjoy! ~ Chief&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reader 'Null' writes:&lt;br /&gt;&lt;br /&gt;Someone has been bugging me to write this up since I figured it out and figuring it out has been a thorn in my side for a couple years.&lt;br /&gt;&lt;br /&gt;About a week ago, things just clicked and I figured it out.&lt;br /&gt;&lt;br /&gt;This isn't authentication in the classical sense; you are just saying which SSL certificates (that you have signed) you would like to be able to access a particular site.&lt;br /&gt;&lt;br /&gt;This is in no way a new thing; there is just little to no usable documentation on how to accomplish this. The impetus for finally tackling this problem was setting up an internal wiki for use at $work that we can control who will be able to see it since our department is privy to info that shouldn't be available to all.&lt;br /&gt;&lt;br /&gt;The interesting thing here is that a few of us are road warriors and need access to everything from anywhere meaning IP based ACL's are out and plain authentication is easy to grab on the wire (well not really but it is safer to assume it is by default). The best of both worlds would be to use some sort of decent encryption combined with a filtering mechanism which will allow us to say who we like versus who we don't.&lt;br /&gt;&lt;br /&gt;The solution is signed certificates under SSL (in this case Apache's mod_ssl) as the distinguished name of an SSL certificate is perfect for filtering and the SSL handshake is about as secure as you are going to get on the wild wild web (assuming the server and client keys are trusted and not self signed but more on that later).&lt;br /&gt;&lt;br /&gt;I first tried this using FreeBSD for this though getting and installing packages for PHP+Apache+MySQL+Mediawiki was far too much inconsistency for me to handle. There were too many package based (too lazy to compile source in the ports tree) inconsistencies so I just gave up and went to my old faithful OpenBSD. This should also work on any other OS with mod_ssl but considering I wanted to setup a Mediawiki I had significant overhead.&lt;br /&gt;&lt;br /&gt;There are a few steps needed to get this going.&lt;br /&gt;They are:&lt;br /&gt;1) Setup openssl for use in being a certificate authority.&lt;br /&gt;2) Create a root certificate authority key.&lt;br /&gt;3) Create a web server key signed by your certificate authority's key.&lt;br /&gt;4) Setup apache.&lt;br /&gt;5) Create client certificates.&lt;br /&gt;6) Install client certificates on hosts.&lt;br /&gt;7) Profit.&lt;br /&gt;&lt;br /&gt;1)&lt;br /&gt;This was pretty much hit and miss and I took info from all over the Internet. Unfortunately no one place gave me enough information to hang myself so I stole bits and pieces from each one until it worked. Get yourself a nice large caffeinated beverage... if you make mistakes you'll need the concentration and tenacity to work it out.&lt;br /&gt;&lt;br /&gt;The very first thing to do here is to setup your openssl.cnf file (in OpenBSD /etc/ssl/openssl.cnf). Setup your root common name, organization and all that jazz. Don't skip this or use defaults since the distinguished name is our filtering mechanism.&lt;br /&gt;&lt;br /&gt;Now we setup openssl to recognize us as the default certificate authority.&lt;br /&gt;&lt;br /&gt;[ ca ]&lt;br /&gt;default_ca = foo&lt;br /&gt;&lt;br /&gt;Openssl will now look for a section called foo with the various knobs needed.&lt;br /&gt;[ foo ]&lt;br /&gt;dir = /etc/ssl/private&lt;br /&gt;database = $dir/index.txt&lt;br /&gt;serial = $dir/serial&lt;br /&gt;private_key = $dir/ca.key&lt;br /&gt;certificate = $dir/ca.crt&lt;br /&gt;default_days = 3650&lt;br /&gt;default_md = md5&lt;br /&gt;new_certs_dir = $dir&lt;br /&gt;policy = policy_match&lt;br /&gt;&lt;br /&gt;After you've set the defaults and tuned the various other knobs to your liking you need to define the policy (specifically 'policy_match').&lt;br /&gt;[ policy_match ]&lt;br /&gt;countryName = match&lt;br /&gt;stateOrProvinceName = match&lt;br /&gt;organizationName = match&lt;br /&gt;organizationalUnitName = match&lt;br /&gt;commonName = supplied&lt;br /&gt;emailAddress = optional&lt;br /&gt;&lt;br /&gt;This just says that the country, state, organization and unit names must match if the certificate is valid. The commonName is supplied in the certificate you receive and email address on the certificate is optional. For my purposes here, this is enough as I'm going to allow anyone issued a key for my department access to the department wiki.&lt;br /&gt;&lt;br /&gt;Because I'm lazy I chose 10 years as the default key validity period. You can choose this to be anything you want with the caveat is the longer the period the less work for you (and the less secure your keys are).&lt;br /&gt;&lt;br /&gt;2)&lt;br /&gt;Now OpenSSL knows about our CA (even though the keys haven't been generated or signed yet) so now we move on to creating the root Certificate Authority key.&lt;br /&gt;&lt;br /&gt;new_ca.sh:&lt;br /&gt;#!/bin/sh&lt;br /&gt;# Generate the key.&lt;br /&gt;openssl genrsa -out private/ca.key&lt;br /&gt;# Generate a certificate request.&lt;br /&gt;openssl req -new -key private/ca.key -out private/ca.csr&lt;br /&gt;# Self signing key is bad... this could work with a third party signed key... registeryfly has them on for $16 but I'm too cheap lazy to get one on a lark.&lt;br /&gt;# I'm also not 100% sure if any old certificate will work or if you have to buy a special one that you can sign with. I could investigate further but since this&lt;br /&gt;# service will never see the light of an unencrypted Internet see the cheap and lazy remark.&lt;br /&gt;# So self sign our root key.&lt;br /&gt;openssl x509 -req -days 3650 -in private/ca.csr -signkey private/ca.key -out private/ca.crt&lt;br /&gt;# Setup the first serial number for our keys... can be any 4 digit hex string... not sure if there are broader bounds but everything I've seen uses 4 digits.&lt;br /&gt;echo FACE &gt; private/serial&lt;br /&gt;# Create the CA's key database.&lt;br /&gt;touch private/index.txt&lt;br /&gt;# Create a Certificate Revocation list for removing 'user certificates.'&lt;br /&gt;openssl ca -gencrl -out /etc/ssl/private/ca.crl -crldays 7&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is your root certificate authority key. I would suggest giving it a nice strong password and not storing it on the webserver or network the webserver it is on (of course 99% of us will not heed that warning but hell for completion's sake it is healthy to mention).&lt;br /&gt;&lt;br /&gt;3)&lt;br /&gt;All this effort is useless if we don't have a web server so let's create a key and sign it with our CA's key.&lt;br /&gt;&lt;br /&gt;new_server.sh:&lt;br /&gt;# Create us a key. Don't bother putting a password on it since you will need it to start apache. If you have a better work around I'd love to hear it.&lt;br /&gt;openssl genrsa -out private/apache.key&lt;br /&gt;# Take our key and create a Certificate Signing Request for it.&lt;br /&gt;openssl req -new -key apache.key -out apache.csr&lt;br /&gt;# Sign this bastard key with our bastard CA key.&lt;br /&gt;openssl ca -in private/apache.csr -cert private/ca.crt -keyfile private/ca.key -out private/apache.crt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4) Now we've got our CA and web server's key let's setup apache to deal with it, so let's get over the Apache SSL boiler plate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt; IfDefine SSL &gt;&lt;br /&gt;AddType application/x-x509-ca-cert .crt&lt;br /&gt;AddType application/x-pkcs7-crl .crl&lt;br /&gt;&lt; /IfDefine&gt;&lt;br /&gt;&lt;br /&gt;&lt; IfModule mod_ssl.c &gt;&lt;br /&gt;SSLPassPhraseDialog builtin&lt;br /&gt;SSLSessionCache dbm:logs/ssl_scache&lt;br /&gt;SSLSessionCacheTimeout 300&lt;br /&gt;SSLMutex sem&lt;br /&gt;SSLRandomSeed startup builtin&lt;br /&gt;SSLRandomSeed connect builtin&lt;br /&gt;SSLRandomSeed startup file:/dev/arandom 512&lt;br /&gt;SSLLog logs/ssl_engine_log&lt;br /&gt;SSLLogLevel info&lt;br /&gt;&lt; /IfModule &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Blah, ugly ugly stuff but once you understand it is not so bad.&lt;br /&gt;Now let's setup the rest.&lt;br /&gt;&lt;br /&gt;# Mon deus, I'm a lazy bastard.&lt;br /&gt;&lt;br /&gt;&lt; VirtualHost _default_:443 &gt;&lt;br /&gt;DocumentRoot /var/www/htdocs.ssl/&lt;br /&gt;# ServerName must be the same as the CommonName given for the web server certificate.&lt;br /&gt;ServerName foo.foo.net&lt;br /&gt;ServerAdmin root@foo.net&lt;br /&gt;ErrorLog logs/error_log&lt;br /&gt;TransferLog logs/access_log&lt;br /&gt;SSLEngine on&lt;br /&gt;# Remember the apache certificate we created? Well let apache know we can use it.&lt;br /&gt;SSLCertificateFile /etc/ssl/private/apache.crt&lt;br /&gt;# Only necessary if the key is not supplied in ther certificate.&lt;br /&gt;SSLCertificateKeyFile /etc/ssl/private/apache.key&lt;br /&gt;# CA Validation!&lt;br /&gt;# Remember only certificate is needed not the KEY.&lt;br /&gt;SSLCACertificateFile /etc/ssl/private/ca.crt&lt;br /&gt;&lt;br /&gt;# REQUIRE valid certificates from clients.&lt;br /&gt;SSLVerifyClient require&lt;br /&gt;# FakeBasicAuth... if cert is good, auth is granted.&lt;br /&gt;SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars&lt;br /&gt;CustomLog logs/ssl_request_log \&lt;br /&gt;"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"&lt;br /&gt;&lt;br /&gt;# Depth is 1 because our root is a self signed cert, increase for the number of certs in the chain (ie. &amp;gt2 for purchased certificated that were not self signed).&lt;br /&gt;SSLVerifyDepth 1&lt;br /&gt;&lt;br /&gt;# Note we can change the rules for any Location, Directory, URL we wish.&lt;br /&gt;# This is very flexible as we can allow some types of certificates in one place&lt;br /&gt;# but not in others.&lt;br /&gt;&amp;ltLocation /wiki&gt;&lt;br /&gt;# Let's also provide a list of the certificates we want to purposely deny.&lt;br /&gt;SSLCARevocationFile /etc/ssl/private/ca.crl&lt;br /&gt;&lt;br /&gt;# Time for the Authentication filtering mojo...&lt;br /&gt;SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ and %{SSL_CLIENT_S_DN_O} eq "Foo Net" and %{SSL_CLIENT_S_DN_OU } in {"Department of Department Creation"} )&lt;br /&gt;&lt;/Location&gt;&lt;br /&gt;&lt;/VirtualHost&gt;&lt;br /&gt;&lt;br /&gt;&lt;/IfDefine&gt;&lt;br /&gt;&lt;br /&gt;This is kind of weird here so I'll break each of these down.&lt;br /&gt;%{SSL_CIPHER} !~ m/^(EXP|NULL)-/ &lt;--- Certificate must not be empty or expired.&lt;br /&gt;%{SSL_CLIENT_S_DN_O} eq "Foo Net" &lt;--- The organization string in the signed certificate's distinguished name must be "Foo Net"&lt;br /&gt;%{SSL_CLIENT_S_DN_OU} in {"Department of Department Creation"} &lt;-- The organizational unit string in the signed certificate's distinguished name must bee "Department of Department Creation"&lt;br /&gt;&lt;br /&gt;The SSLRequire line states that this statement must evaluate to true if access will be granted. Note this is a chained and meaning all or nothing and since I'm only validating two parts of the certificate (because I'm lazy) we let OpenSSL deal with policy matches. This is terrible for the Internet so you should be checking the common names (ie. names of people you assigned certs to and setup a revocation list for then they are no longer welcome).&lt;br /&gt;&lt;br /&gt;Start up apache (make sure to set httpd_flags="-DSSL" in /etc/rc.conf for OpenBSD) via apachectl startssl.&lt;br /&gt;Check for errors and make sure the damned thing is running. You won't have access to https://server/wiki because the SSL conversation won't work (since you haven't a corresponding valid certificate in your browser yet).&lt;br /&gt;&lt;br /&gt;5)&lt;br /&gt;Now let's create some certificates for our clients/users/losers/friends/random folks...&lt;br /&gt;&lt;br /&gt;new_user.sh:&lt;br /&gt;#!/bin/sh&lt;br /&gt;# The base of where our SSL stuff lives.&lt;br /&gt;base="/etc/ssl/private"&lt;br /&gt;# Were we would like to store keys... in this case we take the username given to us and store everything there.&lt;br /&gt;mkdir -p $base/users/$1/&lt;br /&gt;&lt;br /&gt;# Let's create us a key for this user... yeah not sure why people want to use DES3 but at least let's make us a nice big key.&lt;br /&gt;openssl genrsa -des3 -out $base/users/$1/$1.key 1024&lt;br /&gt;# Create a Certificate Signing Request for said key.&lt;br /&gt;openssl req -new -key $base/users/$1/$1.key -out $base/users/$1/$1.csr&lt;br /&gt;# Sign the key with our CA's key and cert and create the user's certificate out of it.&lt;br /&gt;openssl ca -in $base/users/$1/$1.csr -cert $base/ca.crt -keyfile $base/ca.key -out $base/users/$1/$1.crt&lt;br /&gt;&lt;br /&gt;# This is the tricky bit... convert the certificate into a form that most browsers will understand PKCS12 to be specific.&lt;br /&gt;# The export password is the password used for the browser to extract the bits it needs and insert the key into the user's keychain.&lt;br /&gt;# Take the same precaution with the export password that would take with any other password based authentication scheme.&lt;br /&gt;openssl pkcs12 -export -clcerts -in $base/users/$1/$1.crt -inkey $base/users/$1/$1.key -out $base/users/$1/$1.p12&lt;br /&gt;&lt;br /&gt;Wow now you have signed certificates whose distinguished names will match your CA and Web's keys.&lt;br /&gt;Now you have to get these things to your clients to use them. As well keep in mind that the .p12 file for each user contains both the public and private keys so if your user doesn't keep that key safe and use a decent export password then this certificate is about as good as writing an all access password with a sharpie on a post-it for display in a public place.&lt;br /&gt;&lt;br /&gt;On the inverse when you need to remove a certificate's access you can prematurely expire the certificate by adding it to the Certificate Revocation List&lt;br /&gt;&lt;br /&gt;remove_user.sh&lt;br /&gt;#!/bin/sh&lt;br /&gt;# Revoke a certificate and update the CRL.&lt;br /&gt;base=/etc/ssl/private&lt;br /&gt;# Revoke a particular user's certificate.&lt;br /&gt;openssl -revoke $base/$1/$1.pem&lt;br /&gt;# Update the CRL with the new info from the database (ie. index.txt)&lt;br /&gt;openssl ca -gencrl -out $base/ca.crl -crldays 7&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6)&lt;br /&gt;Send the username.p12 to clients. Don't bother sending the other bits. They are more useful to you should the user lose the thing.&lt;br /&gt;&lt;br /&gt;FireFox Setup For Clients:&lt;br /&gt;Go into preferences.&lt;br /&gt;Advanced.&lt;br /&gt;View Certificates.&lt;br /&gt;Import.&lt;br /&gt;Enter master password for FireFox (if you don't have one set one here otherwise stolen laptop = easy access).&lt;br /&gt;Enter in the export password given to you by the dude who created your cert.&lt;br /&gt;Hit OK like a mad man.&lt;br /&gt;&lt;br /&gt;Go to site and it will ask you if you want to send the certificate in question (look at the distinguished name to make sure it matches what you expect it to).&lt;br /&gt;&lt;br /&gt;Now you have access!&lt;br /&gt;&lt;br /&gt;Safari Setup For Clients.&lt;br /&gt;Open a shell.&lt;br /&gt;open username.p12&lt;br /&gt;Keychain access will open up and ask you what chain to import into... choose 'login' and enter export password.&lt;br /&gt;Now safari should work!&lt;br /&gt;&lt;br /&gt;7)&lt;br /&gt;Now go talk and wiki with your encrypted cohorts in an encrypted fashion to all your hearts content.&lt;br /&gt;&lt;br /&gt;I didn't go through each of the SSL user input steps since I figured this audience can figure it out. If not let me know and I'll be even more verbose on the topic.&lt;br /&gt;&lt;br /&gt;It would be really nice to get this working with valid third party signed keys thereby making this safe for the Internet at large and thereby open to a setting up a private wiki/forum/whatever for a small group of friends (ie. SSLVerifyDepth &amp;gt1). Self signed keys are bad; really bad; since they can be spoofed easily (ie generate a new self signed certificate and MITM the hell out of the site since one invalid certificate is as good as any other). Until someone has figured out of a nice paid certificate will work then please don't use this on the Internet at large... yeah cheap certs are still largely 'unsafe' but are leagues safer than free self signed ones.&lt;br /&gt;&lt;br /&gt;On second thought I don't think this will be possible without an inordinate amount of money as I just realized most CA's would dissalow keys to sign others as then you wouldn't need to pay them after the first key.&lt;br /&gt;&lt;br /&gt;If you need to know how to check to see if your key can sign others:&lt;br /&gt;openssl x509 -in third_party_issued_key.pem -noout -text&lt;br /&gt;Look for this:&lt;br /&gt;X509v3 Basic Constraints: critical&lt;br /&gt;CA:FALSE&lt;br /&gt;&lt;br /&gt;CA:FALSE means no deal. We will have to live with our insecure self signed keys. So be wary and not use this stuff on the Internet at large (or at least for anything you truely care about).&lt;br /&gt;&lt;br /&gt;With that given, my future work will have be to figure out a way to make this easier and less of a hackish mess. As well some time should be spent to make the SSLRequire statement check more of the fields in the distinguished name. More fields checked makes for slightly increased certainty.&lt;br /&gt;&lt;br /&gt;You can make it even better by using htaccess info and the keys for a cheap/crappy two factor authentication. The biggest benefit on the Internet at large would be for corporate Intranet sites that restrict what users can see on the web server in question without having to give them new tokens, passwords, etc. Pretty flexible if you ask me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-2089217120857384232?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bjlAiP8kXSvRSpxmOvUPSazEBZE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bjlAiP8kXSvRSpxmOvUPSazEBZE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bjlAiP8kXSvRSpxmOvUPSazEBZE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bjlAiP8kXSvRSpxmOvUPSazEBZE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/vfXs_xWXzog" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/2089217120857384232/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2010/01/howto-securing-website-with-client-ssl.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/2089217120857384232?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/2089217120857384232?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/vfXs_xWXzog/howto-securing-website-with-client-ssl.html" title="HOWTO: Securing A Website With Client SSL Certificates" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2010/01/howto-securing-website-with-client-ssl.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIGRX46fyp7ImA9WxBSEUw.&quot;"><id>tag:blogger.com,1999:blog-6050875336933798901.post-6600154267533650889</id><published>2009-12-18T12:08:00.000+07:00</published><updated>2009-12-18T12:18:44.017+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-18T12:18:44.017+07:00</app:edited><title /><content type="html">&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Arial"&gt;Did you ever got this error message, "Could not start the "application" Service service on  Local Computer. &lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Arial"&gt;Error 1069 : The Service did not start due to a logon failure.”&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:Arial, serif;font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-size:10px;"&gt;&lt;div&gt;I ever got this message when i try to start an application on windows server 2003 or NT. &lt;/div&gt;&lt;div&gt;I try to retype the password in "services" menu. But, it still did not work.&lt;/div&gt;&lt;div&gt;Now, i check the permission on file that refer to path that show in "services". And i set it to full access for everyone.&lt;/div&gt;&lt;div&gt;And then, i back to the "services" menu again, and starting this. &lt;/div&gt;&lt;div&gt;And it's working now. &lt;/div&gt;&lt;div&gt;This issue show, it cannot to access the file on windows services. It needs to make sure that the files is able to execute.&lt;/div&gt;&lt;div&gt;So if you got this message, try to register in Control Panel &gt; Administrative &gt; Services. And Type the password and start it after you put your password.&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6050875336933798901-6600154267533650889?l=parapatnotes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1PuMaGQkIbzZ636RXonmTmSxYjc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1PuMaGQkIbzZ636RXonmTmSxYjc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1PuMaGQkIbzZ636RXonmTmSxYjc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1PuMaGQkIbzZ636RXonmTmSxYjc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ParapatNotes/~4/T3D_a9-1YJg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://parapatnotes.blogspot.com/feeds/6600154267533650889/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://parapatnotes.blogspot.com/2009/12/did-you-ever-got-this-error-message.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/6600154267533650889?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6050875336933798901/posts/default/6600154267533650889?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ParapatNotes/~3/T3D_a9-1YJg/did-you-ever-got-this-error-message.html" title="" /><author><name>Parapat's Notes</name><uri>http://www.blogger.com/profile/11319918116435876412</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_l2lzW0peKlg/S0_dcqPP3xI/AAAAAAAAAAM/oP9oqealul0/S220/DSC00261.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://parapatnotes.blogspot.com/2009/12/did-you-ever-got-this-error-message.html</feedburner:origLink></entry></feed>

