<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Kris Plunkett</title>
        <link>http://devcentral.f5.com/weblogs/kris/Default.aspx</link>
        <description>An intern's insight into IT.</description>
        <language>en-US</language>
        <copyright>Kris Plunkett</copyright>
        <generator>Subtext Version 2.1.1.1</generator>
        <image>
            <title>Kris Plunkett</title>
            <url>http://devcentral.f5.com/weblogs/images/RSS2Image.gif</url>
            <link>http://devcentral.f5.com/weblogs/kris/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Protocol of the Week: ARP (Address Resolution Protocol)</title>
            <link>http://devcentral.f5.com/weblogs/kris/archive/2008/10/05/protocol-of-the-week-arp-address-resolution-protocol.aspx</link>
            <description>&lt;div id=":6z" class="ArwC7c ckChnd"&gt;
&lt;div dir="ltr"&gt;The Address Resolution Protocol lives in some of the deeper and darker realms of the networking stack and is never of any concern to the every day user.  Nonetheless, it provides a critical service, without which IP-based networking could not function.  In OSI terms, ARP is a "connecting protocol" that lies between the Networking layer and the Data Link protocol known as Ethernet, and since we have discussed neither IP's network protocol (namely IP itself) nor Ethernet, I'll briefly explain what we need to know of each to understand the role of ARP.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;All that we need to know about these two protocols that ARP glues together is how their addressing scheme works.  IP is responsible for assigning a unique (32-bit) address (looks like this: 24.120.50.23 and is simply called an "IP address") to each device on a network.  Ethernet&lt;img hspace="15" height="375" width="500" vspace="15" border="3" align="left" alt="" src="/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/2263726055_ed566b57d6.jpg" /&gt; has a similar addressing scheme, with three notable exceptions:  Addresses are 48-bit (looks like this: 00:01:D7:3E:E2:84 and is called a Medium Access Control (MAC) address), are assigned to each Network Interface Card (NIC) rather than to the device itself (one device can have multiple NICs), and only need to be unique among the NICs that are directly con&lt;img src="file:///C:/DOCUME~1/Kris/LOCALS~1/Temp/moz-screenshot.jpg" alt="" /&gt;nected to one another.  This latter difference is because the Data Link layer can't see past the devices that are directly connected to each other, while IP must consider networks of arbitrary size, where not all devices in the network are necessarily directly attached to one another.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
So why do we care about all of these addresses?  Well it just so happens that they are the things ARP glues together.  Remember, each layer on the networking stack knows nothing about any of the other layers (see the first bit on the &lt;a href="http://en.wikipedia.org/wiki/OSI_model"&gt;OSI model&lt;/a&gt; if this seems foreign to you).  So when IP has data to send, it will push it down the stack to Ethernet and give it the only piece of information it knows about the destination: its IP address.  Therefore IP says "Ethernet, please send this data to IP address 24.120.50.23."  Ethernet, naturally, has no clue where 24.120.50.23 is.  The only language it knows is that of MAC addresses.  Thus (get out your spoon for the alphabet soup) Ethernet must find the MAC address of the NIC that is attached to the device with the given IP address.  This is where ARP comes in.  Ethernet will broadcast an "ARP request" to all devices that it is attached to.  This request says "Hello everyone, please tell me which of you is attached to device with IP 24.120.50.23."  If a NIC on a connected device picks up this plea and confirms that the device it is attached to does indeed have this IP address, it will reply, "Good sir! I do own this IP address, so please send your data to me. My MAC address is 00:01:D7:3E:E2:84."  The original sender now knows where the data it got from the IP layer is supposed to go, and communication can proceed.  This information is then stored in a cache so that future communication with that IP address can happen without needing to send another ARP request.&lt;br /&gt;
&lt;br /&gt;
That's all there is to it, and if you think this sounds very simple, you're right.  ARP was intentionally kept small and simple to minimize overhead introduced in the lower layers.  Now, there are alternate forms of ARP, such as RARP (Reverse ARP) and GARP (Gratuitous ARP), that do complicate things a bit, but I will leave learning about them as exercises for the reader.&lt;br /&gt;
&lt;br /&gt;
Now, finally coming to BIG-IP and its dealings with ARP, it has come to my attention that BIG-IP does some tricky stuff with ARP to enable a feature known as "VLAN groups."  However, rather than doubling the size of this post, I will wait until next week, and thus postpone our next protocol, to divulge the juicy details on this nifty feature.  Until then!&lt;br /&gt;
&lt;p&gt;&lt;a href="http://www.rfc-editor.org/rfc/rfc826.txt"&gt;(RFC for ARP)&lt;/a&gt; - The official IETF document for the ARP protocol.  I will link to each protocol's RFC as I discuss them.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://devcentral.f5.com/weblogs/kris/aggbug/3683.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kris Plunkett</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/kris/archive/2008/10/05/protocol-of-the-week-arp-address-resolution-protocol.aspx</guid>
            <pubDate>Sun, 05 Oct 2008 22:48:11 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/kris/comments/3683.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/kris/archive/2008/10/05/protocol-of-the-week-arp-address-resolution-protocol.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/kris/comments/commentRss/3683.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Protocol of the Week</title>
            <link>http://devcentral.f5.com/weblogs/kris/archive/2008/09/26/protocol-of-the-week.aspx</link>
            <description>&lt;p&gt;My original motivation for joining the &lt;a href="http://devcentral.f5.com"&gt;DevCentral&lt;/a&gt; blogging community was an idea for a weekly blog post titled "Protocol of the Week".  The idea spawned from the desire to become acquainted with the protocols that govern modern day networking, from the small Local Area Network to the Internet itself.  A significant part of my work rests on these protocols and their impact on inter-computer communication, so the benefit to me for learning all I can about them is clear.  However, I knew that simply reading about them in books, blog posts, articles, and the &lt;a href="http://www.ietf.org/rfc.html"&gt;RFCs&lt;/a&gt; (Request for Comment...the official protocol documentation) would lead to a lonely and dreary road of learning.  The obvious solution: Reach out to and engage with the Web 2.0 community, and this is the perfect place for it.&lt;/p&gt;
&lt;p&gt;So each week I'm going to pick a protocol and write a short, high level piece on that protocol's origins, purpose, evolution, and (since I do work at F5 after all) how F5's products, specifically &lt;a href="http://www.f5.com/products/big-ip/"&gt;BIG-IP&lt;/a&gt;, handle/manipulate that protocol.&lt;/p&gt;
&lt;p&gt;Now my call to the readers:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/ProtocoloftheWeek_BFD8/5FBEC-bank-withdrawal_2.gif"&gt;&lt;img height="139" width="121" border="0" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/ProtocoloftheWeek_BFD8/5FBEC-bank-withdrawal_thumb.gif" alt="5FBEC-bank-withdrawal" style="border: 0px none ; margin: 15px;" /&gt;&lt;/a&gt;At the end of each post, I will say what protocol I will be learning about next so that I may invite readers to suggest resources for research.  If you know some great article about the upcoming protocol, please, please share it with me via e-mail or with everyone via a blog comment. &lt;/li&gt;
    &lt;li&gt;I am no expert on networking protocols.  As I said, this is a learning endeavor on my part, and though I will be careful with my research, inevitably I will say something not quite accurate or flat out wrong.  Thus I ask that you be (positively) critical of my work and let me know if you spot mistakes.  I would hate to misguide my learning and that of others. &lt;/li&gt;
    &lt;li&gt;If you have any feedback on the way I present this blog or its content, or you are dying to learn about some protocol, definitely let me know. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finally, I'd like to finish by briefly answering the question, "What exactly is (and isn't) a protocol?".  When someone goes to the bank to withdraw money, for example, they approach a teller and make their request.  The teller then asks for the account number and a form of identification.  They then pull up the account on their computer and verify that the identification matches the owner of the account.  The teller also needs to make sure that there is enough money left in the account to satisfy the request.  Assuming this is so, the teller makes the transaction and pulls out the appropriate amount of cash.  Finally, the teller counts the cash in front of the patron and hands them a receipt with their money.  People may not know this, but in doing this whole process, they are partaking in a protocol.  A protocol is a step-by-step outline on how to accomplish a particular task.  In this case the protocol's goal was a cash withdrawal from a bank account.  This particular example could get more complicated when you include all that happens behind the scenes in the computer software that is run to perform the actual transaction.&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/ProtocoloftheWeek_BFD8/o_osi-model-7-layers_6.png"&gt;&lt;img height="240" width="208" border="0" align="left" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/ProtocoloftheWeek_BFD8/o_osi-model-7-layers_thumb_2.png" alt="o_osi-model-7-layers" style="border: 0px none ; margin: 15px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Internet operates on a very large set of protocols, where each protocol defines how a particular networking task is accomplished.  &lt;a href="http://en.wikipedia.org/wiki/Internet_protocol"&gt;IP&lt;/a&gt; (Internet Protocol) defines how nodes on the Internet are uniquely addressed and how data is routable between these nodes.  &lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;TCP&lt;/a&gt; (Transmission Control Protocol) works on top of IP and defines a method for providing a reliable data stream between two nodes on the Internet.  &lt;a href="http://en.wikipedia.org/wiki/Http"&gt;HTTP&lt;/a&gt; (HyperText Transfer Protocol) works on top of TCP and defines how web pages and other data is transferred.  As noted, protocols sometimes use one another and therefore form a stack.  The most common categorization of this stack is called the &lt;a href="http://en.wikipedia.org/wiki/Osi_model"&gt;OSI model&lt;/a&gt;.  Together these protocols provide a standard by which varyin g software and hardware packages can communicate with each other over a network.  Not all sets of protocols, however, are compatible.  The ones listed above, and any those that are compatible with them, are called "IP-based" protocols and are the most popular today.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/ProtocoloftheWeek_BFD8/http_2.gif"&gt;&lt;img height="141" width="153" border="0" align="right" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/ProtocoloftheWeek_BFD8/http_thumb.gif" alt="http" style="border: 0px none ; margin: 15px;" /&gt;&lt;/a&gt;My last point is that protocols, though they define steps for accomplishing certain networking tasks, do NOT define exactly how those tasks should be done.  How software and hardware execute these protocols is called the protocol's implementation, and this varies from system to system.  Linux and Windows, though they both support IP-based networking and are able to communicate with one another, have different code and varying parameters that get the job done.  The standards only dictate enough information to guarantee interoperability between varying implementations.&lt;/p&gt;
&lt;p&gt;That's it, and I hope you stay tuned next Friday for our first protocol:  ARP (Address Resolution Protocol), which is a cornerstone of IP-based networking.&lt;/p&gt;
&lt;p&gt;Have a great weekend!&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/kris/aggbug/3657.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kris Plunkett</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/kris/archive/2008/09/26/protocol-of-the-week.aspx</guid>
            <pubDate>Sat, 27 Sep 2008 02:04:00 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/kris/comments/3657.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/kris/archive/2008/09/26/protocol-of-the-week.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/kris/comments/commentRss/3657.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Hello F5, Hello World</title>
            <link>http://devcentral.f5.com/weblogs/kris/archive/2008/09/18/hello-f5-hello-world.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/HelloF5HelloWorld_E9C4/qbasic_2.jpg"&gt;&lt;img height="233" border="0" align="right" width="233" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/HelloF5HelloWorld_E9C4/qbasic_thumb.jpg" alt="qbasic" style="border: 0px none ;" /&gt;&lt;/a&gt;When I was 12 years old, with school out and most of my local friends out of town, I spent the better part of an entire summer cooped up at home with not much to do.  This was years before I would be cruising the streets of Olympia with my slicked out '95 Dodge Neon.  So what did I do?  I discovered the inner geek in me through a 1000+ page QBasic book that I had borrowed from a friend's mom's dusty bookshelf.  I had been playing computer games for almost three years on our family's Gateway (Pentium 120Mhz, 16MB RAM, 1.2GB HDD...what more could you need?), everything from Doom, Dune 2, to SimCity, but it wasn't until I opened that book and saw computer code for the first time that I became fascinated with the inner workings of these, by this time, ubiquitous machines.&lt;/p&gt;
&lt;p&gt;Ten years later I find myself deep in my second year as an intern here at F5 Networks, one of the greatest software engineering gigs this side of the Mississippi.  Where most of the big software names hire college interns for a summer only, taking them in June and spitting them back out in September, F5 hires most interns with the intention of keeping them around until they're ripe for the picking; that is, until they graduate and are able to work full-time.  Doesn't it make sense though?  First, three months is hardly enough time for anyone, even a seasoned professional, to become familiar with a software company's engineering practices.  Second, once you've got an intern up to speed and (at least somewhat) productive, w&lt;a href="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/HelloF5HelloWorld_E9C4/f5-logo-intern.gif"&gt;&lt;img height="85" border="0" align="left" width="345" src="http://devcentral.f5.com/weblogs/images/devcentral_f5_com/weblogs/kris/WindowsLiveWriter/HelloF5HelloWorld_E9C4/f5-logo-intern_thumb.gif" alt="f5-logo-intern" style="border: 0px none ; margin: 5px;" /&gt;&lt;/a&gt;hy would you throw that away?  So in December, when I graduate from the University of Washington with my B.S. in Computer Engineering, I hope to get the chance to reward the best ADN player in today's market with yet another dedicated and driven engineer, while rewarding myself with a more permanent position at the only place where the beer flows freely, every Beer Friday that is.&lt;/p&gt;
&lt;p&gt;The greatest part about an internship like this, though, is the opportunity to learn from and get connected with a professional community of computer engineers.  Needless to say, I was thrilled when I found out that I could have my very own blog here on DevCentral where I can reach out to F5 and its beneficiaries, the many computing professionals who visit DevCentral daily, with my thoughts.  So Hello World, Hello F5, welcome and stay tuned, 'cause I have much more to come.&lt;/p&gt;&lt;img src="http://devcentral.f5.com/weblogs/kris/aggbug/3630.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kris Plunkett</dc:creator>
            <guid>http://devcentral.f5.com/weblogs/kris/archive/2008/09/18/hello-f5-hello-world.aspx</guid>
            <pubDate>Thu, 18 Sep 2008 23:40:31 GMT</pubDate>
            <wfw:comment>http://devcentral.f5.com/weblogs/kris/comments/3630.aspx</wfw:comment>
            <comments>http://devcentral.f5.com/weblogs/kris/archive/2008/09/18/hello-f5-hello-world.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://devcentral.f5.com/weblogs/kris/comments/commentRss/3630.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>