I'm making some assumptions on your setup and how exactly your ISP is giving you these IPs, so if any of this is wrong I apologize and will happily change my answer
For your internal network I would suggest you setup a DHCP pool for your workstations and statically assign IPs to your servers. I'll leave the DHCP pool setup for you, as I think you're mainly aiming to make sure both public IPs are utilized by the proper networks.
i.e.
172.16.1.0/24 for your workstations, with DHCP, assigned to VLAN10
172.16.2.0/29 for your servers, statically assigned, on VLAN20
That all being said here is what I personally would try and setup to get your gear online.
int g0/0
ip address dhcp
This will pull an IP from your modem and give it to your external port. I suspect it will be an ISP internal IP because I doubt they'd give your modem a publicly routable IP. That'd be weird.
In this scenario, you should not be manually inputting any default routes on your router as it should all be supplied from the DHCP pull.
int g0/1.10
ip address 172.16.1.1 255.255.255.0
int g0/1.20
ip address 172.16.2.1 255.255.255.248
This setups the internal gateways for your two networks. So all your workstations will be pointing to 172.16.1.1 and your servers to 172.16.2.1
After that you'll need to setup NAT rules on the router to handle passing of traffic outwards for your workstations.
int g0/0
ip nat outside
This setups your external facing interface as your outside nat interface.
int g0/1.10
ip nat inside
This setups your internal facing interface as an inside nat interface.
Router(config)# ip nat pool internet 128.66.0.2 128.66.0.2 prefix 24
Creates a NAT pool named internet being translated to one of your public IPs.
Router(config)# ip nat inside source list 7 pool name internet overload
This says to NAT all IPs in list 7 to the NAT pool you just created and that you can overload it. Which is to say more than one internal IP can use the same external IP.
Router(config)# access-list 7 172.16.1.0 0.0.0.255
Creates the list referenced in the previous command. Now onto NAT for your servers, which I suggest be statically assigned if you want them publicly available.
int g0/1.20
ip nat inside
Same as before, this setups your internal interface as an inside NAT interface.
Router(config)# ip nat inside source static 172.16.2.(2-6) 128.66.1.(2-6)
A new line for each static assignment is needed. This creates a static translation between your internal IP and your external IP that was assigned to you.
As for your switch; all you would need to do is properly tag your ports depending on what is plugged in and make sure your trunk is passing both VLANs.
At this point both subnets should hitting your router, and your router should know where to pass the traffic, be it internally (your workstations getting to your servers) or externally (internet). Access control can either be setup with ACLs on the router, a stand-alone firewall, or firewalls on your servers.
Now this all hinges on how your ISP has your modem setup. If it works the way I think it works, when your external interface pulls it's information through DHCP, your router should populate both your public IP ranges so that when your router NATs it knows where to send your traffic.
I suspect someone will give a better written answer, but hopefully this points you in the correct direction.
I also referenced the following link for help on the NAT parts as they are definitely not something I play with very often.
http://www.cisco.com/c/en/us/support/docs/ip/network-address-translation-nat/13772-12.html
First off - your English appears to me to be excellent. Secondly your summation of bridging (question 1) and consequently your understanding of the subject are very good. I would probably word some of that slightly different but your summation is fair and it appears that your understanding is good.
Let's make one assumption at this point to keep things simple - this is all Ethernet and IP.
Having said that there are two steps that I would add to your bridging summation that might clear up your understanding of routing (question 2) a little:
- when your network stack is handed data to transmit there is a route table look up done (every device on an IP network contains a route table - to see it from a command prompt - on linux type "route", on windows type "route print".) to determine two things:
a) which interface to transmit the data out
b) if the destination is directly reachable or is remote (beyond a router).
- Once the route is determined the network stack will ARP for a MAC address.
So when Alice is sending data to Charlie she does a route lookup - it is determined that his machine is directly accessible on the LAN. She then ARPs for his MAC address. Once the route has been determined and the MAC address has been acquired the network stack can then assemble the packet for transmission. This particular conversation as you mentioned only traverses switch A as it inspects the destination MAC.
Now that we have fleshed out question one a little better let's apply some of these concepts to question 2.
When Alice desires to send data to Bob the first step is a route lookup. It is determined that Bob is not on the LAN. Thus the route to Bob is the default route (assuming Router A is configured as such). (As your book points out Router A - and by extension Alice - don't know where Bob is. They only know the general direction - or "route".) So Alice ARPs for Router A. Then assembles the packet with destination IP address(network layer) of Bob and MAC address(datalink layer) of Router A. Upon receiving this packet Router A 1)strips off the MAC address(datalink layer) of Alice 2)does a route lookup 3)ARPs for router B 4)then reassembles the packet with MAC address of Router B. Router B repeats these steps ARPing for Bob and forwards the packet.
So the network layer is assembled at the start - source Alice and destination Bob - and never changes. The datalink layer on the other hand is deleted and reassembled each and every leg of the trip.
Best Answer
Routers only route between LANs. You can have a fully functional LAN, including DHCP, without a router. You only need a router if you need to be able to communicate with other LANs.
When you refer to "Link Local," I think you are really meaning APIPA. This will actually determine if a host is trying to use an already used link-local address and change it.
Frames do not get "directed towards a specific IP address;" frames have MAC addresses which a switch will use to send a frame send to a specific switch port. You are confusing layer-2 frames and layer-3 packets. A LAN is a layer-2 concept.
Whether or not you have DHCP on a LAN, the LAN can function normally, and printers, etc. can be discovered the same way they would if DHCP was on the LAN, assuming the devices were assigned IP addresses in the LAN network.