Skip to content

Instantly share code, notes, and snippets.

@arntzy
Last active April 14, 2022 10:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arntzy/425b893e0284803fe140 to your computer and use it in GitHub Desktop.
Save arntzy/425b893e0284803fe140 to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "",
"signature": "sha256:d071dab08129712015ba4fc1fdc1e6b3d325a52a9ceb1f66bde3bc136493d1f5"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Prerequisites for learning about ```ifconfig```... "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####If you don't know what I mean when I say \"run ```ifconfig``` from the command line\", this guide might not be for you...\n",
"\n",
"####However, to learn a little bit about command line basics, check out this great introductory tutorial:\n",
"\n",
"[Introduction to the Mac OS X Command Line](http://blog.teamtreehouse.com/introduction-to-the-mac-os-x-command-line)\n",
"\n",
"####This information below is presented in an ipython notebook so you can run some of this code on your own computer. To find out what an ipython notebook is and how to install it, check out these links:\n",
"\n",
"[What is an ipython notebook?](http://ipython.org/notebook.html)\n",
"\n",
"[How do I install it?](http://www.masnun.com/2014/07/22/installing-ipython-notebook-on-os-x.html)\n",
"\n",
"####If you have ipython notebook installed, you can now download this notebook and run the examples on your computer."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####...and now that you are an expert from the command line..."
]
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"What does the ```ifconfig``` tool tell me about my network interfaces?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####**`ifconfig`** is a program used by unix-like operating systems (including Mac OSX) to configure network interfaces on a system. \n",
"\n",
"####This ipython notebook is an exploration of **`ifconfig`**'s output with executable examples. \n",
"\n",
"####When I run **`ifconfig`** from the terminal using Mac OS X (Yosemite) I get this output:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384\n",
"\toptions=3<RXCSUM,TXCSUM>\n",
"\tinet6 ::1 prefixlen 128 \n",
"\tinet 127.0.0.1 netmask 0xff000000 \n",
"\tinet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 \n",
"\tnd6 options=1<PERFORMNUD>\n",
"gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280\n",
"stf0: flags=0<> mtu 1280\n",
"en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\toptions=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>\n",
"\tether 3c:07:54:4e:0f:f8 \n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect (none)\n",
"\tstatus: inactive\n",
"en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\tether 68:a8:6d:24:58:cc \n",
"\tinet6 fe80::6aa8:6dff:fe24:58cc%en1 prefixlen 64 scopeid 0x5 \n",
"\tinet 10.0.1.3 netmask 0xffffff00 broadcast 10.0.1.255\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect\n",
"\tstatus: active\n",
"fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078\n",
"\tlladdr a4:b1:97:ff:fe:8c:ac:5a \n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect <full-duplex>\n",
"\tstatus: inactive\n",
"en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500\n",
"\toptions=60<TSO4,TSO6>\n",
"\tether d2:00:18:ca:c5:a0 \n",
"\tmedia: autoselect <full-duplex>\n",
"\tstatus: inactive\n",
"p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304\n",
"\tether 0a:a8:6d:24:58:cc \n",
"\tmedia: autoselect\n",
"\tstatus: inactive\n",
"bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\toptions=63<RXCSUM,TXCSUM,TSO4,TSO6>\n",
"\tether 3e:07:54:e4:08:00 \n",
"\tConfiguration:\n",
"\t\tid 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0\n",
"\t\tmaxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200\n",
"\t\troot id 0:0:0:0:0:0 priority 0 ifcost 0 port 0\n",
"\t\tipfilter disabled flags 0x2\n",
"\tmember: en2 flags=3<LEARNING,DISCOVER>\n",
"\t ifmaxaddr 0 port 7 priority 0 path cost 0\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: <unknown type>\n",
"\tstatus: inactive\n",
" ```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####What does all that output mean? What are the'lo0' and 'gif0'devices? What...Huh?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####*If* you have downloaded this ipython notebook locally, run the next cell to see your own system's network interface configuration. \n",
"\n",
"####The ```%%bash``` header in an ipython notebook tells the notebook to run code using a bash shell. \n",
"\n",
"####Anytime in this report that you see the ```%%bash``` header in a cell, run that baby!\n",
"\n",
"####To run a cell in an ipython notebook, press [CTRL+return]"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%bash\n",
"ifconfig"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384\n",
"\toptions=3<RXCSUM,TXCSUM>\n",
"\tinet6 ::1 prefixlen 128 \n",
"\tinet 127.0.0.1 netmask 0xff000000 \n",
"\tinet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 \n",
"\tnd6 options=1<PERFORMNUD>\n",
"gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280\n",
"stf0: flags=0<> mtu 1280\n",
"en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\toptions=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>\n",
"\tether 3c:07:54:4e:0f:f8 \n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect (none)\n",
"\tstatus: inactive\n",
"fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078\n",
"\tlladdr a4:b1:97:ff:fe:8c:ac:5a \n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect <full-duplex>\n",
"\tstatus: inactive\n",
"en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\tether 68:a8:6d:24:58:cc \n",
"\tinet6 fe80::6aa8:6dff:fe24:58cc%en1 prefixlen 64 scopeid 0x6 \n",
"\tinet 10.0.1.3 netmask 0xffffff00 broadcast 10.0.1.255\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect\n",
"\tstatus: active\n",
"en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500\n",
"\toptions=60<TSO4,TSO6>\n",
"\tether d2:00:18:ca:c5:a0 \n",
"\tmedia: autoselect <full-duplex>\n",
"\tstatus: inactive\n",
"p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304\n",
"\tether 0a:a8:6d:24:58:cc \n",
"\tmedia: autoselect\n",
"\tstatus: inactive\n",
"bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\toptions=63<RXCSUM,TXCSUM,TSO4,TSO6>\n",
"\tether 3e:07:54:e4:08:00 \n",
"\tConfiguration:\n",
"\t\tid 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0\n",
"\t\tmaxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200\n",
"\t\troot id 0:0:0:0:0:0 priority 0 ifcost 0 port 0\n",
"\t\tipfilter disabled flags 0x2\n",
"\tmember: en2 flags=3<LEARNING,DISCOVER>\n",
"\t ifmaxaddr 0 port 7 priority 0 path cost 0\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: <unknown type>\n",
"\tstatus: inactive\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import Image\n",
"Image('http://itwebtrap.com/wp-content/uploads/2014/09/hardware1-300x285.jpeg')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg\nSlBFRyB2NjIpLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwK\nDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQU\nFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgBHQEs\nAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMF\nBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq\nNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi\no6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E\nAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMR\nBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVG\nR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz\ntLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A\n/VOiiigAooooAKKKKACiiigAooooAKKKKACiik3UALRTc0ZNADqKbk0ZNADqKTdRnNAC0UUUAFFF\nFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTd1BPNJQA\nUE4FNLEH2pjPigCTdxSbvpUJl/Oo/O96ALQal3Cqhnx3FOWYAjkCh6B1sWc5pahEnrTw+aAJAead\nTAc0AkUAPopAc0tABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF\n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\n",
"metadata": {},
"output_type": "pyout",
"prompt_number": 8,
"text": [
"<IPython.core.display.Image at 0x109e09c10>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####In order to see which of these devices are hardware and which are software, I took a look at networksetup...\n",
"\n",
"####(networksetup is a command line tool for configuring network settings in system preferences on a Mac.)"
]
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"%%bash\n",
"networksetup -listallhardwareports"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Hardware Port: Bluetooth DUN\n",
"Device: Bluetooth-Modem\n",
"Ethernet Address: N/A\n",
"\n",
"Hardware Port: Ethernet\n",
"Device: en0\n",
"Ethernet Address: 3c:07:54:4e:0f:f8\n",
"\n",
"Hardware Port: FireWire\n",
"Device: fw0\n",
"Ethernet Address: a4:b1:97:ff:fe:8c:ac:5a\n",
"\n",
"Hardware Port: Wi-Fi\n",
"Device: en1\n",
"Ethernet Address: 68:a8:6d:24:58:cc\n",
"\n",
"Hardware Port: Bluetooth PAN\n",
"Device: en3\n",
"Ethernet Address: 68:a8:6d:24:58:cd\n",
"\n",
"Hardware Port: Thunderbolt 1\n",
"Device: en2\n",
"Ethernet Address: d2:00:18:ca:c5:a0\n",
"\n",
"Hardware Port: Thunderbolt Bridge\n",
"Device: bridge0\n",
"Ethernet Address: N/A\n",
"\n",
"VLAN Configurations\n",
"===================\n"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Here is the output that I get when I run `networksetup -listallhardwareports`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"Hardware Port: Bluetooth DUN\n",
"Device: Bluetooth-Modem\n",
"Ethernet Address: N/A\n",
"\n",
"Hardware Port: Ethernet\n",
"Device: en0\n",
"Ethernet Address: 3c:07:54:4e:0f:f8\n",
"\n",
"Hardware Port: FireWire\n",
"Device: fw0\n",
"Ethernet Address: a4:b1:97:ff:fe:8c:ac:5a\n",
"\n",
"Hardware Port: Wi-Fi\n",
"Device: en1\n",
"Ethernet Address: 68:a8:6d:24:58:cc\n",
"\n",
"Hardware Port: Bluetooth PAN\n",
"Device: en3\n",
"Ethernet Address: 68:a8:6d:24:58:cd\n",
"\n",
"Hardware Port: Thunderbolt 1\n",
"Device: en2\n",
"Ethernet Address: d2:00:18:ca:c5:a0\n",
"\n",
"Hardware Port: Thunderbolt Bridge\n",
"Device: bridge0\n",
"Ethernet Address: N/A\n",
"\n",
"VLAN Configurations\n",
"===================\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####So my hardware devices from `ifconfig` are the following:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"en0: Ethernet Network Interface Controller\n",
"fw0: Firewire\n",
"en1: Wi-Fi Network Interface Controller (Airport)\n",
"en2: Thunderbolt 1\n",
"bridge0: Thunderbolt Bridge\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Which means that the software devices from `ifconfig` are:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"lo0: loopback interface\n",
"gif0: generic tunnel interface\n",
"stf0: six-to-four interface \n",
"p2p0: point-to-point interface (Airdrop)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Let's look at each of the software interfaces in a little more detail:\n",
"\n",
"* **lo0**: The loopback interface is used to route packets back to itself without ever interacting with a NIC (network interface controller). In this way, the loopback interface can test both transmission and receiving capabilities of the network setup, and act as a \"virtual network interface through which network applications can communicate when executing on the same machine. Any traffic that a computer program sends to a loopback IP address is simply and immediately passed back up the network software stack as if it had been received from another device.\" [[1]](http://en.wikipedia.org/wiki/Loopback) Notice that the `inet 127.0.0.1 netmask 0xff000000` line from the loopback device shows the IPv4 address usually associated with the 'localhost'. \n",
"\n",
"* **gif0**: The generic tunneling interface (pseudo-device) is used to tunnel traffic in four different configurations. (IP[46] over IP[46]) \n",
" \n",
"* **stf0**: This is a six-to-four tunneling interface (pseudo-device), which means that it can tunnel IPv6 packets in IPv4 encapsulation. \n",
"\n",
"* **p2p0**: This is a point-to-point (or peer-to-peer) interface. It creates one connection between two devices, as opposed to a protocol like a broadcast, where one device might communicate a message to several other devices. The Airdrop service allows two Mac users to exchange files over bluetooth when in close proximity to each other. \n",
"\n",
"* **bridge0**: The Thunderbolt Bridge allows you to connect Macs together to transfer files and data back and forth directly using a Thunderbolt cable, without the need for using traditional file sharing methods like AFP, AirDrop, or wi-fi and ethernet networking.[[4]](http://osxdaily.com/2014/05/02/new-interface-detected-thunderbolt-bridge-mac/) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####A couple of definitions:\n",
"\n",
"* **IPv4** or **IPv6**: These are Internet Protocol Version 4 and 6. The new IPv6 uses 128-bit addresses compared with the 32-bit addresses of IPv4. From Wikipedia \"On the Internet, data is transmitted in the form of network packets. IPv6 specifies a new packet format, designed to minimize packet header processing by routers.[1][9] Because the headers of IPv4 packets and IPv6 packets are significantly different, the two protocols are not interoperable. However, in most respects, IPv6 is an extension of IPv4.\" [[1]](http://en.wikipedia.org/wiki/IPv6) \n",
"\n",
"* **Generic Tunneling Interface**: Firstly, \"Tunnels are a mechanism used to send unsupported protocols across diverse networks.\" [[2]](http://www.enterprisenetworkingplanet.com/netsp/article.php/3624566/Networking-101-Understanding-Tunneling.htm) In general, a tunnel can package up protocols and send or receive them, even if the protocols are not natively supported by the network. The generic tunneling interface mentioned above allows you to send IPv6 packets over IPv4, or vice-versa. It is considered generic because it can be configured in four different ways. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Image(\"http://www.nzmarine.com/media/directorylogos/MTU-logo.png\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 15,
"text": [
"<IPython.core.display.Image at 0x109e09ed0>"
]
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####I noticed that the letters 'mtu' appear in every first line of `ifconfig`'s output, so let's grep the output for 'mtu' and compare the devices.\n",
"\n",
"####```grep``` is a command line utility which helps you search through text and match results. In our case, we are interested in the lines which contain the word 'mtu', so we use ```grep``` to filter the results."
]
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"%%bash\n",
"ifconfig | grep mtu"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384\n",
"gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280\n",
"stf0: flags=0<> mtu 1280\n",
"en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078\n",
"en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500\n",
"p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304\n",
"bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384\n",
"gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280\n",
"stf0: flags=0<> mtu 1280\n",
"en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078\n",
"en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500\n",
"p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304\n",
"bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####'MTU' stands for maximum transmission units, which is the largest size packet (in bytes) that can be sent (or passed onwards by a layer) in a packet or frame-based network. The Internet's Transmission Control Protocol (TCP) uses the MTU to determine themaximum size of each packet in any transmission. (Definition from [here](http://searchnetworking.techtarget.com/definition/maximum-transmission-unit))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Maybe a definition?\n",
"\n",
"* **Frame-based Network**: Frames are basically a way of organizing the data and packets that are being sent in a network. A frame is \"the unit of transmission in a link layer protocol, and consists of a link layer header followed by a packet. [[1]](http://en.wikipedia.org/wiki/Frame_(networking) Essentially, frames organize the information being sent and received into manageable chunks for the network to handle. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Examining all of our different settings for mtu's gives us some clues as to the nature of the interfaces: \n",
"\n",
"* Several of the devices have mtu set at 1500. The standard mtu for ethernet is 1500 bytes.\n",
"* The loopback can transmit big packets because it doesn't interact with any NIC (network interface controller) or have any interaction with ethernet. \n",
"* The two tunneling interfaces are set to the same number, 1280... why?\n",
"* Firewire and the Airdrop can both accomodate slightly larger packets. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Taking a closer look at each line...\n",
"`en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500`\n",
"####...reveals some flags set for the device which tell you how the device is configured and the services it supports.\n",
"\n",
"####Let's look at the flags themselves:\n",
"\n",
"\n",
"* **`UP`** - The interface is activated, ready to send or receive packets, and is accessible to the IP layer. \n",
"* **`LOOPBACK`** - The device is a loopback device. See above for definition of loopback. \n",
"* **`RUNNING`** - Resources have been allocated to the interface to allow it to send/receive packets. Drivers have been loaded. \n",
"* **`MULTICAST`** - \"A valid multicast address has been assigned to this interface. Listening on a multicast address is analogous to listening to a particular band of the radio dial. The packet is not addressed to a particular interface, instead, it is addressed to all interfaces listening on that multicast address.\" [[2]](http://docstore.mik.ua/orelly/networking_2ndEd/nfs/ch13_02.htm)\n",
"* **`POINTOPOINT`** - The device is a point-to-point device. \n",
"* **`SMART`** - This flag has now been deprecated and should be avoided. \n",
"* **`SIMPLEX`** - The interface is configured for simplex operation. \"In simplex operation, a network cable or communications channel can only send information in one direction; it's a \u201cone-way street\u201d. This may seem counter-intuitive: what's the point of communications that only travel in one direction? In fact, there are at least two different places where simplex operation is encountered in modern networking. The first is when two distinct channels are used for communication: one transmits from A to B and the other from B to A. This is surprisingly common, even though not always obvious. For example, most if not all fiber optic communication is simplex, using one strand to send data in each direction. But this may not be obvious if the pair of fiber strands are combined into one cable.\" [[3]](http://www.tcpipguide.com/free/t_SimplexFullDuplexandHalfDuplexOperation.htm)\n",
"* **`BROADCAST`** - This interface has a vaild broadcast address set up. This is useful for a subnet where all nodes can see all traffic.\n",
"* **`PROMISC`** - This stands for Promiscuous mode which receives and passes all packets through regardless of MAC address. In my case, the thunderbolt interface is set to promiscuous mode. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Image('http://mnmortgageman.com/wp-content/uploads/2014/02/Options.jpg')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"jpeg": "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\nr3L3k6rQhxCm1pJSFkaVpPkZGNsa4xMvHoT6CXabzzFsKteY7kyfozioyUmfeTKfm/2RrZsIpZdb\nLdGgz4sTqI9Tu3SQ/SPwcGlcWuN1av3HX7uhQi/1XQqilsozSs5NThN46w/eWPIzFikwKnp356aV\n4l6pxeadmaujoIgvbSRGgmqzCqAwcex9R8xp8NBYajVZlBrjvpLuJ9BKQrHtbc8xz72oYGktOlYx\nNLdfR69aSYZB4rmSrTO1Lq6S58kODnWbFx2pWEUOvU6oOtoeiodJMxlZZJTSuCuHlzEiyUxpcJxG\nOe/JvZ/2F19nO6UNJlBhiYhRvi+lrb9pNXbq6FNidIiUhEZuXTIMGMmUklmthtCDVw7zSXEfV58+\nFYFQAAAGPXSC0GsHWq0pcG8J8i3fRE9c1csU20OxccDVl1Kk8S4GR/fga/FI6d0CrOqNY3TddFjN\noJJmSokKXcui281e0zor6PWhc7dVpsq5L1RTF5gPV5bRsKcLk8UZppsjx7O/PjjOMfP+U2V7JlWC\ngu2Pa9ec7o+FvevDUdgwPJ58aJLV2V/w7G9O9e7p1k98hz0mBEGqusdE00hpjIjP3Fd9QTtoVpQs\nrkPOK9Q17SM0JM/LJ9xc8SDAMnajFpUazQ3a7y3qajFsYiw+NXO17vPcUPSLW2NeNuOpvsqdZF80\nFZRrpoUxxMZCXD4odZ65fFCy48zx5lgzzcpMlZ8Mq1ija57F1La69C29KYuCY9FXU6SPVGu27Oy5\nM9s9ICz7ArbFYiXbS3Or7E2I0pTyH2T9Zs+qSv4H3HxFzJz964VVNqIYnfWRdCObtRb925dJ5xpt\nBiFOsMr04Kmmy7/WtDZ/alzUq87aod10N1b1IuCEzOp7i0mhRtPoJadyVYMjwY+mqab38TZLWzkR\nbLrS5wqeL3Ujma7LYuEXy0AAAAAAAAAAAAAAAAAAAAABj70lbBreoemkuk2+SHKlCkNz2Y5njrep\nyez4jHqoVljVqGLWQLNErU1n5ztaKRqBDrC4MmNNo8inOpcNhRG26SknlCiPw4ZSZe8hDJ2vY+zk\nOf1TXsks9DKTo7fhGdRdMShWtq2zKvi2Gl7fldWPlRglKLepS1GXX8j4qMjyZqPeY2NJjTmaJOUn\n4v19aTa0OUL4+TLym7/pJ5+PE2n17UPTHpP6K1tywripdZmLik8iB1pokRJaCU4lLjSySrKer3YN\n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\nTTPFEq4MYWrxKOR8i/PPj4eI4xlZ7R1denw5emT8n5uzedTycyGtaatToZ+b8vbuMXluLdWtxxan\nHHDNTjijyozPmZmOPOcrluq6TpqNRqWQ6jyVAAAUAAADkjAHbJClgBSwORQAAUyq1mlUOKqbV6hF\np0VP8q+sk5PwSXMz8iF+CmkndmxtVV4FqWZkSXetkIWqGtS6lL+StP7aqVy1BXBt5TS9nvSy3lwy\n9+0TDDcip6hf4i9TdK9upO8jddlPFCnJ7V0J67C6qJol0odTDQ5LeOz6Y/8Aye70dRJPwSxlZ+5S\nx0PDvZ7GzSrET7XKXs1eBC67LRXanKvRyU7dZNVtfg8ojqkyrzvSpzn1cXkRyS0R+OTV1ivtEwgy\nWp405SqvRoQjU2UMz9SIneTzQuhBoZSCQcihPVZxPrLlvOuZP3KVj7Bso8FpGfQ7dJgPxWpf9P5E\nr0vo66MUgk+haf24g08leitZ/wAIzG0kLNTGp1IYrqmV2ty9pesXTexISSTFtWiskXIksJL9wvo1\nE1FlVVSqJtC10cE0Gll/6KRUodjtK2T50Kl/+ykAeN6w7NkEaXrbpDhHzI2UgC1KlofpVVULTLsa\n3HTV3qitH96RbWFi60Q9pK9NSqaudc7aiaJ6sPVlnS6hM2BMajtRaxEp8cpEZ4i+cUl4kEpOT9lR\n4PuMjyOY5c5PzVXLiVWpbZzF+0ieJPsksYig5MiI5b7ed1L8i64l3WzNpLVbZrlMTS3i7Mt11LSS\nPvSreZbVF3kfEcOkw+oZJ7pWLnbrXOrMq4XMz0clixqxrZYdK3pYnSay8j+TgtGac/1jmxH1GY2d\nPkzWS60RqcfJLqYM2N00epb9BbUTULVO9Vkxp/pxOdbdPa1OdbceTx79/wA00n4mYlmH+z90ulc5\n3Qmanav6EerMr2R6s1vTpXsQkmh9F3pI6g7XLruT8Wae968ZC+O0+42mOqbP4qMTjD8gIotKta38\na9/mRSsyye/Url/Cnd5GXWhvQ8tnSK5IN5u1up1i5IDbiGFrMkMo65BtrwhBFzIz5mYmdBgkFI7P\nbdXethFqzFpaluatkQzOG5NWAAAAAAAAAAAAAAAW1eTaHbVuBt1BLbVAeJafLaeQCH5vNUoaoiX4\ni/XiqWwv3tmaT+4QipbbQc7rG20GcP4LNOwtTU4x/DGD/wBwQ3GT/Mf0p4Kb3Jf+XJ0p4KeDpW2/\n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\nAAAAAAAAAAB//9k=\n",
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": [
"<IPython.core.display.Image at 0x1085b8bd0>"
]
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Now let's take a look at the options available for each interface:"
]
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"%%bash\n",
"ifconfig | grep options"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\toptions=3<RXCSUM,TXCSUM>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\toptions=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\toptions=60<TSO4,TSO6>\n",
"\toptions=63<RXCSUM,TXCSUM,TSO4,TSO6>\n",
"\tnd6 options=1<PERFORMNUD>\n"
]
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
" options=3<RXCSUM,TXCSUM>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\toptions=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\toptions=60<TSO4,TSO6>\n",
"\toptions=63<RXCSUM,TXCSUM,TSO4,TSO6>\n",
"\tnd6 options=1<PERFORMNUD>\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####We see two different types of options: \"options\" and \"nd6 options\":\n",
"\n",
"####Options:\n",
"* `RXCSUM` - A checksum is used to verify data and detect errors that may have been introduced into data from transmission or storage. Some drivers and interfaces can assume the checksum duties. RXCKSUM is an offloading of checksum duties on the receiving end \n",
"* `TXCSUM` - The same as above, but for transmitting instead or recieving. \n",
"* `VLAN_HWTAGGING` - (from the man pages) If the driver offers user-configurable VLAN support, enable reception of extended frames or tag processing in hardware, respectively. Note that this must be issued on a physical interface associated with vlan(4), not on a vlan(4) interface itself.\n",
"* `AV` - If supported by the driver, enable 802.1 AVB on the interface. AVB stands for Audio Video Bridging and is a standard to allow for precise synchronization of audio and video. \n",
"* `TSO4` - TSO stands for TCP Segmentation Offloading, which basically allows the NIC to unburden the host computer's CPU by performing some of the segmentation necessary to push packets through the TCP/IP protocol. TSO4 here simply refers to the segmentation of IPv4 packets. \n",
"* `TSO6` - This is the same as TSO4, but used for IPv6 packets. \n",
"\n",
"####nd6 Options:\n",
"\n",
"* `PERFORMNUD` - nd6 is the neighbor discovery protocol used to find nodes, auto configure link layer addresses, and perform tests such as NUD, which stands for Network Unreachability Detection. It is a part of neighbor detection which determines that a neighbor is no longer reachable on the link."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Whew....Let's examine the remainder of the configuration on my Wi-Fi (en1) interface:"
]
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"%%bash\n",
"ifconfig en1"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\tether 68:a8:6d:24:58:cc \n",
"\tinet6 fe80::6aa8:6dff:fe24:58cc%en1 prefixlen 64 scopeid 0x5 \n",
"\tinet 172.16.231.115 netmask 0xfffff800 broadcast 172.16.231.255\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect\n",
"\tstatus: active\n"
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500\n",
"\tether 68:a8:6d:24:58:cc \n",
"\tinet6 fe80::6aa8:6dff:fe24:58cc%en1 prefixlen 64 scopeid 0x5 \n",
"\tinet 10.0.1.3 netmask 0xffffff00 broadcast 10.0.1.255\n",
"\tnd6 options=1<PERFORMNUD>\n",
"\tmedia: autoselect\n",
"\tstatus: active\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"####Here's what's left:\n",
"\n",
"* `ether 68:a8:6d:24:58:cc` - This is the MAC address for the Wi-Fi interface. The `ether` parameter is another name for `lladdr` or 'link local address'.\n",
"* `inet6 fe80::6aa8:6dff:fe24:58cc%en1 prefixlen 64 scopeid 0x5` - This is the IPv6 address configured for this interface. `prefixlen 64` means 64 bits are reserved for subdividing networks into sub-networks. The `scopeid 0x5` part of this (from [Wikipedia](http://en.wikipedia.org/wiki/IPv6_address#IPv6_address_scopes)) means \"Link-local and site-local multicast scopes span the same topological regions as the corresponding unicast scopes.\" Yeah, I am gonna need to investigate that one further.\n",
"* `inet 10.0.1.3 netmask 0xffffff00 broadcast 10.0.1.255` - This is the IPv4 address including a netmask and a broadcast address. \n",
"* `media: autoselect` - Some interfaces allow a manual configuration of a media type such as a 10baseT/UTP setting, which would indicate a twisted pair. Autoselect chooses the best fit automatically for the media used. \n",
"* `status: active` - This interface is currently up, running and activated. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###References:\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<http://en.wikipedia.org/wiki/IPv6_address#IPv6_address_scopes>\n",
"\n",
"<http://www.tcpipguide.com/free/t_SimplexFullDuplexandHalfDuplexOperation.htm>\n",
"\n",
"<http://docstore.mik.ua/orelly/networking_2ndEd/nfs/ch13_02.htm>\n",
"\n",
"<http://searchnetworking.techtarget.com/definition/maximum-transmission-unit>\n",
"\n",
"<http://osxdaily.com/2014/05/02/new-interface-detected-thunderbolt-bridge-mac/>\n",
"\n",
"And of course the man pages for ifconfig(8), networksetup(8). \n"
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment