home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 1 / HACKER1.ISO / phrk3 / phrack29.3 < prev    next >
Text File  |  1992-09-26  |  43KB  |  712 lines

  1.  
  2.                                 ==Phrack Inc.==
  3.  
  4.                      Volume Three, Issue 29, File #3 of 12
  5.  
  6.        <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  7.        <>                                                            <>
  8.        <>           Introduction to the Internet Protocols           <>
  9.        <>           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           <>
  10.        <>        Chapter Nine Of The Future Transcendent Saga        <>
  11.        <>                                                            <>
  12.        <>                    Part Two of Two Files                   <>
  13.        <>                                                            <>
  14.        <>                Presented by Knight Lightning               <>
  15.        <>                     September 27, 1989                     <>
  16.        <>                                                            <>
  17.        <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  18.  
  19.  
  20. Prologue - Part Two
  21. ~~~~~~~~
  22. A great deal of the material in this file comes from "Introduction to the
  23. Internet Protocols" by Charles L. Hedrick of Rutgers University.  That material
  24. is copyrighted and is used in this file by permission.  Time differention and
  25. changes in the wide area networks have made it neccessary for some details of
  26. the file to updated and in some cases reworded for better understanding by our
  27. readers.  Also, Unix is a trademark of AT&T Technologies, Inc. -- Again, just
  28. thought I'd let you know.
  29.  
  30. Table of Contents - Part Two
  31. ~~~~~~~~~~~~~~~~~
  32. *  Introduction - Part Two
  33. *  Well Known Sockets And The Applications Layer
  34. *  Protocols Other Than TCP:  UDP and ICMP
  35. *  Keeping Track Of Names And Information:  The Domain System
  36. *  Routing
  37. *  Details About The Internet Addresses:  Subnets And Broadcasting
  38. *  Datagram Fragmentation And Reassembly
  39. *  Ethernet Encapsulation:  ARP
  40. *  Getting More Information
  41.  
  42.  
  43. Introduction - Part Two
  44. ~~~~~~~~~~~~
  45. This article is a brief introduction to TCP/IP, followed by suggestions on
  46. what to read for more information.  This is not intended to be a complete
  47. description, but it can give you a reasonable idea of the capabilities of the
  48. protocols.  However, if you need to know any details of the technology, you
  49. will want to read the standards yourself.
  50.  
  51. Throughout this file, you will find references to the standards, in the form of
  52. "RFC" (Request For Comments) or "IEN" (Internet Engineering Notes) numbers --
  53. these are document numbers.  The final section (Getting More Information)
  54. explains how you can get copies of those standards.
  55.  
  56.  
  57. Well-Known Sockets And The Applications Layer
  58. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  59. In part one of this series, I described how a stream of data is broken up into
  60. datagrams, sent to another computer, and put back together.  However something
  61. more is needed in order to accomplish anything useful.  There has to be a way
  62. for you to open a connection to a specified computer, log into it, tell it what
  63. file you want, and control the transmission of the file.  (If you have a
  64. different application in mind, e.g. computer mail, some analogous protocol is
  65. needed.)  This is done by "application protocols."  The application protocols
  66. run "on top" of TCP/IP.  That is, when they want to send a message, they give
  67. the message to TCP.  TCP makes sure it gets delivered to the other end.
  68. Because TCP and IP take care of all the networking details, the applications
  69. protocols can treat a network connection as if it were a simple byte stream,
  70. like a terminal or phone line.
  71.  
  72. Before going into more details about applications programs, we have to describe
  73. how you find an application.  Suppose you want to send a file to a computer
  74. whose Internet address is 128.6.4.7.  To start the process, you need more than
  75. just the Internet address.  You have to connect to the FTP server at the other
  76. end.  In general, network programs are specialized for a specific set of tasks.
  77. Most systems have separate programs to handle file transfers, remote terminal
  78. logins, mail, etc.  When you connect to 128.6.4.7, you have to specify that you
  79. want to talk to the FTP server.  This is done by having "well-known sockets"
  80. for each server.  Recall that TCP uses port numbers to keep track of individual
  81. conversations.  User programs normally use more or less random port numbers.
  82. However specific port numbers are assigned to the programs that sit waiting for
  83. requests.  For example, if you want to send a file, you will start a program
  84. called "ftp."  It will open a connection using some random number, say 1234,
  85. for the port number on its end.  However it will specify port number 21 for the
  86. other end.  This is the official port number for the FTP server.  Note that
  87. there are two different programs involved.  You run ftp on your side.  This is
  88. a program designed to accept commands from your terminal and pass them on to
  89. the other end.  The program that you talk to on the other machine is the FTP
  90. server.  It is designed to accept commands from the network connection, rather
  91. than an interactive terminal.  There is no need for your program to use a
  92. well-known socket number for itself.  Nobody is trying to find it.  However the
  93. servers have to have well-known numbers, so that people can open connections to
  94. them and start sending them commands.  The official port numbers for each
  95. program are given in "Assigned Numbers."
  96.  
  97. Note that a connection is actually described by a set of 4 numbers:  The
  98. Internet address at each end, and the TCP port number at each end.  Every
  99. datagram has all four of those numbers in it.  (The Internet addresses are in
  100. the IP header, and the TCP port numbers are in the TCP header.)  In order to
  101. keep things straight, no two connections can have the same set of numbers.
  102. However it is enough for any one number to be different.  For example, it is
  103. perfectly possible for two different users on a machine to be sending files to
  104. the same other machine.  This could result in connections with the following
  105. parameters:
  106.  
  107.                      Internet addresses         TCP ports
  108.       connection 1  128.6.4.194, 128.6.4.7      1234, 21
  109.       connection 2  128.6.4.194, 128.6.4.7      1235, 21
  110.  
  111. Since the same machines are involved, the Internet addresses are the same.
  112. Since they are both doing file transfers, one end of the connection involves
  113. the well-known port number for FTP.  The only thing that differs is the port
  114. number for the program that the users are running.  That's enough of a
  115. difference.  Generally, at least one end of the connection asks the network
  116. software to assign it a port number that is guaranteed to be unique.  Normally,
  117. it's the user's end, since the server has to use a well-known number.
  118.  
  119. Now that we know how to open connections, let's get back to the applications
  120. programs.  As mentioned earlier, once TCP has opened a connection, we have
  121. something that might as well be a simple wire.  All the hard parts are handled
  122. by TCP and IP.  However we still need some agreement as to what we send over
  123. this connection.  In effect this is simply an agreement on what set of commands
  124. the application will understand, and the format in which they are to be sent.
  125. Generally, what is sent is a combination of commands and data.  They use
  126. context to differentiate.  For example, the mail protocol works like this:
  127. Your mail program opens a connection to the mail server at the other end.  Your
  128. program gives it your machine's name, the sender of the message, and the
  129. recipients you want it sent to.  It then sends a command saying that it is
  130. starting the message.  At that point, the other end stops treating what it sees
  131. as commands, and starts accepting the message.  Your end then starts sending
  132. the text of the message.  At the end of the message, a special mark is sent (a
  133. dot in the first column).  After that, both ends understand that your program
  134. is again sending commands.  This is the simplest way to do things, and the one
  135. that most applications use.
  136.  
  137. File transfer is somewhat more complex.  The file transfer protocol involves
  138. two different connections.  It starts out just like mail.  The user's program
  139. sends commands like "log me in as this user," "here is my password," "send me
  140. the file with this name."  However once the command to send data is sent, a
  141. second connection is opened for the data itself.  It would certainly be
  142. possible to send the data on the same connection, as mail does.  However file
  143. transfers often take a long time.  The designers of the file transfer protocol
  144. wanted to allow the user to continue issuing commands while the transfer is
  145. going on.  For example, the user might make an inquiry, or he might abort the
  146. transfer.  Thus the designers felt it was best to use a separate connection for
  147. the data and leave the original command connection for commands.  (It is also
  148. possible to open command connections to two different computers, and tell them
  149. to send a file from one to the other.  In that case, the data couldn't go over
  150. the command connection.)
  151.  
  152. Remote terminal connections use another mechanism still.  For remote logins,
  153. there is just one connection.  It normally sends data.  When it is necessary to
  154. send a command (e.g. to set the terminal type or to change some mode), a
  155. special character is used to indicate that the next character is a command.  If
  156. the user happens to type that special character as data, two of them are sent.
  157.  
  158. I am not going to describe the application protocols in detail in this file.
  159. It is better to read the RFCs yourself.  However there are a couple of common
  160. conventions used by applications that will be described here.  First, the
  161. common network representation:  TCP/IP is intended to be usable on any
  162. computer.  Unfortunately, not all computers agree on how data is represented.
  163.  
  164. There are differences in character codes (ASCII vs. EBCDIC), in end of line
  165. conventions (carriage return, line feed, or a representation using counts), and
  166. in whether terminals expect characters to be sent individually or a line at a
  167. time.  In order to allow computers of different kinds to communicate, each
  168. applications protocol defines a standard representation.  Note that TCP and IP
  169. do not care about the representation.  TCP simply sends octets.  However the
  170. programs at both ends have to agree on how the octets are to be interpreted.
  171.  
  172. The RFC for each application specifies the standard representation for that
  173. application.  Normally it is "net ASCII."  This uses ASCII characters, with end
  174. of line denoted by a carriage return followed by a line feed.  For remote
  175. login, there is also a definition of a "standard terminal," which turns out to
  176. be a half-duplex terminal with echoing happening on the local machine.  Most
  177. applications also make provisions for the two computers to agree on other
  178. representations that they may find more convenient.  For example, PDP-10's have
  179. 36-bit words.  There is a way that two PDP-10's can agree to send a 36-bit
  180. binary file.  Similarly, two systems that prefer full-duplex terminal
  181. conversations can agree on that.  However each application has a standard
  182. representation, which every machine must support.
  183.  
  184. So that you might get a better idea of what is involved in the application
  185. protocols, here is an imaginary example of SMTP (the simple mail transfer
  186. protocol.)  Assume that a computer called FTS.PHRACK.EDU wants to send the
  187. following message.
  188.  
  189.    Date: Fri, 17 Nov 89 15:42:06 EDT
  190.    From: knight@fts.phrack.edu
  191.    To: taran@msp.phrack.edu
  192.    Subject: Anniversary
  193.  
  194.    Four years is quite a long time to be around.  Happy Anniversary!
  195.  
  196. Note that the format of the message itself is described by an Internet standard
  197. (RFC 822).  The standard specifies the fact that the message must be
  198. transmitted as net ASCII (i.e. it must be ASCII, with carriage return/linefeed
  199. to delimit lines).  It also describes the general structure, as a group of
  200. header lines, then a blank line, and then the body of the message.  Finally, it
  201. describes the syntax of the header lines in detail.  Generally they consist of
  202. a keyword and then a value.
  203.  
  204. Note that the addressee is indicated as TARAN@MSP.PHRACK.EDU.  Initially,
  205. addresses were simply "person at machine."  Today's standards are much more
  206. flexible.  There are now provisions for systems to handle other systems' mail.
  207. This can allow automatic forwarding on behalf of computers not connected to the
  208. Internet.  It can be used to direct mail for a number of systems to one central
  209. mail server.  Indeed there is no requirement that an actual computer by the
  210. name of FTS.PHRACK.EDU even exist (and it doesn't).  The name servers could be
  211. set up so that you mail to department names, and each department's mail is
  212. routed automatically to an appropriate computer.  It is also possible that the
  213. part before the @ is something other than a user name.  It is possible for
  214. programs to be set up to process mail.  There are also provisions to handle
  215. mailing lists, and generic names such as "postmaster" or "operator."
  216.  
  217. The way the message is to be sent to another system is described by RFCs 821
  218. and 974.  The program that is going to be doing the sending asks the name
  219. server several queries to determine where to route the message.  The first
  220. query is to find out which machines handle mail for the name FTS.PHRACK.EDU.
  221. In this case, the server replies that FTS.PHRACK.EDU handles its own mail.  The
  222. program then asks for the address of FTS.PHRACK.EDU, which for the sake of this
  223. example is is 269.517.724.5.  Then the the mail program opens a TCP connection
  224. to port 25 on 269.517.724.5.  Port 25 is the well-known socket used for
  225. receiving mail.  Once this connection is established, the mail program starts
  226. sending commands.  Here is a typical conversation.  Each line is labelled as to
  227. whether it is from FTS or MSP.  Note that FTS initiated the connection:
  228.  
  229.      MSP    220 MSP.PHRACK.EDU SMTP Service at 17 Nov 89 09:35:24 EDT
  230.      FTS    HELO fts.phrack.edu
  231.      MSP    250 MSP.PHRACK.EDU - Hello, FTS.PHRACK.EDU
  232.      FTS    MAIL From:<knight@fts.phrack.edu>
  233.      MSP    250 MAIL accepted
  234.      FTS    RCPT To:<taran@msp.phrack.edu>
  235.      MSP    250 Recipient accepted
  236.      FTS    DATA
  237.      MSP    354 Start mail input; end with <CRLF>.<CRLF>
  238.      FTS    Date: Fri, 17 Nov 89 15:42:06 EDT
  239.      FTS    From: knight@fts.phrack.edu
  240.      FTS    To: taran@msp.phrack.edu
  241.      FTS    Subject: Anniversary
  242.      FTS
  243.      FTS    Four years is quite a long time to be around.  Happy Anniversary!
  244.      FTS    .
  245.      MSP    250 OK
  246.      FTS    QUIT
  247.      MSP    221 MSP.PHRACK.EDU Service closing transmission channel
  248.  
  249. The commands all use normal text.  This is typical of the Internet standards.
  250. Many of the protocols use standard ASCII commands.  This makes it easy to watch
  251. what is going on and to diagnose problems.  The mail program keeps a log of
  252. each conversation so if something goes wrong, the log file can simply be mailed
  253. to the postmaster.  Since it is normal text, he can see what was going on.  It
  254. also allows a human to interact directly with the mail server, for testing.
  255.  
  256. The responses all begin with numbers.  This is also typical of Internet
  257. protocols.  The allowable responses are defined in the protocol.  The numbers
  258. allow the user program to respond unambiguously.  The rest of the response is
  259. text, which is normally for use by any human who may be watching or looking at
  260. a log.  It has no effect on the operation of the programs.  The commands
  261. themselves simply allow the mail program on one end to tell the mail server the
  262. information it needs to know in order to deliver the message.  In this case,
  263. the mail server could get the information by looking at the message itself.
  264.  
  265. Every session must begin with a HELO, which gives the name of the system that
  266. initiated the connection.  Then the sender and recipients are specified.  There
  267. can be more than one RCPT command, if there are several recipients.  Finally
  268. the data itself is sent.  Note that the text of the message is terminated by a
  269. line containing just a period, but if such a line appears in the message, the
  270. period is doubled.  After the message is accepted, the sender can send another
  271. message, or terminate the session as in the example above.
  272.  
  273. Generally, there is a pattern to the response numbers.  The protocol defines
  274. the specific set of responses that can be sent as answers to any given command.
  275. However programs that don't want to analyze them in detail can just look at the
  276. first digit.  In general, responses that begin with a 2 indicate success.
  277. Those that begin with 3 indicate that some further action is needed, as shown
  278. above.  4 and 5 indicate errors.  4 is a "temporary" error, such as a disk
  279. filling.  The message should be saved, and tried again later.  5 is a permanent
  280. error, such as a non-existent recipient.  The message should be returned to the
  281. sender with an error message.
  282.  
  283. For more details about the protocols mentioned in this section, see RFCs
  284. 821/822 for mail, RFC 959 for file transfer, and RFCs 854/855 for remote
  285. logins.  For the well-known port numbers, see the current edition of Assigned
  286. Numbers, and possibly RFC 814.
  287.  
  288.  
  289. Protocols Other Than TCP:  UDP and ICMP
  290. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  291. Thus far only connections that use TCP have been described.  Remember that TCP
  292. is responsible for breaking up messages into datagrams, and reassembling them
  293. properly.  However in many applications, there are messages that will always
  294. fit in a single datagram.  An example is name lookup.  When a user attempts to
  295. make a connection to another system, he will generally specify the system by
  296. name, rather than Internet address.  His system has to translate that name to
  297. an address before it can do anything.  Generally, only a few systems have the
  298. database used to translate names to addresses.  So the user's system will want
  299. to send a query to one of the systems that has the database.
  300.  
  301. This query is going to be very short.  It will certainly fit in one datagram.
  302. So will the answer.  Thus it seems silly to use TCP.  Of course TCP does more
  303. than just break things up into datagrams.  It also makes sure that the data
  304. arrives, resending datagrams where necessary.  But for a question that fits in
  305. a single datagram, all of the complexity of TCP is not needed.  If there is not
  306. an answer after a few seconds, you can just ask again.  For applications like
  307. this, there are alternatives to TCP.
  308.  
  309. The most common alternative is UDP ("user datagram protocol").  UDP is designed
  310. for applications where you don't need to put sequences of datagrams together.
  311. It fits into the system much like TCP.  There is a UDP header.  The network
  312. software puts the UDP header on the front of your data, just as it would put a
  313. TCP header on the front of your data.  Then UDP sends the data to IP, which
  314. adds the IP header, putting UDP's protocol number in the protocol field instead
  315. of TCP's protocol number.
  316.  
  317. UDP doesn't do as much as TCP does.  It does not split data into multiple
  318. datagrams and it does not keep track of what it has sent so it can resend if
  319. necessary.  About all that UDP provides is port numbers so that several
  320. programs can use UDP at once.  UDP port numbers are used just like TCP port
  321. numbers.  There are well-known port numbers for servers that use UDP.
  322.  
  323. The UDP header is shorter than a TCP header.  It still has source and
  324. destination port numbers, and a checksum, but that's about it.  UDP is used by
  325. the protocols that handle name lookups (see IEN 116, RFC 882, and RFC 883) and
  326. a number of similar protocols.
  327.  
  328. Another alternative protocol is ICMP ("Internet control message protocol").
  329. ICMP is used for error messages, and other messages intended for the TCP/IP
  330. software itself, rather than any particular user program.  For example, if you
  331. attempt to connect to a host, your system may get back an ICMP message saying
  332. "host unreachable."  ICMP can also be used to find out some information about
  333. the network.  See RFC 792 for details of ICMP.
  334.  
  335. ICMP is similar to UDP, in that it handles messages that fit in one datagram.
  336. However it is even simpler than UDP.  It does not even have port numbers in its
  337. header.  Since all ICMP messages are interpreted by the network software
  338. itself, no port numbers are needed to say where an ICMP message is supposed to
  339. go.
  340.  
  341.  
  342. Keeping Track Of Names And Information:  The Domain System
  343. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  344. As we indicated earlier, the network software generally needs a 32-bit Internet
  345. address in order to open a connection or send a datagram.  However users prefer
  346. to deal with computer names rather than numbers.  Thus there is a database that
  347. allows the software to look up a name and find the corresponding number.
  348.  
  349. When the Internet was small, this was easy.  Each system would have a file that
  350. listed all of the other systems, giving both their name and number.  There are
  351. now too many computers for this approach to be practical.  Thus these files
  352. have been replaced by a set of name servers that keep track of host names and
  353. the corresponding Internet addresses.  (In fact these servers are somewhat more
  354. general than that.  This is just one kind of information stored in the domain
  355. system.)  A set of interlocking servers are used rather than a single central
  356. one.
  357.  
  358. There are now so many different institutions connected to the Internet that it
  359. would be impractical for them to notify a central authority whenever they
  360. installed or moved a computer.  Thus naming authority is delegated to
  361. individual institutions.  The name servers form a tree, corresponding to
  362. institutional structure. The names themselves follow a similar structure.  A
  363. typical example is the name BORAX.LCS.MIT.EDU.  This is a computer at the
  364. Laboratory for Computer Science (LCS) at MIT.  In order to find its Internet
  365. address, you might potentially have to consult 4 different servers.
  366.  
  367. First, you would ask a central server (called the root) where the EDU server
  368. is.  EDU is a server that keeps track of educational institutions.  The root
  369. server would give you the names and Internet addresses of several servers for
  370. EDU.  You would then ask EDU where the server for MIT is.  It would give you
  371. names and Internet addresses of several servers for MIT.  Then you would ask
  372. MIT where the server for LCS is, and finally you would ask one of the LCS
  373. servers about BORAX.  The final result would be the Internet address for
  374. BORAX.LCS.MIT.EDU.  Each of these levels is referred to as a "domain."  The
  375. entire name, BORAX.LCS.MIT.EDU, is called a "domain name."  (So are the names
  376. of the higher-level domains, such as LCS.MIT.EDU, MIT.EDU, and EDU.)
  377.  
  378. Fortunately, you don't really have to go through all of this most of the time.
  379. First of all, the root name servers also happen to be the name servers for the
  380. top-level domains such as EDU.  Thus a single query to a root server will get
  381. you to MIT.  Second, software generally remembers answers that it got before.
  382. So once we look up a name at LCS.MIT.EDU, our software remembers where to find
  383. servers for LCS.MIT.EDU, MIT.EDU, and EDU.  It also remembers the translation
  384. of BORAX.LCS.MIT.EDU.  Each of these pieces of information has a "time to live"
  385. associated with it.  Typically this is a few days.  After that, the information
  386. expires and has to be looked up again.  This allows institutions to change
  387. things.
  388.  
  389. The domain system is not limited to finding out Internet addresses.  Each
  390. domain name is a node in a database.  The node can have records that define a
  391. number of different properties.  Examples are Internet address, computer type,
  392. and a list of services provided by a computer.  A program can ask for a
  393. specific piece of information, or all information about a given name.  It is
  394. possible for a node in the database to be marked as an "alias" (or nickname)
  395. for another node.  It is also possible to use the domain system to store
  396. information about users, mailing lists, or other objects.
  397.  
  398. There is an Internet standard defining the operation of these databases as well
  399. as the protocols used to make queries of them.  Every network utility has to be
  400. able to make such queries since this is now the official way to evaluate host
  401. names.  Generally utilities will talk to a server on their own system.  This
  402. server will take care of contacting the other servers for them.  This keeps
  403. down the amount of code that has to be in each application program.
  404.  
  405. The domain system is particularly important for handling computer mail.  There
  406. are entry types to define what computer handles mail for a given name to
  407. specify where an individual is to receive mail and to define mailing lists.
  408.  
  409. See RFCs 882, 883, and 973 for specifications of the domain system.  RFC 974
  410. defines the use of the domain system in sending mail.
  411.  
  412. Routing
  413. ~~~~~~~
  414. The task of finding how to get a datagram to its destination is referred to as
  415. "routing."  Many of the details depend upon the particular implementation.
  416. However some general things can be said.
  417.  
  418. It is necessary to understand the model on which IP is based.  IP assumes that
  419. a system is attached to some local network.  It is assumed that the system can
  420. send datagrams to any other system on its own network.  (In the case of
  421. Ethernet, it simply finds the Ethernet address of the destination system, and
  422. puts the datagram out on the Ethernet.)  The problem comes when a system is
  423. asked to send a datagram to a system on a different network.  This problem is
  424. handled by gateways.
  425.  
  426. A gateway is a system that connects a network with one or more other networks.
  427. Gateways are often normal computers that happen to have more than one network
  428. interface.  The software on a machine must be set up so that it will forward
  429. datagrams from one network to the other.  That is, if a machine on network
  430. 128.6.4 sends a datagram to the gateway, and the datagram is addressed to a
  431. machine on network 128.6.3, the gateway will forward the datagram to the
  432. destination.  Major communications centers often have gateways that connect a
  433. number of different networks.
  434.  
  435. Routing in IP is based entirely upon the network number of the destination
  436. address.  Each computer has a table of network numbers.  For each network
  437. number, a gateway is listed.  This is the gateway to be used to get to that
  438. network.  The gateway does not have to connect directly to the network, it just
  439. has to be the best place to go to get there.
  440.  
  441. When a computer wants to send a datagram, it first checks to see if the
  442. destination address is on the system's own local network.  If so, the datagram
  443. can be sent directly.  Otherwise, the system expects to find an entry for the
  444. network that the destination address is on.  The datagram is sent to the
  445. gateway listed in that entry.  This table can get quite big.  For example, the
  446. Internet now includes several hundred individual networks.  Thus various
  447. strategies have been developed to reduce the size of the routing table.  One
  448. strategy is to depend upon "default routes."  There is often only one gateway
  449. out of a network.
  450.  
  451. This gateway might connect a local Ethernet to a campus-wide backbone network.
  452. In that case, it is not neccessary to have a separate entry for every network
  453. in the world.  That gateway is simply defined as a "default."  When no specific
  454. route is found for a datagram, the datagram is sent to the default gateway.  A
  455. default gateway can even be used when there are several gateways on a network.
  456. There are provisions for gateways to send a message saying "I'm not the best
  457. gateway -- use this one instead."  (The message is sent via ICMP.  See RFC
  458. 792.)  Most network software is designed to use these messages to add entries
  459. to their routing tables.  Suppose network 128.6.4 has two gateways, 128.6.4.59
  460. and 128.6.4.1.  128.6.4.59 leads to several other internal Rutgers networks.
  461. 128.6.4.1 leads indirectly to the NSFnet.  Suppose 128.6.4.59 is set as a
  462. default gateway, and there are no other routing table entries.  Now what
  463. happens when you need to send a datagram to MIT?  MIT is network 18.  Since
  464. there is no entry for network 18, the datagram will be sent to the default,
  465. 128.6.4.59.  This gateway is the wrong one.  So it will forward the datagram to
  466. 128.6.4.1.  It will also send back an error saying in effect:  "to get to
  467. network 18, use 128.6.4.1."  The software will then add an entry to the routing
  468. table.  Any future datagrams to MIT will then go directly to 128.6.4.1.  (The
  469. error message is sent using the ICMP protocol.  The message type is called
  470. "ICMP redirect.")
  471.  
  472. Most IP experts recommend that individual computers should not try to keep
  473. track of the entire network.  Instead, they should start with default gateways
  474. and let the gateways tell them the routes as just described.  However this
  475. doesn't say how the gateways should find out about the routes.  The gateways
  476. can't depend upon this strategy.  They have to have fairly complete routing
  477. tables.  For this, some sort of routing protocol is needed.  A routing protocol
  478. is simply a technique for the gateways to find each other and keep up to date
  479. about the best way to get to every network.  RFC 1009 contains a review of
  480. gateway design and routing.
  481.  
  482.  
  483. Details About Internet Addresses:  Subnets And Broadcasting
  484. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  485. Internet addresses are 32-bit numbers, normally written as 4 octets (in
  486. decimal), e.g. 128.6.4.7.  There are actually 3 different types of address.
  487. The problem is that the address has to indicate both the network and the host
  488. within the network.  It was felt that eventually there would be lots of
  489. networks.  Many of them would be small, but probably 24 bits would be needed to
  490. represent all the IP networks.  It was also felt that some very big networks
  491. might need 24 bits to represent all of their hosts.  This would seem to lead to
  492. 48 bit addresses.  But the designers really wanted to use 32 bit addresses.  So
  493. they adopted a kludge.  The assumption is that most of the networks will be
  494. small.  So they set up three different ranges of address.
  495.  
  496. Addresses beginning with 1 to 126 use only the first octet for the network
  497. number.  The other three octets are available for the host number.  Thus 24
  498. bits are available for hosts.  These numbers are used for large networks, but
  499. there can only be 126 of these.  The ARPAnet is one and there are a few large
  500. commercial networks.  But few normal organizations get one of these "class A"
  501. addresses.
  502.  
  503. For normal large organizations, "class B" addresses are used.  Class B
  504. addresses use the first two octets for the network number.  Thus network
  505. numbers are 128.1 through 191.254.  (0 and 255 are avoided for reasons to be
  506. explained below.  Addresses beginning with 127 are also avoided because they
  507. are used by some systems for special purposes.)  The last two octets are
  508. available for host addesses, giving 16 bits of host address.  This allows for
  509. 64516 computers, which should be enough for most organizations.  Finally, class
  510. C addresses use three octets in the range 192.1.1 to 223.254.254.  These allow
  511. only 254 hosts on each network, but there can be lots of these networks.
  512. Addresses above 223 are reserved for future use as class D and E (which are
  513. currently not defined).
  514.  
  515. 0 and 255 have special meanings.  0 is reserved for machines that do not know
  516. their address.  In certain circumstances it is possible for a machine not to
  517. know the number of the network it is on, or even its own host address.  For
  518. example, 0.0.0.23 would be a machine that knew it was host number 23, but
  519. didn't know on what network.
  520.  
  521. 255 is used for "broadcast."  A broadcast is a message that you want every
  522. system on the network to see.  Broadcasts are used in some situations where you
  523. don't know who to talk to.  For example, suppose you need to look up a host
  524. name and get its Internet address.  Sometimes you don't know the address of the
  525. nearest name server.  In that case, you might send the request as a broadcast.
  526. There are also cases where a number of systems are interested in information.
  527. It is then less expensive to send a single broadcast than to send datagrams
  528. individually to each host that is interested in the information.  In order to
  529. send a broadcast, you use an address that is made by using your network
  530. address, with all ones in the part of the address where the host number goes.
  531. For example, if you are on network 128.6.4, you would use 128.6.4.255 for
  532. broadcasts.  How this is actually implemented depends upon the medium.  It is
  533. not possible to send broadcasts on the ARPAnet, or on point to point lines, but
  534. it is possible on an Ethernet.  If you use an Ethernet address with all its
  535. bits on (all ones), every machine on the Ethernet is supposed to look at that
  536. datagram.
  537.  
  538. Because 0 and 255 are used for unknown and broadcast addresses, normal hosts
  539. should never be given addresses containing 0 or 255.  Addresses should never
  540. begin with 0, 127, or any number above 223.
  541.  
  542.  
  543. Datagram Fragmentation And Reassembly
  544. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  545. TCP/IP is designed for use with many different kinds of networks.
  546. Unfortunately, network designers do not agree about how big packets can be.
  547. Ethernet packets can be 1500 octets long.  ARPAnet packets have a maximum of
  548. around 1000 octets.  Some very fast networks have much larger packet sizes.
  549. You might think that IP should simply settle on the smallest possible size, but
  550. this would cause serious performance problems.  When transferring large files,
  551. big packets are far more efficient than small ones.  So it is best to be able
  552. to use the largest packet size possible, but it is also necessary to be able to
  553. handle networks with small limits.  There are two provisions for this.
  554.  
  555. TCP has the ability to "negotiate" about datagram size.  When a TCP connection
  556. first opens, both ends can send the maximum datagram size they can handle.  The
  557. smaller of these numbers is used for the rest of the connection.  This allows
  558. two implementations that can handle big datagrams to use them, but also lets
  559. them talk to implementations that cannot handle them.  This does not completely
  560. solve the problem.  The most serious problem is that the two ends do not
  561. necessarily know about all of the steps in between.  For this reason, there are
  562. provisions to split datagrams up into pieces.  This is referred to as
  563. "fragmentation."
  564.  
  565. The IP header contains fields indicating that a datagram has been split and
  566. enough information to let the pieces be put back together.  If a gateway
  567. connects an Ethernet to the Arpanet, it must be prepared to take 1500-octet
  568. Ethernet packets and split them into pieces that will fit on the Arpanet.
  569. Furthermore, every host implementation of TCP/IP must be prepared to accept
  570. pieces and put them back together.  This is referred to as "reassembly."
  571.  
  572. TCP/IP implementations differ in the approach they take to deciding on datagram
  573. size.  It is fairly common for implementations to use 576-byte datagrams
  574. whenever they can't verify that the entire path is able to handle larger
  575. packets.  This rather conservative strategy is used because of the number of
  576. implementations with bugs in the code to reassemble fragments.  Implementors
  577. often try to avoid ever having fragmentation occur.  Different implementors
  578. take different approaches to deciding when it is safe to use large datagrams.
  579. Some use them only for the local network.  Others will use them for any network
  580. on the same campus.  576 bytes is a "safe" size which every implementation must
  581. support.
  582.  
  583. Ethernet Encapsulation:  ARP
  584. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  585. In Part One of Introduction to the Internet Protocols (Phrack Inc., Volume
  586. Three, Issue 28, File #3 of 12) there was a brief description about what IP
  587. datagrams look like on an Ethernet.  The discription showed the Ethernet header
  588. and checksum, but it left one hole:  It did not say how to figure out what
  589. Ethernet address to use when you want to talk to a given Internet address.
  590. There is a separate protocol for this called ARP ("address resolution
  591. protocol") and it is not an IP protocal as ARP datagrams do not have IP
  592. headers.
  593.  
  594. Suppose you are on system 128.6.4.194 and you want to connect to system
  595. 128.6.4.7.  Your system will first verify that 128.6.4.7 is on the same
  596. network, so it can talk directly via Ethernet.  Then it will look up 128.6.4.7
  597. in its ARP table to see if it already knows the Ethernet address.  If so, it
  598. will stick on an Ethernet header and send the packet.  Now suppose this system
  599. is not in the ARP table.  There is no way to send the packet because you need
  600. the Ethernet address.  So it uses the ARP protocol to send an ARP request.
  601. Essentially an ARP request says "I need the Ethernet address for 128.6.4.7".
  602. Every system listens to ARP requests.  When a system sees an ARP request for
  603. itself, it is required to respond.  So 128.6.4.7 will see the request and will
  604. respond with an ARP reply saying in effect "128.6.4.7 is 8:0:20:1:56:34".  Your
  605. system will save this information in its ARP table so future packets will go
  606. directly.
  607.  
  608. ARP requests must be sent as "broadcasts."  There is no way that an ARP request
  609. can be sent directly to the right system because the whole reason for sending
  610. an ARP request is that you do not know the Ethernet address.  So an Ethernet
  611. address of all ones is used, i.e. ff:ff:ff:ff:ff:ff.  By convention, every
  612. machine on the Ethernet is required to pay attention to packets with this as an
  613. address.  So every system sees every ARP requests.  They all look to see
  614. whether the request is for their own address.  If so, they respond.  If not,
  615. they could just ignore it, although some hosts will use ARP requests to update
  616. their knowledge about other hosts on the network, even if the request is not
  617. for them.  Packets whose IP address indicates broadcast (e.g. 255.255.255.255
  618. or 128.6.4.255) are also sent with an Ethernet address that is all ones.
  619.  
  620.  
  621. Getting More Information
  622. ~~~~~~~~~~~~~~~~~~~~~~~~
  623. This directory contains documents describing the major protocols.  There are
  624. hundreds of documents, so I have chosen the ones that seem most important.
  625. Internet standards are called RFCs (Request for Comments).  A proposed standard
  626. is initially issued as a proposal, and given an RFC number.  When it is finally
  627. accepted, it is added to Official Internet Protocols, but it is still referred
  628. to by the RFC number.  I have also included two IENs (Internet Engineering
  629. Notes).  IENs used to be a separate classification for more informal
  630. documents, but this classification no longer exists and RFCs are now used for
  631. all official Internet documents with a mailing list being used for more
  632. informal reports.
  633.  
  634. The convention is that whenever an RFC is revised, the revised version gets a
  635. new number.  This is fine for most purposes, but it causes problems with two
  636. documents:  Assigned Numbers and Official Internet Protocols.  These documents
  637. are being revised all the time and the RFC number keeps changing.  You will
  638. have to look in rfc-index.txt to find the number of the latest edition.  Anyone
  639. who is seriously interested in TCP/IP should read the RFC describing IP (791).
  640. RFC 1009 is also useful as it is a specification for gateways to be used by
  641. NSFnet and it contains an overview of a lot of the TCP/IP technology.
  642.  
  643. Here is a list of the documents you might want:
  644.  
  645.      rfc-index List of all RFCs
  646.      rfc1012   Somewhat fuller list of all RFCs
  647.      rfc1011   Official Protocols.  It's useful to scan this to see what tasks
  648.                protocols have been built for.  This defines which RFCs are
  649.                actual standards, as opposed to requests for comments.
  650.      rfc1010   Assigned Numbers.  If you are working with TCP/IP, you will
  651.                probably want a hardcopy of this as a reference.  It lists all
  652.                the offically defined well-known ports and lots of other
  653.                things.
  654.      rfc1009   NSFnet gateway specifications.  A good overview of IP routing
  655.                and gateway technology.
  656.      rfc1001/2 NetBIOS:  Networking for PCs
  657.      rfc973    Update on domains
  658.      rfc959    FTP (file transfer)
  659.      rfc950    Subnets
  660.      rfc937    POP2:  Protocol for reading mail on PCs
  661.      rfc894    How IP is to be put on Ethernet, see also rfc825
  662.      rfc882/3  Domains (the database used to go from host names to Internet
  663.                address and back -- also used to handle UUCP these days).  See
  664.                also rfc973
  665.      rfc854/5  Telnet - Protocol for remote logins
  666.      rfc826    ARP - Protocol for finding out Ethernet addresses
  667.      rfc821/2  Mail
  668.      rfc814    Names and ports - General concepts behind well-known ports
  669.      rfc793    TCP
  670.      rfc792    ICMP
  671.      rfc791    IP
  672.      rfc768    UDP
  673.      rip.doc   Details of the most commonly-used routing protocol
  674.      ien-116   Old name server (still needed by several kinds of systems)
  675.      ien-48    The Catenet model, general description of the philosophy behind
  676.                TCP/IP
  677.  
  678. The following documents are somewhat more specialized.
  679.  
  680.      rfc813    Window and acknowledgement strategies in TCP
  681.      rfc815    Datagram reassembly techniques
  682.      rfc816    Fault isolation and resolution techniques
  683.      rfc817    Modularity and efficiency in implementation
  684.      rfc879    The maximum segment size option in TCP
  685.      rfc896    Congestion control
  686.      rfc827,888,904,975,985    EGP and related issues
  687.  
  688. The most important RFCs have been collected into a three-volume set, the DDN
  689. Protocol Handbook.  It is available from the DDN Network Information Center at
  690. SRI International.  You should be able to get them via anonymous FTP from
  691. SRI-NIC.ARPA.  The file names are:
  692.  
  693.    RFCs:
  694.      rfc:rfc-index.txt
  695.      rfc:rfcxxx.txt
  696.    IENs:
  697.      ien:ien-index.txt
  698.      ien:ien-xxx.txt
  699.  
  700.  Sites with access to UUCP, but not FTP may be able to retreive them via
  701.  UUCP from UUCP host rutgers.  The file names would be
  702.  
  703.    RFCs:
  704.      /topaz/pub/pub/tcp-ip-docs/rfc-index.txt
  705.      /topaz/pub/pub/tcp-ip-docs/rfcxxx.txt
  706.    IENs:
  707.      /topaz/pub/pub/tcp-ip-docs/ien-index.txt
  708.      /topaz/pub/pub/tcp-ip-docs/ien-xxx.txt
  709. _______________________________________________________________________________
  710.  
  711. Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
  712.