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

  1.                                 ==Phrack Inc.==
  2.  
  3.                      Volume Three, Issue 28, File #3 of 12
  4.  
  5.        <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  6.        <>                                                            <>
  7.        <>           Introduction to the Internet Protocols           <>
  8.        <>           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           <>
  9.        <>        Chapter Eight Of The Future Transcendent Saga       <>
  10.        <>                                                            <>
  11.        <>                    Part One of Two Files                   <>
  12.        <>                                                            <>
  13.        <>                Presented by Knight Lightning               <>
  14.        <>                        July 3, 1989                        <>
  15.        <>                                                            <>
  16.        <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  17.  
  18.  
  19. Prologue
  20. ~~~~~~~~
  21. Much of the material in this file comes from "Introduction to the Internet
  22. Protocols" by Charles L. Hedrick of Rutgers University.  That material is
  23. copyrighted and is used in this file by permission.  Time differention and
  24. changes in the wide area networks have made it necessary for some details of
  25. the file to updated and in some cases reworded for better understanding of our
  26. readers.  Also, Unix is a trademark of AT&T Technologies, Inc. -- Just thought
  27. I'd let you know.
  28.  
  29. If you are not already familiar with TCP/IP, I would suggest that you read
  30. "Introduction to MIDNET" (Phrack Inc., Volume Three, Issue 27, File 3 of 12)
  31. for more information.  That file is Chapter Seven of The Future Transcendent
  32. Saga and contains information about TCP/IP and how it is used within the
  33. National Science Foundation Network (NSFnet).
  34.  
  35.  
  36. Table of Contents - Part One
  37. ~~~~~~~~~~~~~~~~~
  38. *  Introduction
  39. *  What Is TCP/IP?
  40. *  General Description Of The TCP/IP Protocols
  41.        The TCP Level
  42.        The IP Level
  43.        The Ethernet Level
  44.  
  45.  
  46. Introduction
  47. ~~~~~~~~~~~~
  48. This article is a brief introduction to TCP/IP, followed by suggestions on
  49. what to read for more information.  This is not intended to be a complete
  50. description, but it can give you a reasonable idea of the capabilities of the
  51. protocols.  However, if you need to know any details of the technology, you
  52. will want to read the standards yourself.
  53.  
  54. Throughout the article, you will find references to the standards, in the form
  55. of "RFC" (Request For Comments) or "IEN" (Internet Engineering Notes) numbers
  56. -- these are document numbers.  The final section (in Part Two) explains how
  57. you can get copies of those standards.
  58.  
  59.  
  60. What Is TCP/IP?
  61. ~~~~~~~~~~~~~~~
  62. TCP/IP is a set of protocols developed to allow cooperating computers to share
  63. resources across a network.  It was developed by a community of researchers
  64. centered around the ARPAnet.
  65.  
  66. First some basic definitions; The most accurate name for the set of protocols
  67. I am describing is the "Internet protocol suite."  TCP and IP are two of the
  68. protocols in this suite (they will be described below).  Because TCP and IP are
  69. the best known of the protocols, it has become common to use the term TCP/IP
  70. to refer to the whole family.
  71.  
  72. The Internet is a collection of networks, including the Arpanet, NSFnet,
  73. regional networks such as MIDnet (described in Chapter Seven of the Future
  74. Transcendent Saga), local networks at a number of University and research
  75. institutions, and a number of military networks.  The term "Internet" applies
  76. to this entire set of networks.
  77.  
  78. The subset of them that is managed by the Department of Defense is referred to
  79. as the "DDN" (Defense Data Network).  This includes some research-oriented
  80. networks, such as the ARPAnet, as well as more strictly military ones (because
  81. much of the funding for Internet protocol developments is done via the DDN
  82. organization, the terms Internet and DDN can sometimes seem equivalent).
  83.  
  84. All of these networks are connected to each other.  Users can send messages
  85. from any of them to any other, except where there are security or other policy
  86. restrictions on access.  Officially speaking, the Internet protocol documents
  87. are simply standards adopted by the Internet community for its own use.  The
  88. Department of Defense once issued a MILSPEC definition of TCP/IP that was
  89. intended to be a more formal definition, appropriate for use in purchasing
  90. specifications.  However most of the TCP/IP community continues to use the
  91. Internet standards.  The MILSPEC version is intended to be consistent with it.
  92.  
  93. Whatever it is called, TCP/IP is a family of protocols.  A few provide
  94. "low-level" functions needed for many applications.  These include IP, TCP, and
  95. UDP (all of which will be described in a bit more detail later in this file).
  96. Others are protocols for doing specific tasks, e.g. transferring files between
  97. computers, sending mail, or finding out who is logged in on another computer.
  98.  
  99. Initially TCP/IP was used mostly between minicomputers or mainframes.  These
  100. machines had their own disks, and generally were self-contained.  Thus the most
  101. important "traditional" TCP/IP services are:
  102.  
  103.     - File Transfer -- The file transfer protocol (FTP) allows a user on any
  104.       computer to get files from another computer, or to send files to another
  105.       computer.  Security is handled by requiring the user to specify a user
  106.       name and password for the other computer.
  107.  
  108.       Provisions are made for handling file transfer between machines with
  109.       different character set, end of line conventions, etc.  This is not quite
  110.       the same as "network file system" or "netbios" protocols, which will be
  111.       described later.  Instead, FTP is a utility that you run any time you
  112.       want to access a file on another system.  You use it to copy the file to
  113.       your own system.  You then can work with the local copy.  (See RFC 959
  114.       for specifications for FTP.)
  115.  
  116.     - Remote Login -- The network terminal protocol (TELNET) allows a user to
  117.       log in on any other computer on the network.  You start a remote session
  118.       by specifying a computer to connect to.  From that time until you finish
  119.       the session, anything you type is sent to the other computer.  Note that
  120.       you are really still talking to your own computer, but the telnet program
  121.       effectively makes your computer invisible while it is running.  Every
  122.       character you type is sent directly to the other system.  Generally, the
  123.       connection to the remote computer behaves much like a dialup connection.
  124.       That is, the remote system will ask you to log in and give a password, in
  125.       whatever manner it would normally ask a user who had just dialed it up.
  126.  
  127.       When you log off of the other computer, the telnet program exits, and you
  128.       will find yourself talking to your own computer.  Microcomputer
  129.       implementations of telnet generally include a terminal emulator for some
  130.       common type of terminal.  (See RFCs 854 and 855 for specifications for
  131.       telnet.  By the way, the telnet protocol should not be confused with
  132.       Telenet, a vendor of commercial network services.)
  133.  
  134.     - Computer Mail -- This allows you to send messages to users on other
  135.       computers.  Originally, people tended to use only one or two specific
  136.       computers and they would maintain "mail files" on those machines.  The
  137.       computer mail system is simply a way for you to add a message to another
  138.       user's mail file.  There are some problems with this in an environment
  139.       where microcomputers are used.
  140.  
  141.       The most serious is that a micro is not well suited to receive computer
  142.       mail.  When you send mail, the mail software expects to be able to open a
  143.       connection to the addressee's computer, in order to send the mail.  If
  144.       this is a microcomputer, it may be turned off, or it may be running an
  145.       application other than the mail system.  For this reason, mail is
  146.       normally handled by a larger system, where it is practical to have a mail
  147.       server running all the time.  Microcomputer mail software then becomes a
  148.       user interface that retrieves mail from the mail server.  (See RFC 821
  149.       and 822 for specifications for computer mail.  See RFC 937 for a protocol
  150.       designed for microcomputers to use in reading mail from a mail server.)
  151.  
  152. These services should be present in any implementation of TCP/IP, except that
  153. micro-oriented implementations may not support computer mail.  These
  154. traditional applications still play a very important role in TCP/IP-based
  155. networks.  However more recently, the way in which networks are used has been
  156. changing.  The older model of a number of large, self-sufficient computers is
  157. beginning to change.  Now many installations have several kinds of computers,
  158. including microcomputers, workstations, minicomputers, and mainframes.  These
  159. computers are likely to be configured to perform specialized tasks.  Although
  160. people are still likely to work with one specific computer, that computer will
  161. call on other systems on the net for specialized services.  This has led to the
  162. "server/client" model of network services.  A server is a system that provides
  163. a specific service for the rest of the network.  A client is another system
  164. that uses that service.  Note that the server and client need not be on
  165. different computers.  They could be different programs running on the same
  166. computer.  Here are the kinds of servers typically present in a modern computer
  167. setup.  Also note that these computer services can all be provided within the
  168. framework of TCP/IP.
  169.  
  170. -  Network file systems.  This allows a system to access files on another
  171.    computer in a somewhat more closely integrated fashion than FTP.  A network
  172.    file system provides the illusion that disks or other devices from one
  173.    system are directly connected to other systems.  There is no need to use a
  174.    special network utility to access a file on another system.  Your computer
  175.    simply thinks it has some extra disk drives.  These extra "virtual" drives
  176.    refer to the other system's disks.  This capability is useful for several
  177.    different purposes.  It lets you put large disks on a few computers, but
  178.    still give others access to the disk space.  Aside from the obvious economic
  179.    benefits, this allows people working on several computers to share common
  180.    files.  It makes system maintenance and backup easier, because you don't
  181.    have to worry about updating and backing up copies on lots of different
  182.    machines.  A number of vendors now offer high-performance diskless
  183.    computers.  These computers have no disk drives at all.  They are entirely
  184.    dependent upon disks attached to common "file servers".  (See RFC's 1001 and
  185.    1002 for a description of PC-oriented NetBIOS over TCP.  In the workstation
  186.    and minicomputer area, Sun's Network File System is more likely to be used.
  187.    Protocol specifications for it are available from Sun Microsystems.) -
  188.    remote printing.  This allows you to access printers on other computers as
  189.    if they were directly attached to yours.  (The most commonly used protocol
  190.    is the remote lineprinter protocol from Berkeley Unix.  Unfortunately, there
  191.    is no protocol document for this.  However the C code is easily obtained
  192.    from Berkeley, so implementations are common.)
  193.  
  194. -  Remote execution.  This allows you to request that a particular program be
  195.    run on a different computer.  This is useful when you can do most of your
  196.    work on a small computer, but a few tasks require the resources of a larger
  197.    system.  There are a number of different kinds of remote execution.  Some
  198.    operate on a command by command basis.  That is, you request that a specific
  199.    command or set of commands should run on some specific computer.  (More
  200.    sophisticated versions will choose a system that happens to be free.)
  201.    However there are also "remote procedure call" systems that allow a program
  202.    to call a subroutine that will run on another computer.  (There are many
  203.    protocols of this sort.  Berkeley Unix contains two servers to execute
  204.    commands remotely:  rsh and rexec.  The Unix "man" pages describe the
  205.    protocols that they use.  The user-contributed software with Berkeley 4.3
  206.    contains a "distributed shell" that will distribute tasks among a set of
  207.    systems, depending upon load.
  208.  
  209. -  Name servers.  In large installations, there are a number of different
  210.    collections of names that have to be managed.  This includes users and their
  211.    passwords, names and network addresses for computers, and accounts.  It
  212.    becomes very tedious to keep this data up to date on all of the computers.
  213.    Thus the databases are kept on a small number of systems.  Other systems
  214.    access the data over the network.  (RFC 822 and 823 describe the name server
  215.    protocol used to keep track of host names and Internet addresses on the
  216.    Internet.  This is now a required part of any TCP/IP implementation.  IEN
  217.    116 describes an older name server protocol that is used by a few terminal
  218.    servers and other products to look up host names.  Sun's Yellow Pages system
  219.    is designed as a general mechanism to handle user names, file sharing
  220.    groups, and other databases commonly used by Unix systems.  It is widely
  221.    available commercially.  Its protocol definition is available from Sun.)
  222.  
  223. -  Terminal servers.  Many installations no longer connect terminals directly
  224.    to computers.  Instead they connect them to terminal servers.  A terminal
  225.    server is simply a small computer that only knows how to run telnet (or some
  226.    other protocol to do remote login).  If your terminal is connected to one of
  227.    these, you simply type the name of a computer, and you are connected to it.
  228.    Generally it is possible to have active connections to more than one
  229.    computer at the same time.  The terminal server will have provisions to
  230.    switch between connections rapidly, and to notify you when output is waiting
  231.    for another connection.  (Terminal servers use the telnet protocol, already
  232.    mentioned.  However any real terminal server will also have to support name
  233.    service and a number of other protocols.)
  234.  
  235. -  Network-oriented window systems.  Until recently, high-performance graphics
  236.    programs had to execute on a computer that had a bit-mapped graphics screen
  237.    directly attached to it.  Network window systems allow a program to use a
  238.    display on a different computer.  Full-scale network window systems provide
  239.    an interface that lets you distribute jobs to the systems that are best
  240.    suited to handle them, but still give you a single graphically-based user
  241.    interface.  (The most widely-implemented window system is X.  A protocol
  242.    description is available from MIT's Project Athena.  A reference
  243.    implementation is publically available from MIT.  A number of vendors are
  244.    also supporting NeWS, a window system defined by Sun.  Both of these systems
  245.    are designed to use TCP/IP.)
  246.  
  247. Note that some of the protocols described above were designed by Berkeley, Sun,
  248. or other organizations.  Thus they are not officially part of the Internet
  249. protocol suite.  However they are implemented using TCP/IP, just as normal
  250. TCP/IP application protocols are.  Since the protocol definitions are not
  251. considered proprietary, and since commercially-supported implementations are
  252. widely available, it is reasonable to think of these protocols as being
  253. effectively part of the Internet suite.
  254.  
  255. Note that the list above is simply a sample of the sort of services available
  256. through TCP/IP.  However it does contain the majority of the "major"
  257. applications.  The other commonly-used protocols tend to be specialized
  258. facilities for getting information of various kinds, such as who is logged in,
  259. the time of day, etc.  However if you need a facility that is not listed here,
  260. I encourage you to look through the current edition of Internet Protocols
  261. (currently RFC 1011), which lists all of the available protocols, and also to
  262. look at some of the major TCP/IP implementations to see what various vendors
  263. have added.
  264.  
  265.  
  266. General Description Of The TCP/IP Protocols
  267. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  268. TCP/IP is a layered set of protocols.  In order to understand what this means,
  269. it is useful to look at an example.  A typical situation is sending mail.
  270. First, there is a protocol for mail.  This defines a set of commands which one
  271. machine sends to another, e.g. commands to specify who the sender of the
  272. message is, who it is being sent to, and then the text of the message.  However
  273. this protocol assumes that there is a way to communicate reliably between the
  274. two computers.  Mail, like other application protocols, simply defines a set of
  275. commands and messages to be sent.  It is designed to be used together with TCP
  276. and IP.
  277.  
  278. TCP is responsible for making sure that the commands get through to the other
  279. end.  It keeps track of what is sent, and retransmitts anything that did not
  280. get through.  If any message is too large for one datagram, e.g. the text of
  281. the mail, TCP will split it up into several datagrams, and make sure that they
  282. all arrive correctly.  Since these functions are needed for many applications,
  283. they are put together into a separate protocol, rather than being part of the
  284. specifications for sending mail.  You can think of TCP as forming a library of
  285. routines that applications can use when they need reliable network
  286. communications with another computer.
  287.  
  288. Similarly, TCP calls on the services of IP.  Although the services that TCP
  289. supplies are needed by many applications, there are still some kinds of
  290. applications that don't need them.  However there are some services that every
  291. application needs.  So these services are put together into IP.  As with TCP,
  292. you can think of IP as a library of routines that TCP calls on, but which is
  293. also available to applications that don't use TCP.  This strategy of building
  294. several levels of protocol is called "layering."  I like to think of the
  295. applications programs such as mail, TCP, and IP, as being separate "layers,"
  296. each of which calls on the services of the layer below it.  Generally, TCP/IP
  297. applications use 4 layers:
  298.  
  299. - An application protocol such as mail.
  300.  
  301. - A protocol such as TCP that provides services need by many applications.
  302.  
  303. - IP, which provides the basic service of getting datagrams to their
  304.   destination.
  305.  
  306. - The protocols needed to manage a specific physical medium, such as Ethernet
  307.   or a point to point line.
  308.  
  309. TCP/IP is based on the "catenet model."  (This is described in more detail in
  310. IEN 48.)  This model assumes that there are a large number of independent
  311. networks connected together by gateways.  The user should be able to access
  312. computers or other resources on any of these networks.  Datagrams will often
  313. pass through a dozen different networks before getting to their final
  314. destination.  The routing needed to accomplish this should be completely
  315. invisible to the user.  As far as the user is concerned, all he needs to know
  316. in order to access another system is an "Internet address."  This is an address
  317. that looks like 128.6.4.194.  It is actually a 32-bit number.  However it is
  318. normally written as 4 decimal numbers, each representing 8 bits of the address.
  319. (The term "octet" is used by Internet documentation for such 8-bit chunks.  The
  320. term "byte" is not used, because TCP/IP is supported by some computers that
  321. have byte sizes other than 8 bits.)
  322.  
  323. Generally the structure of the address gives you some information about how to
  324. get to the system.  For example, 128.6 is a network number assigned by a
  325. central authority to Rutgers University.  Rutgers uses the next octet to
  326. indicate which of the campus Ethernets is involved.  128.6.4 happens to be an
  327. Ethernet used by the Computer Science Department. The last octet allows for up
  328. to 254 systems on each Ethernet.  (It is 254 because 0 and 255 are not allowed,
  329. for reasons that will be discussed later.)  Note that 128.6.4.194 and
  330. 128.6.5.194 would be different systems.  The structure of an Internet address
  331. is described in a bit more detail later.
  332.  
  333. Of course I normally refer to systems by name, rather than by Internet
  334. address.  When I specify a name, the network software looks it up in a
  335. database, and comes up with the corresponding Internet address.  Most of the
  336. network software deals strictly in terms of the address.  (RFC 882 describes
  337. the name server technology used to handle this lookup.)
  338.  
  339. TCP/IP is built on "connectionless" technology.  Information is transfered as a
  340. sequence of "datagrams."  A datagram is a collection of data that is sent as a
  341. single message.  Each of these datagrams is sent through the network
  342. individually.  There are provisions to open connections (i.e. to start a
  343. conversation that will continue for some time).  However at some level,
  344. information from those connections is broken up into datagrams, and those
  345. datagrams are treated by the network as completely separate.  For example,
  346. suppose you want to transfer a 15000 octet file.  Most networks can't handle a
  347. 15000 octet datagram.  So the protocols will break this up into something like
  348. 30 500-octet datagrams.  Each of these datagrams will be sent to the other end.
  349. At that point, they will be put back together into the 15000-octet file.
  350. However while those datagrams are in transit, the network doesn't know that
  351. there is any connection between them.  It is perfectly possible that datagram
  352. 14 will actually arrive before datagram 13.  It is also possible that somewhere
  353. in the network, an error will occur, and some datagram won't get through at
  354. all.  In that case, that datagram has to be sent again.
  355.  
  356. Note by the way that the terms "datagram" and "packet" often seem to be nearly
  357. interchangable.  Technically, datagram is the right word to use when describing
  358. TCP/IP.  A datagram is a unit of data, which is what the protocols deal with.
  359. A packet is a physical thing, appearing on an Ethernet or some wire.  In most
  360. cases a packet simply contains a datagram, so there is very little difference.
  361. However they can differ.  When TCP/IP is used on top of X.25, the X.25
  362. interface breaks the datagrams up into 128-byte packets.  This is invisible to
  363. IP, because the packets are put back together into a single datagram at the
  364. other end before being processed by TCP/IP.  So in this case, one IP datagram
  365. would be carried by several packets.  However with most media, there are
  366. efficiency advantages to sending one datagram per packet, and so the
  367. distinction tends to vanish.
  368.  
  369.  
  370. * The TCP level
  371.  
  372. Two separate protocols are involved in handling TCP/IP datagrams.  TCP (the
  373. "transmission control protocol") is responsible for breaking up the message
  374. into datagrams, reassembling them at the other end, resending anything that
  375. gets lost, and putting things back in the right order.  IP (the "internet
  376. protocol") is responsible for routing individual datagrams.  It may seem like
  377. TCP is doing all the work.  However in the Internet, simply getting a datagram
  378. to its destination can be a complex job.  A connection may require the datagram
  379. to go through several networks at Rutgers, a serial line to the John von Neuman
  380. Supercomputer Center, a couple of Ethernets there, a series of 56Kbaud phone
  381. lines to another NSFnet site, and more Ethernets on another campus.  Keeping
  382. track of the routes to all of the destinations and handling incompatibilities
  383. among different transport media turns out to be a complex job.  Note that the
  384. interface between TCP and IP is fairly simple.  TCP simply hands IP a datagram
  385. with a destination.  IP doesn't know how this datagram relates to any datagram
  386. before it or after it.
  387.  
  388. It may have occurred to you that something is missing here.  I have talked
  389. about Internet addresses, but not about how you keep track of multiple
  390. connections to a given system.  Clearly it isn't enough to get a datagram to
  391. the right destination.  TCP has to know which connection this datagram is part
  392. of.  This task is referred to as "demultiplexing."  In fact, there are several
  393. levels of demultiplexing going on in TCP/IP.  The information needed to do this
  394. demultiplexing is contained in a series of "headers."  A header is simply a few
  395. extra octets tacked onto the beginning of a datagram by some protocol in order
  396. to keep track of it.  It's a lot like putting a letter into an envelope and
  397. putting an address on the outside of the envelope.  Except with modern networks
  398. it happens several times.  It's like you put the letter into a little envelope,
  399. your secretary puts that into a somewhat bigger envelope, the campus mail
  400. center puts that envelope into a still bigger one, etc.  Here is an overview of
  401. the headers that get stuck on a message that passes through a typical TCP/IP
  402. network:
  403.  
  404. It starts with a single data stream, say a file you are trying to send to some
  405. other computer:
  406.  
  407.      ......................................................
  408.  
  409. TCP breaks it up into manageable chunks.  (In order to do this, TCP has to know
  410. how large a datagram your network can handle.  Actually, the TCP's at each end
  411. say how big a datagram they can handle, and then they pick the smallest size.)
  412.  
  413.      .... .... .... .... .... .... .... ....
  414.  
  415. TCP puts a header at the front of each datagram.  This header actually contains
  416. at least 20 octets, but the most important ones are a source and destination
  417. "port number" and a "sequence number."  The port numbers are used to keep track
  418. of different conversations.  Suppose 3 different people are transferring files.
  419. Your TCP might allocate port numbers 1000, 1001, and 1002 to these transfers.
  420. When you are sending a datagram, this becomes the "source" port number, since
  421. you are the source of the datagram.  Of course the TCP at the other end has
  422. assigned a port number of its own for the conversation.  Your TCP has to know
  423. the port number used by the other end as well.  (It finds out when the
  424. connection starts, as I will explain below.)  It puts this in the
  425. "destination" port field.  Of course if the other end sends a datagram back to
  426. you, the source and destination port numbers will be reversed, since then it
  427. will be the source and you will be the destination.  Each datagram has a
  428. sequence number.  This is used so that the other end can make sure that it gets
  429. the datagrams in the right order, and that it hasn't missed any.  (See the TCP
  430. specification for details.)  TCP doesn't number the datagrams, but the octets.
  431. So if there are 500 octets of data in each datagram, the first datagram might
  432. be numbered 0, the second 500, the next 1000, the next 1500, etc.  Finally, I
  433. will mention the Checksum.  This is a number that is computed by adding up all
  434. the octets in the datagram (more or less - see the TCP spec).  The result is
  435. put in the header.  TCP at the other end computes the checksum again.  If they
  436. disagree, then something bad happened to the datagram in transmission, and it
  437. is thrown away.  So here's what the datagram looks like now.
  438.  
  439.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  440.        |          Source Port           |       Destination Port       |
  441.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  442.        |                         Sequence Number                       |
  443.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  444.        |                      Acknowledgment Number                    |
  445.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  446.        |  Data |           |U|A|P|R|S|F|                               |
  447.        | Offset| Reserved  |R|C|S|S|Y|I|            Window             |
  448.        |       |           |G|K|H|T|N|N|                               |
  449.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  450.        |           Checksum            |         Urgent Pointer        |
  451.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  452.        |   your data ... next 500 octets                               |
  453.        |   ......                                                      |
  454.  
  455. If you abbreviate the TCP header as "T", the whole file now looks like this:
  456.  
  457.      T.... T.... T.... T.... T.... T.... T....
  458.  
  459. You will note that there are items in the header that I have not described
  460. above.  They are generally involved with managing the connection.  In order to
  461. make sure the datagram has arrived at its destination, the recipient has to
  462. send back an "acknowledgement."  This is a datagram whose "Acknowledgement
  463. number" field is filled in.  For example, sending a packet with an
  464. acknowledgement of 1500 indicates that you have received all the data up to
  465. octet number 1500.  If the sender doesn't get an acknowledgement within a
  466. reasonable amount of time, it sends the data again.  The window is used to
  467. control how much data can be in transit at any one time.  It is not practical
  468. to wait for each datagram to be acknowledged before sending the next one.  That
  469. would slow things down too much.  On the other hand, you can't just keep
  470. sending, or a fast computer might overrun the capacity of a slow one to absorb
  471. data.  Thus each end indicates how much new data it is currently prepared to
  472. absorb by putting the number of octets in its "Window" field.  As the computer
  473. receives data, the amount of space left in its window decreases.  When it goes
  474. to zero, the sender has to stop.  As the receiver processes the data, it
  475. increases its window, indicating that it is ready to accept more data. Often
  476. the same datagram can be used to acknowledge receipt of a set of data and to
  477. give permission for additional new data (by an updated window).  The "Urgent"
  478. field allows one end to tell the other to skip ahead in its processing to a
  479. particular octet.  This is often useful for handling asynchronous events, for
  480. example when you type a control character or other command that interrupts
  481. output.  The other fields are not pertinent to understanding what I am trying
  482. to explain in this article.
  483.  
  484.  
  485. * The IP Level
  486.  
  487. TCP sends each datagram to IP.  Of course it has to tell IP the Internet
  488. address of the computer at the other end.  Note that this is all IP is
  489. concerned about.  It doesn't care about what is in the datagram, or even in the
  490. TCP header.  IP's job is simply to find a route for the datagram and get it to
  491. the other end.  In order to allow gateways or other intermediate systems to
  492. forward the datagram, it adds its own header.  The main things in this header
  493. are the source and destination Internet address (32-bit addresses, like
  494. 128.6.4.194), the protocol number, and another checksum.  The source Internet
  495. address is simply the address of your machine.  (This is necessary so the other
  496. end knows where the datagram came from.)  The destination Internet address is
  497. the address of the other machine.  (This is necessary so any gateways in the
  498. middle know where you want the datagram to go.)  The protocol number tells IP
  499. at the other end to send the datagram to TCP.
  500.  
  501. Although most IP traffic uses TCP, there are other protocols that can use IP,
  502. so you have to tell IP which protocol to send the datagram to.  Finally, the
  503. checksum allows IP at the other end to verify that the header wasn't damaged in
  504. transit.  Note that TCP and IP have separate checksums.  IP needs to be able to
  505. verify that the header didn't get damaged in transit, or it could send a
  506. message to the wrong place.  It is both more efficient and safer to have TCP
  507. compute a separate checksum for the TCP header and data.  Once IP has tacked on
  508. its header, here's what the message looks like:
  509.  
  510.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  511.       |Version|  IHL  |Type of Service|          Total Length         |
  512.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  513.       |         Identification        |Flags|      Fragment Offset    |
  514.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  515.       |  Time to Live |    Protocol   |         Header Checksum       |
  516.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  517.       |                       Source Address                          |
  518.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  519.       |                    Destination Address                        |
  520.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  521.       |  TCP header, then your data ......                            |
  522.       |                                                               |
  523.  
  524. If you represent the IP header by an "I", your file now looks like this:
  525.  
  526.      IT....   IT....   IT....   IT....   IT....   IT....   IT....
  527.  
  528. Again, the header contains some additional fields that will not be discussed in
  529. this article because they are not relevent to understanding the process.  The
  530. flags and fragment offset are used to keep track of the pieces when a datagram
  531. has to be split up.  This can happen when datagrams are forwarded through a
  532. network for which they are too big.  (This will be discussed a bit more below.)
  533. The time to live is a number that is decremented whenever the datagram passes
  534. through a system.  When it goes to zero, the datagram is discarded.  This is
  535. done in case a loop develops in the system somehow.  Of course this should be
  536. impossible, but well-designed networks are built to cope with "impossible"
  537. conditions.
  538.  
  539. At this point, it's possible that no more headers are needed.  If your computer
  540. happens to have a direct phone line connecting it to the destination computer,
  541. or to a gateway, it may simply send the datagrams out on the line (though
  542. likely a synchronous protocol such as HDLC would be used, and it would add at
  543. least a few octets at the beginning and end).
  544.  
  545.  
  546. * The Ethernet Level
  547.  
  548. Most networks these days use Ethernet which has its own addresses.  The people
  549. who designed Ethernet wanted to make sure that no two machines would end up
  550. with the same Ethernet address.  Furthermore, they didn't want the user to have
  551. to worry about assigning addresses.  So each Ethernet controller comes with an
  552. address built-in from the factory.  In order to make sure that they would never
  553. have to reuse addresses, the Ethernet designers allocated 48 bits for the
  554. Ethernet address.  People who make Ethernet equipment have to register with a
  555. central authority, to make sure that the numbers they assign don't overlap any
  556. other manufacturer.  Ethernet is a "broadcast medium."  That is, it is in
  557. effect like an old party line telephone.  When you send a packet out on the
  558. Ethernet, every machine on the network sees the packet.  So something is needed
  559. to make sure that the right machine gets it.  As you might guess, this involves
  560. the Ethernet header.
  561.  
  562. Every Ethernet packet has a 14-octet header that includes the source and
  563. destination Ethernet address, and a type code.  Each machine is supposed to pay
  564. attention only to packets with its own Ethernet address in the destination
  565. field.  (It's perfectly possible to cheat, which is one reason that Ethernet
  566. communications are not terribly secure.)  Note that there is no connection
  567. between the Ethernet address and the Internet address.  Each machine has to
  568. have a table of what Ethernet address corresponds to what Internet address.  (I
  569. will describe how this table is constructed a bit later.)  In addition to the
  570. addresses, the header contains a type code.  The type code is to allow for
  571. several different protocol families to be used on the same network.  So you can
  572. use TCP/IP, DECnet, Xerox NS, etc. at the same time. Each of them will put a
  573. different value in the type field.  Finally, there is a checksum.  The Ethernet
  574. controller computes a checksum of the entire packet.  When the other end
  575. receives the packet, it recomputes the checksum, and throws the packet away if
  576. the answer disagrees with the original.  The checksum is put on the end of the
  577. packet, not in the header.  The final result is that your message looks like
  578. this:
  579.  
  580.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  581.       |       Ethernet destination address (first 32 bits)            |
  582.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  583.       | Ethernet dest (last 16 bits)  |Ethernet source (first 16 bits)|
  584.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  585.       |       Ethernet source address (last 32 bits)                  |
  586.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  587.       |        Type code              |
  588.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  589.       |  IP header, then TCP header, then your data                   |
  590.       |                                                               |
  591.           ...
  592.       |                                                               |
  593.       |   end of your data                                            |
  594.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  595.       |                       Ethernet Checksum                       |
  596.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  597.  
  598. If you represent the Ethernet header with "E", and the Ethernet checksum with
  599. "C", your file now looks like this:
  600.  
  601.      EIT....C   EIT....C   EIT....C   EIT....C   EIT....C
  602.  
  603. When these packets are received by the other end, of course all the headers are
  604. removed.  The Ethernet interface removes the Ethernet header and the checksum.
  605. It looks at the type code.  Since the type code is the one assigned to IP, the
  606. Ethernet device driver passes the datagram up to IP.  IP removes the IP header.
  607. It looks at the IP protocol field.  Since the protocol type is TCP, it passes
  608. the datagram up to TCP.  TCP now looks at the sequence number.  It uses the
  609. sequence numbers and other information to combine all the datagrams into the
  610. original file.
  611.  
  612. This ends my initial summary of TCP/IP.  There are still some crucial concepts
  613. I have not gotten to, so in part two, I will go back and add details in several
  614. areas.  (For detailed descriptions of the items discussed here see, RFC 793 for
  615. TCP, RFC 791 for IP, and RFC's 894 and 826 for sending IP over Ethernet.)
  616. _______________________________________________________________________________
  617.  
  618. Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
  619.