Showing posts with label learning. Show all posts
Showing posts with label learning. Show all posts

Friday, November 18, 2016

Book sale!

Tomorrow is the 2nd library book sale of the year.   I like the book sale.  What's better, it's a brown bag of books for about $5.  Sure, they are used books.  But books are books.  I've gotten entire collections of books for practically nothing. 

So...  support your local library.  Go check out their books and visit their book sales. 

They are awesome.

Friday, March 4, 2016

Accomplishments

So, a few weeks ago I started reading my goals twice a day.   You can read about that here.  So I've been reading them.  And making some progress.  But not the progress I want.  See, reading is just a simple action.  It requires little effort.  You are effectively done reading your goals in a few minutes.   But reading goals and accomplishing goals are two different things.

So I've started to keep track of my goal accomplishment in a spread sheet.  I just started today.  I'm not sure how well this setup is going to work, so I may tweak it.  But at the moment its something.  The end result is to start accomplishing goals more.  To do the work to accomplish the goal.  Which is a lot harder than just writing the things down.

I have to admit.  Writing them down and reviewing them on a daily basis is causing me to  put some effort in.  Just not the effort level I want to put.  The hope is small accomplishments spread out over time resulting in a big goal being accomplished.  Not some giant, one time step to accomplish the thing.  There's no exoneration in this plan.    Just straight up dirty labor.  Never ending dirty labor.  But that's what gets things done.

Now, back to reading.  I've got 6 more pages on one goal today, and I want to get those knocked out.


Friday, September 11, 2015

Circling the globe (the thoughts in my head)

I went on vacation this last week.  I didn’t spend any time working.  It was wonderful.  Now, it’s Saturday and I’m back to getting ready for work.  The mental processes are starting to grind away, and get back to what I was working on.  At the moment, I’m updating Visual Studio so I can work on the program I was writing in C#.  I know I’ve heard a lot of disparaging things about C#, but I’m not terribly concerned.  There are too many purists in the world. 

C# is a tool.  Nothing more.  If it’s not the tool you need for the job, then don’t use C#.  C++ is a tool.  Java is a tool.  Visual Basic is a tool.  They are all tools.  Nothing more, nothing less. 
Each tool out there has a specific use, and some tools are better for certain applications.  I can’t say C# is any better a tool than Java in this case, but it’s a tool I can manipulate easier.  I also spend a lot less time fighting the interface and more time working on what I’m interested in working on.  As such, the thing already reads XML files, runs threads, and generally works like I want it to.  It’s not complete by any means, but it’s on its way there. 

In the period since I started writing this (it’s been about a week) I read Seth Godin’s Small in the New Big.  It’s quite a remarkable book, and there’s a lot I’d like to say about it.  I’m really not sure what to say, though.  There truly has been a paradigm shift and in the world, and those trying to follow the old paradigm seem to be getting left behind.  It’s much easier to follow the new paradigm.

But what is the new paradigm?  I think the answer is release early, release often, and benchmark everything.  Quit trying to make something perfect, and make something you can release. 

So I think I’m going to go with that, and make something I can release.  I’ve already started working on it, but it’s neither groundbreaking nor amazing.  But it’s something. 

When you release often, you end up basically throwing a lot of stuff up, and hoping some of it sticks.  I’m not sure if that makes sense, but it does to me.  If I release something in the next month or so, then I’m doing better than I have in the last few years.  Too much thinking and trying to come up with the perfect idea.  Too little time releasing. 


I think I also realized the background for the past few months (maybe a year) has been chemistry related.  I like the picture, but this has nothing to do with chemistry.  I should probably change that.

Tuesday, July 7, 2015

Antiquated, Arbitrary Systems

I home school my children.  Why I do that is a subject of a different post.  The subject of this post is to understand the contrast between public, private, and home schools.  It is fairly obvious to me that public schools as we know it are a way of the past.  The need to learn more material at a faster rate needs better methods of teaching that are more reproducible.  The herd mentality isn't going to work as a system much longer.

Think of the average public school.  You have a collection of subjects taught in a micro landscape with no tie to the rest of the world.  Secondly, you have students at differing levels of interest being forced in with those students who have no interest.  Third, you have an arbitrary knowledge level system that forces every student, regardless of ability, into a group.  Tackling these issues has been something home schooling has never had to deal with.

And before I move on, class size doesn't matter.  I had a high school size of 140 and no class I took had more than 20 people.  And yet there were still people who passed high school barely capable of reading.

Now, I'm thinking the answer is going to be a combination of software and hardware.  Software provides the basis and the consistency of the system, while hardware produces the interaction.  Would an hour of class be as bad if the student spent their entire time standing, working on the board?

Secondly, you could have the program tailor itself to each individuals skills and abilities.  No more passing because the teacher just doesn't want to deal with you any more.  Computer programs have infinitely more patience than the average teacher.  The converse to that is now the gifted students will move at the pace that keeps them challenged as well.  If they learn a subject in five minutes and can prove competence in the next twenty, then there would be no need to keep going on for another fifty minutes.  Move on to the next subject so that gifted mind can keep up.

And when the mind hits a roadblock, the system slows down and doesn't let them move on until they have mastered the subject.

I think I envision the next generation being raised by computers in individual rooms or cubicles.  The teacher still exists in this environment, but their purpose is to help frustrated kids and give the hands on approach to the child that needs it.

I know the system we currently have does not work.  That's quite evident.  So the goal is to radically redesign the system to something that does work, and is reproducible.

I also seem to remember something years ago that stated Algebra was a college level course.  And now, it's a junior high course.  If you want the next level on movement, you have to get more people up to a higher level learning faster so those people can spend more time with the requisite knowledge to figure out the hard problems.

Sunday, July 5, 2015

post CCENT

I passed the CCENT.  Grading criteria was between 300 and 1000, and passing was 803.  I scored a 907.  Hooray for me.

The test was copyrighted 2013.  There was a lot of subnetting through out.  Not much IPv6.  There was four question problem on OSPF.  Another was on security settings.  Which reminds me.  I need to test one of the configurations they performed.  Because I think I know the answer, but I don't know if I was correct or not.  

I guess now on to something else.  Back to studying the stuff I've been studying.  I'm currently reading Simple Nature by Benjamin Cromwell.  After that, it's on to Mechanics and then my study of physics takes a temporary break.

Other stuff I'm currently reading include The Book of Five Rings by Miyamoto Musashi.  After that one is finished, it's off to The Hacker Playbook by Peter Kim.

There's an entire list of books after that, but that collection will keep me good for several days.

Remember: people don't grow without intentional effort.

Wednesday, July 1, 2015

As the world burns...

The world burns.  I study. 

I’m concerned with Dora (Discover, Offer, Request, ACK) the DHCP explorer and her friend Bubu  (broadcast, unicast, broadcast, unicast) and learn on source, forward on destination.    

Open suckiest path first:  Hello, dead beat dad.  Losers suck right?  Losers suck up.  Ack.  (link state packets for OSPF.)
Basic ACL near destination
Extended ACL near source
Deploy access class to limit access to console
Default information-orginate
Ip helper-address


I’ll know Thursday if I pass.  Wish me luck.




Sunday, June 7, 2015

Garbage In/Garbage Out

I’ve been thinking of the concept of garbage in / garbage out.  It’s a computer science concept.  It’s an interesting concept.  The idea is that a computer is capable of processing all sorts of data, not just good data.  So if you give a computer bad data, it will spit out bad results.  Makes perfect sense in the computer world.  But what about applying the concept to life? 

Seems perfectly applicable to me, but it’s hard to interpret what constitutes good or bad information.  The basic concept I’m trying is limit the type of music I intentionally listen to.  I find that it’s hard to maintain the correct mindset when being assaulted by lyrics that preach the wrong kind of information.

Building the concept of where I want to be in relation to where I am is only limited by what my mind thinks I’m capable of.  But when you feed your mind information telling it that something can’t be done, then you are defeating yourself.  Logically, your brain is sitting there telling you that the music you are listening to is not affecting you.  But it is, and the effect is incredibly subtle.  It’s something easy to test, though it requires a bit of discipline.  What I did was eliminate music with words from my day to day listening. 

I guess I spent too much time listening to people doing bad things to other people.  Or listening to music written by people who are convinced the world is out to get them.  Or those that think the world owes them something.  I’m generally more inclined to think the world is ambivalent to individual existence.  Life is not fair, or easy.  But that doesn’t mean there is plenty of great stuff to pull out of the world.  In the grand scheme of things, the individual human life spans a very short period and has very little impact.  So really, our lives don’t matter all that much.

But mentally, people don’t want to believe that.  They want to believe in the importance and reach of their life.  But it’s simply not the case for the most part.  So you get a collection of garbage thrown in your brain that tells you the wrong thing and leads you to the wrong conclusions.  And generally, these conclusions are very logical.  Andy Andrews describes it as “thinking logically to the wrong conclusion”. 

So my recent approach has been to take in less garbage with the hopes of getting better information out.  I recently took a 4 day weekend after 17 straight days at work.  I had to work 17 straight days because I had been focusing on solving the wrong problem.  See, there’s the right problem and the wrong problem.  If you solve the wrong problem, you have to keep solving the problem over and over again.  It just doesn’t work.  What I finally realized in those last three or four days was I could have easily avoided working 17 days straight if I had done the correct thing.  What I needed to do was document better.  If I had documented better, then I could have turned anyone calling me to look at the document in question and follow it to its conclusions.  If the document was incapable of producing an answer, then there must have been some other issue.

What good does it do to create wonderful systems that have no documentation or notes? 






Wednesday, May 13, 2015

end of a semester

Routing and Switching is over.   Finished the final with an 85, closed book closed notes.

That should give me an A for the semester.  I need to prepare for the CCENT for the next 2-3 weeks, and then go take that.  Based on the Routing and Switching final, I need to study OSPF more.  I missed more than I would have liked on that.

Scaling Networks is next.   The book is on order.  I spent a few minutes looking through the chapter headings on the final book, and found the PPPOE section.   Yeah.  Book 4, right before the CCNA.

Moving on.   Back to site construction tomorrow, now that finals are complete.   Yay.

Saturday, April 4, 2015

Speaking of Java and MySQL

So, I finally got my Java/MySQL connection working.

Hooray!


https://help.ubuntu.com/community/JDBCAndMySQL

Was where I learned to fix the "class not found issue".

After that, I dug up http://www.tutorialspoint.com/jdbc/jdbc-quick-guide.htm to get instructions on how to use/connect to the database.

Afterwards, I was capable of spitting out information to the system console from the database.  Holy crud!  

Definitely making progress today.

Yay.

Wednesday, April 1, 2015

The first two hours

In trying to program 10,000 hours worth of stuff in Java, I realized I was going to be building a whole lot of stuff.  After two hours, I’ve finished the first program.  It’s a translator that takes CIDR notation information and turns it into Snort rules.  The entire purpose is to block entire countries.  The problem is countries are large and have a lot of IP addresses.  Blocking China takes a few thousand lines of CIDR notation.   And aggregate it all into smaller routs?  Highly unlikely.  So you end up with 3,000 lines that you can either manually parse through or write a program to parse through.  I chose to write a program. 

And I’ve also come to the realization that in the run to get 10,000 hours, I’m going to program a lot of stuff.  That is a lot of time.  At 30 minutes per day, that’s 54 YEARS.  So at some point, I’m definitely going to have to put in a lot more effort than I currently am.  
 
So now that the Snort builder is done, what’s next?  Probably moving back to my automatic network test application.   Which is mostly writing text parsing.  From there, I’ve got to figure out how to design a database structure and get the information into a database.   From the database, I have to get data into a web form and display it on a web server that doesn’t exist. 

Just a slight bit complicated, but I’ve got nothing but time.  

After that, there's a SHA application I've been contemplating.  SHA is secure hash algorithm.  It's essentially a long number that indicates the properties and data of a file.  Well, if the SHA is the same for two files, then the file is the same.  So if you have a desire to back up data, you can create a SHA of every file on your system, and every file on the remote system.  Compare those two files together, and identify which files need transferred.  Do so, and you synchronize the data on both systems.

It's an idea.  Like I said, 10,000 hour is a lot of time.  A whole lot of time.  

side note: I realize this is April Fools Day.  I am not a practical joker.  

Friday, March 27, 2015

Pareto Principle in Action

My last experiment started as a practical examination of the Pareto principal, otherwise known as the 80/20 rule.  I had been making straight B’s on my Routing and Switching tests, and I wanted to consistently improve them to A’s.  In order to do that, I needed to know how much time I was spending getting that B. 

So I changed my study habits slightly, and decided to keep track of time spent studying.  I’d also read something about two competing South Pole expeditions.  One ran as much as they could every day.  Some days they didn’t go anywhere because the weather was bad.  The other went 15 miles a day, regardless.  They went 15 miles, and stopped for the day.  So I decided to try that principal with studying.  And the results were pretty remarkable.

I went from an average low B to a high A on the next test.  Hooray for me.   Anyway, this was the process. 
Read any previous notes I had made.
Grab a highlighter, and read 15 pages, highlighting what I thought was important.
Copy those highlighted notes into my printed notes.
Quit for the day.   Return tomorrow.

In doing this process, I found it only took about an hour a day, so I really had more time to work on other things.  Normally, I would have spent 3-4 hours straight on Saturday or Sunday reading and highlighting.  Granted, chapter 7 took me 387 minutes to complete, but that only averaged 64 minutes per day.  I have yet to take the test on that chapter, so I’m not yet sure how effective this process has been for that chapter.  But I do know the previous chapter resulted in huge positive results.

I think I missed a lot of the main part of this that makes it so effective.  The main effective part is that you study a little bit every single day.  It’s not a brain destroying group done once or twice per week.  It’s simply an hour per day, every single day.  In that way, your brain doesn’t have time to stop thinking about what you have studied.  On top of that, by the end you’ve read and reread your notes numerous times.  Then, the information is more likely to stick. 


We’ll see what happens with chapter 8.  Though I have to admit, single area OSPF just doesn’t interest me that much.

Monday, January 19, 2015

The end of one thing, the beginning of another.

I finished the Security+ book, and I think it left me with more questions than answers.  At the moment, I’m questioning how to do a lot of things.  Network baseline analysis is the primary one of those.  At the moment, I’m doing some preliminary reading.  Sure, there are a lot of books out there that say “this should be done”.  None of them discuss how to do network baseline analysis.  I think the best answer I’ve seen so far “there isn’t a standard”.  Which sounds pretty normal with network security.  And that’s why network security is, as a general rule, very splotchy.

With Security+ being finished, it’s off to learning physics VIA a collection of books written by Benjamin Crowell.  Part of me wants to write a long, drawn out blog post describing in detail how I can believe in both science and God at the same time.  But I’m not.  The answer is pretty simple: most of life is not an either/or selection.  Despite simplistic arguments against, it is entirely possible to believe in both at the same time.  The two are not mutually exclusive.  Sorry folks, I can believe in both at the same time.

I’ve touched on the false idea of mutual exclusivity before.   I can’t remember the post, but it’s the argument of people who want to lead you down paths that are only valid if the two items discussed in the beginning really are mutually exclusive.  For the most part, there are very few mutually exclusive items in the world.  I guess in the end, you have to question the assumptions people push at you, and assume everyone has an agenda.  Despite the best arguments, the truth is not the real agenda.

I think Andy Andrews put it best:  People often think logically to the wrong conclusions. 


Really, there was an entire book about that subject.  It was pretty interesting.  

Wednesday, January 14, 2015

Some programming... more about planning

I think I’ve thought of the problem with the threading function.  There’s really no problem with the thread function.  The thread works great.  My expectations of what the thread should do were wrong, though.  I incorrectly assumed the thread would run multiple times.  It doesn’t.  It just runs once.  And that’s the problem with it.  So it’s not the thread’s fault I told it wrong.  It is simply a matter of me assuming the wrong thing about how it would behave.

Essentially, I have to remember that the thread is nothing more than a function.  The function runs, and then the function quits.  Bu nothing ever calls the function again, so the numbers never change after the first press of the button.   Or at least I think that’s the explanation.

On a second note, my reading has gone past 20% complete.  I should be done with Security+ this week.  As a general rule, I’d say the book has good info but it’s so incredibly vague in most cases.  This is not an action oriented book.  This book is there to give you a gigantic overview.  From there, its’ up to the user to pursue whatever interests them.  Which takes the focus out of the reading.  I’m guessing a server book should go next.  At the moment, I’m not progressing down the security path though.  I’m heading towards a programming path.  Once the programming path is done, then it’s back off to other things. 

At the moment, I’ve read about 1000 pages of the 5000 I need to complete my current goal.  So that leaves me with another 4000 or so to read.  Do I really want to schedule the next 10,000 pages when I don’t know where I intend to go from here?  I could easily pick a number of books.  A Cisco Voice book probably needs to be in there somewhere.


For now, the examination of where I want to go is behind 4000 pages of physics, calculus, and artificial intelligence books and the last 50 or so pages of Security+.  Towards the end, I’ll probably have a better understanding of where I want to go.  But now?   The schedule is set, I just have to follow it.

Tuesday, January 13, 2015

Threads: I still hate them

Hmm…

Looks like implementing threads is going to be about what I expected.  The code is simple enough.  It’s getting that thread to run multiple times on a schedule that’s going to be the complicated part.  I have no idea how to get it to do that.  The thread.sleep() should cause it to work, but it’s not doing what it’s supposed to do.  I suppose I’m used to dealing with threading causing me havoc.

Grr…   Slight modifications to the system and it still doesn’t work.  But eh… 

The real problem is threading is critical to half of the stuff I have running through my head.  So I have to figure out threading, or the rest of my ideas need to go on hold.  And I really don’t want to put them on hold. 

But…  grr. 


Did I mention I’ve never been good at threads?  In general, they seem to be easy.  But I’ve never been able to implement them properly.  Though quickly looking through the Java documentation, there is also a timer implementation that would probably implement the countdown portion of the clock just fine.  It still annoys me…  

Yeah, I still hate threads.   I wouldn't bother trying the code, as it doesn't work...   

    private class CountDown implements Runnable
    {
        CountDown()
        {
            
        }
        public void start()
        {
            t = new Thread(this, "counter");
            t.start();
            
        }
        public void run()
        {
           
            try
            {  
            
                int ones;
                int tens;
                String txt = seconds.getText();
                char characters[] = txt.toCharArray();
                             
                ones = characters[1] - '0';
                tens = characters[0] - '0';
            
                ones = ones - 1;
                    
                if(ones < 0 && tens > 0)
                {
                    tens = tens -1;
                   
                    ones = 9;
                }
                else if(ones < 0 && tens == 0)
                {
                    tens = 0;
                    ones = 0;
                }
                
            
                seconds.setText( Integer.toString(tens) + Integer.toString(ones));
            
                Thread.sleep(20);
            }
            catch(InterruptedException e)
            {
                
            }
            
        }
    } 

Tuesday, January 6, 2015

Program 2: Java Stopwatch

With the NetworkStatus application in a mostly working state, it’s time to shift gears to a separate application.  I like to build small, similar applications that will eventually use the same basic ideas.  The first application was designed to get a button working and responding to being pressed.  Program two is about threading.

And what better way to move to in to threading than my old favorite of the threading world, the Stop Watch.  StopWatch will be of similar design to NetworkStatus.  The thing would have several buttons allowing you to adjust the time, and display in the middle of the screen.  There should be a start and stop button.  So I guess the first thing is to pull up paint and create a generic mockup of the program design. 

I decided to go with a 3x4 grid layout simply because it’s different than the gridbag layout I went with earlier.  I’m still not impressed with Java FlowLayouts, and GUI design in general seems like a real pain.  But I’ve got to learn to work with what I have to work with.  Some systems just seem to be better suited for certain things than others. 


The number in location 0,1 and 2,1 will be independent of each other.  They will be separated by a colon.  The colon ends up being just a text field with the text size increased to make it look pretty.  Really, the 0,1 and 2,1 are text fields as well.  They will just be handled with some special code to make them operate properly.  It’s not complex code, and I’ve written the same thing in other languages before. See my C# example below.


Though after examining my old C# stop watch, I might put a reset button in the middle.  That could work out nicely.  So, half an hour into this project I have a reasonable (though ugly) facsimile of a StopWatch.  It is not fuctional, and I need about 200-300 more lines of code to make it work without threading.  But at least there’s been some progress made.  Maybe tomorrow, it will be counting. 


Probably not.  It will take all of tomorrow to get the buttons working properly.  

Monday, January 5, 2015

Working solutions

So it looks like the basics are working on the program. Now that it does what it’s supposed to, it’s off to creating the not so easy portion of the system.  There are still some minor portions or the program that aren’t working properly.

The answer to the initial question was…

this.setVisible(true);


Guess it was the simple stuff that was causing things to fail.  It almost always is.  The next question I’m wondering about is the scroll bar on the text box.  I’m sure it’s something easy, but easy isn’t hitting on the head right now, I’m going to have to keep guessing. 

The other items I’m wondering about are all style issues.  Simple things like why there is so much gap between the top grouping and where the list box starts.  I shouldn’t call it a list box, but that’s what it reminds me of.  It’s really a JTextArea.  

This is what often happens in many of my programs and projects.  I break down to fighting simple/stupid stuff that doesn’t really equate to how the program operates.  It’s just a visibility/design issue.  But design issues can make or break a program.  Certainly, there should be more to the program, but at the moment, everything seems to be acting like I think it should.  As a test, it works well. 

The next questions are all technical ones.  Such as, the InetAddress.isReachable implementation.  I question these things, because the creation I’m thinking of making is some sort of thing that examines the current state of hosts imported through an XML file and alerts based on whether hosts are reachable or not.  It then checks every 30 seconds or so and writes the information to a database.  From there, you can see the long term uptime of a network.

And I really want to know what it does and how it operates, because proper troubleshooting requires knowing why something is doing what it is doing.  And really, you need to know both what the results tell you and what the results don't tell you.  I've spent 3/4 of a day fighting an Internet issue because I quit listening to what everything was telling me.  I was being too quick to jump to conclusions. 

There are other things I’m contemplating, but I don’t know how to implement them.  In the end, almost all of my programs become horrendously ungainly things where feature creep becomes a dominant factor.  Well, feature creep and general GUI design flaws.  Like I said, I spend a lot of time fighting GUI design.


Other than something I wrote in C# that checks to see whether a collection of backup files are there, and the date on those files.  It then emails me, telling me whether things succeeded or not.  But that probably needs updated just to make sure it stays working.  Or,  I need to rewrite the entire thing in Java.

Thursday, December 11, 2014

Introduction to Networks ch 6


Quiz 
     How does the network layer use the MTU value?
     A) The MTU is passed to the network layer by the data link layer.

     What are 2 functions that are provided by the network layer?
     1) providing end devices with a unique network identifier
     2) directing data packets to destination hosts on other networks


     During the boot process, in what memory location will the router bootstrap program look for the IOS image if a TFTP server is not used?  
     A) flash
          

     When transporting data from real-time applications, such as streaming audio and video, which field in the IPv6 header can be used to inform the routers and switches to maintain the same path for the packets in the same conversation
     A) Flow Label

     Within a production network, what is the purpose of configuring a switch with a default gateway address?
     A) The default gateway address is used to forward packets originating from the switch to remote networks.


Chapter 6 Notes

routing - communication between networks

Network Layer
     Provides services to allow end devices to exchange data across the network
     -OSI Layer 3
     -4 basic processes
          -Addressing (end devices)
               end device with configured IP is called a host
          -Encapsulation
               Receives PDU from transport layer.  Adds header.   Now called a Packet
          -Routing - services to direct packets to a destination host on another network
               -each route the packet takes to reach the destination is called a hop
          -Deencapsulation - process of removing headers from lower layers
               

     Operates without knowing/caring of the data being carried
     Media/Path is irrelevant.  Satelite, wireless, cable modem, serial.. doesn't matter

Network Layer protocols
     IPv4
     IPv6

 Characteristics of IP protocols    
     -low overhead
     -connectionless
     -best effort (unreliable) 
     -media independant

     Connectionless - no dedicated end to end connection created before sending.  Kind of like mail.
          -send at any time
          -unaware of the state of the recipient
          -unaware if the receiver can understand the data 
          -no error correction
          -no guarantee packets will arrive in order

Best Effort Delivery
     can't recover from failed/corrupt packets
     bad packets are dropped
     trouble with transmission handled by upper layers if the layer desires
     

Media Independent
     Data link layer responsible for transmitting over media.
     maximum size packet that can be sent is the MTU (maxium transmission unit)
          -data link layer passes the MTU value up to the network layer
          -network layer uses information to determine packet size
          -breaks packets to  fit the MTU.   
          -Fragmentation is necessary to split packet size so it will fit on a device with a smaller MTU


IPv4 Packet
     -In use since 1983
     Packet has 2 parts
          1) IP header
               Significant portions of the header
               -Version - packet version.  Constant at 0100
               -Differentiated services (formerly Type of Service) - used for QoS.   1st 6 bits used by QoS.  last 2 bits used to prevent dropping
               -TTL (Time to Live) 8 bit value to limit the lifetime of the packet.  Reduced at each hop.   If hits 0, router discards packet and returns ICMP Time Exceeded message to the source IP address
               -Protocol - indicates data payload
               -Source IP address
               -Destination IP address
               
          2) Payload



          Remaining fields of the IPv4 header
          -Internet Header Length (IHL) - 4 bit value identifying the number of 32 bit words in the header
          -total length - defines entire packet size, including header and data
          -header checksum - used for error checking IP header.  If values do not match, packet is discarded

          If the packet is fragmented, other fields are used to keep track of the data
          -Identification - unique identifier of a fragment
          -flags - identifies how a packet is fragmented
          -fragment offset - identifies the order in which to place the packet when it arrives at the destination

          
IPv6 packet
     Limitations of IPv4
     -IP address depletion   - only 4 billion available IP addresses.  Quickly running out due to always-on connections
     -Internet Routing Table Expansion - more networks, more routes, more waiting
     -Lack of end-to-end connectivity - Troublesome when NAT and PAT are used.  

     Encapsulating
          -simplification of the IPv6 header
          IPv4 had 20 octets and 12 basic header fields
          IPv6 has 40 octets and 8 basic header fields

          advantages over IPv4
               -better routing efficiency for performance and forwarding rate
               -no requirement for processing checksums
               -simplified and more efficient extension header mechanisms
               -flow label field for per-flow processing with no need to dencapsulate to identify various traffic flows

          IPv6 packet header
               -Version- 4 bit binary.  Constantly set to 0110
               -Traffic Class - equivelant of the differentiaed services field
               -flow label     - used to inform routers and switches to maintain the same path for packet flow so that packets are not reordered
               -payload length
               -next header - equivelent of the IPv4 protocol field.  indicates data being carried
               -hop limit
               -source address
               -destination address

          IPv6 addresses
          -128 bit address
          -colons separate entries into a series of 16-bit hexadecimal blocks

          

Routing
     How a host routes
          Host forwarding decision
               hosts can send a packet to ...
               -itself
               -local host
               -remote host

               local host vs remote host is based on IP address and subnet mask comparison between sender and receiver

               devices beyond the local network segment referred to as remote hosts
     
         
          Default Gateway
               the device that routes traffic from the local network to devices on remote networks
               
               if a host is sending to remote network, it sends to default gateway

               default gateway maintains a routing table 
                    -data file in RAM that stores route information from directly connected networks
                    -also knows remote networks the device has learned

                    
               host must maintain a local routing table to ensure proper delivery
               hosts routing table typically contains of...
               -direct connection
               -local network route
               -local default route

               default route only used to connect outside of the local network


IPv4 routing
               
          If a host wants to send a packet inside the local network
          1) consult the IPv4 route table
          2) match the destination IP address and identify it as being in the same network
          3) send the packet using the local interface

          If a host wants to send a packet outside the local network
          1) consult the IPv4 route table
          2) find there is no exact match for the destination IP address
          3) choose the local default route to pick the forwarding location
          4)  send the packet to the gateway using the local interface
          

IPv6 routing
          
          View routing table in Windows with netstat -r or route print

          If - lists the interface numbers from the interface list
          metric - lists the cost of each route to a destination.  Lower numbers are preferred routes
          network destination - lists the reachable networks
          gateway  - lits the address used by local host to forward outside the network

     ::/0 - IPv6 equivalent of the local default route
     ::1/128  - IPv6 equivalent of the loop back address
     200::/32 - global unicast network prefix
      fe80::/64 local link network route address;  represents all computers in the local network
      ff00::/8     multicast address

     no broadcast addresses in IPv6


Router Routing Tables

     routers store information about 
          directly connected routes
          -known from interfaces physically plugged into the router
          
          remote routes
          -routes that come from other routers.  
          -manually configured  or dynamically configured through the device learning from other routers

          routing table of a router
          -destination network
          -metric associated with the destination
          -gateway to get to the destination

          show ip route

          when a packet arrives at the router, the router examines the routing table.  if the destination network matches a route in the routing table, the router forwards the packet to that route
          if multiple paths to the same location, then lowest metric wins

     directly connected routing table entries
          routers have 2 rotus after IP address is assigned
          
          route source: - how the route was learned
               C: directly connected
               L - local route

          Destination network and how reached
               identifies the address of the network and how a packet can reach the destination
          outgoing interface
               what interface is used to connect to that network

          routers generally have multiple interfaces configured
               common codes for remote networks
               -S: route was manually created by an admin.  Static route
               -D: learned dynamically using EIGRP
               -O: learned dynamically using OSPF

          remote network routing table entries
               route source- how the route was learned
               destination network - the address of the remote network
               administrative distance - trustworthiness of the route source
               metric - value assigned to reach the remote network.  Lower wins
               next hop - ip address of the next router to forward packets to
               route timestamp - when the route was last heard from
               outgoing interface - physical interface to forward a packet

          next hop address
               address of the device that will process the packet next.

          packets can not be forwarded by the router without a route for the destination network.

          if no route, packet is dropped

          router can be configured with a gateway of last resort if the destination is unknown

          

Routers - 
     a router is a computer
     
     branch - small business, medium business, teleworkes
     WAN - large business
     Service provider - large service providers

     router CPU and OS
     
     Router memory 
          RAM  -  store applications and process including
                    -IOS - copied during bootup
                    -running config
                    -ip routing table
                    -ARP cache
                    -packet buffer
                    routers use DRAM
                    volatile memory and requires continual power to maintain information
                    all content lost when powered down
          ROM
               used to store:
               -bootup instruction
               -basic diagnostic software
               -limited IOS
               firmware embedded on an integrated circuit inside the router
               doesn't lose contents when powered down 
          NVRAM
               used as permanent storage for the startup config file
               doesn't lose contents when powered off
          flash 
               used as permanent storage for IOS and system related fields

          router backplane
               has the following connections
               -console ports
               -aux port
               -LAN interfaces
               -Enhanced high-speed WAN interface card (EHWIC) slot
                    modular enhancement slot.  Different interface, different card

          connecting to a router
               routers interconnect many devices
               connections grouped into two categories
               
               management ports - used to configure/manage/troubleshoot.  not used for packet forwarding
               in-band router interfaces - LAN and WAN interfaces configured with IP addressing to carry traffic

               two interfaces can't belong to the same network

          

router bootup

     bootset files - loaded into RAM when booted
          -IOS image file
          -start config file
     
     router bootup process
          1) perform POST and load the bootstrap program
          2) locate and load the Cisco IOS software
          3) locate and load the startup config file or enter setup mode


          locating/loading config file

               can be saved in NVRAM. 
               if not, can be loaded from a TFTP server
               

         show version 
               CPU and amount of RAM
                    some versions write the amount of ram with XXXX/YYYY.   add those two numbers together
               has config register as 0x2102.    changing to other used for password recovery

          

        general config steps
             1)give hostname
             2) set passwords 
                    -enable
                    -console
                    -VTY
                    -use service password-encryption to encrypt password
               3) setup a banner motd
               4) exit config
               5) save configuration

        configuring interfaces
               1) conf t
               2) interface whatever
               3) ip address xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy   where x is IP address, y is subnet mask
               4) description blah
               5) no shutdown
               6) exit config
               7) save

        verify interface configuration
               show ip interface brief
               show ip route
               show interfaces
               show ip interface

default gateway on a switch
     1) interface blah
     2) ip address xxx yyy  (x is IP, y is subnet)
     3) no shutdown

     4) ip default-gateway xxx.xxx.xxx.xxx   (x is IP address)
     
     IP address on a switch is only used to mange the switch
     if you want it accessible from anywhere, it needs a default gateway