rfc1705.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,438 行 · 第 1/5 页

TXT
1,438
字号
   Both TCP and UDP are highly dependent on the IPv4 network layer for 2
   very low level reasons.  1) a TCP/UDP socket is formed by
   concatenating a network layer address (IP address) and the transport
   layer TCP/UDP port number.  2) included in the TCP/UDP checksum
   calculation are the IP layer source and destination addresses
   mentioned above which are transferred across the TCP/IP [Postel,
   1981b] or UDP/IP [Postel, 1980] interfaces as procedure call
   arguments. It should be noted at this point that the reason for such
   strong dependence between the transport and network layers in TCP/IP
   or UDP/IP is to insure a globally unique TCP/UDP layer address, such
   that a unique connection could be identified by a pair of sockets.
   The authors of this paper propose that the IP address requirement
   with TCP and UDP be replaced with a globally unique transport address
   (TA) concatenated with a transport layer port address. This solution
   offers the capability to still maintain a globally unique address and
   host unique port number with the added benefit of eliminating the
   transport and network layer dependence on one another.

3.2  User Applications

   In addition to TCP and UDP, there are a large number of firmly
   entrenched higher level applications that use the IP network layer
   address embedded internally, and would therefore require modification
   for use with the proposed IPng network layer schemes. These
   applications include, but are not limited to Network File System
   (NFS), Remote Procedure Call (RPC), and File Transfer Protocol (FTP).
   All of these applications should be modified to use the Internet
   Domain name to identify the remote node, and not an embedded,
   protocol dependent IP address.

3.3  The Entrenched Masses

   Will users voluntarily give up their IPv4 systems to move to IPng?
   It seems likely that many users will resist the change.  They will
   perceive no benefit and will not install the new software.  Making
   the local Internet contact responsible may not be feasible or
   practical in all cases. Another issue is backward compatibility
   issues.  If a host needs to run IPng and IPv4 to support old hosts,
   then 1) where is the address savings IPng promised.  2) Why change if
   the host you are talking to has IPv4 anyway?

   On the other hand, replacing the existing TCP (TCPv6) with this new
   version (TCPng) will benefit users in several ways.  1) Users will be
   able to connect to unmodified TCPv6 hosts.  2) As nodes upgrade to
   TCPng, new features will be enabled allowing TCP to communicate
   effectively over high bandwidth*delay network links.  3) System



Carlson & Ficarella                                             [Page 6]

RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994


   administrators will be able to incrementally upgrade nodes as needed
   or as local conditions demand.  4) Upgraded nodes may return their
   IPv4 address and use an IPng address and TCP transporter function,
   described later, to communicate with IPv4 hosts.

4.  Making TCP & UDP Protocol Independent

   The OSI 7 layer model specifies that each layer be independent of the
   adjacent layers. What is specified is the interface between layers.
   This allows layers to be replaced and/or modified without making
   changes to the other layers.  As was pointed out previously, the TCP
   and UDP transport layers violate this precept.  In the following
   discussion, when we refer to TCP we mean both the TCP and UDP
   protocols.  The generic term transport layer and TCP will be used
   interchangeably.

   Overcoming TCP's dependence on IP will require changes to the
   structure of the TCP header.  The developers and implementors will
   also have to change the way they think about TCP and IP.  End users
   will also have to change the way they view the Internet.  Gone will
   be the days when Internet node names and IP addresses can be used
   interchangeably.  The goal of this change is to allow end users to
   migrate from the current IPv4 network layer to an IPng layer.  What
   this IPng protocol is will be left to the Internet Architecture
   Board/Internet Engineering Steering Group/Internet Engineering Task
   Force (IAB/IESG/IETF) to decide.  By adopting this proposal, the
   migration will be greatly enhanced.

   One of the stated goals of the IAB is to promote a single Internet
   protocol suite [Leiner, Rekhter, 1993].  While this is a laudable
   goal, we should not be blinded by it. The addition of a Transport
   layer address (TA) does not invalidate the IAB's stated goals.  It
   merely brings the implementation into compliance with standard
   networking practices.  The historical reasons for concatenating TCP
   port numbers to IP numbers has long since passed. The increasing
   throughput of transmission lines and the negligible effect of packet
   overhead (see appendix A) prove this.  The details of assigning and
   using TA's are discussed in the next few sections.

4.1  Transport Addressing

   A Transport Address (TA) will be assigned to the TCP transport layer
   on each Internet node.  The purpose of this address is to allow a TCP
   on one node to communicate with a TCP on a remote node.  Some of the
   goals defined in developing this address are:

        1.  Fixed size -- A fixed size will make parsing easier for
            decoding stations.



Carlson & Ficarella                                             [Page 7]

RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994


        2.  Minimum impact on TCP packet size -- This information
            will need to be carried each TCP packet.

        3.  Global Uniqueness -- It is desirable (required) to have a
            globally unique Transport Address.

        4.  Automatic Registration -- To reduce implementation
            problems, an automatic registration of the TA is
            desirable.

   The TA will be used when an Internet node attempts to communicate
   with another Internet node.  Conceptually you can view the TA as
   replacing the IP number in every instance it now appears in the
   transport layer (i.e., a socket would change from IP#.Port# to
   TA#.Port#).  A connection setup would thus be:

        1.  A user starts an application on Node-A and requests
            service from Node-B.  The user identifies Node-B by
            referencing it's Internet Domain Name.

        2.  The TCP on Node-A makes a Domain Name Service (DNS) call
            to determine the TA of Node-B.

        3.  Node-A constructs a TCP packet using the header Src = TA-
            A.port and Dest = TA-B.port and passes this packet down to
            the network layer.

        4.  The IP on Node-A makes a DNS call to determine the IP
            address of Node-B.  The IP will cache this TA/IP pair for
            later use.

        5.  Node-A constructs an IP packet using the header Src = IP-A
            and Dest = IP-B and passes this packet down to the Media
            Access layer.

        6.  Delivery of the packet is identical to the delivery of an
            existing Internet IP packet.

        7.  The IP on Node-B examines the IP Dest address and if it
            matches it's own, strips off the header and passes the
            data portion up to the TCP.  (Note: the packet may have
            passed through several IP routers between the source and
            destination hosts.)

        8.  The TCP on Node-B examines the header to determine if the
            Dest TA is it's own, if so it passes the data to the
            application specified by the port address.  If not it
            determines if it should perform the transporter function.



Carlson & Ficarella                                             [Page 8]

RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994


            The packet will be forwarded toward the destination or an
            error message will be returned.

   The above steps represent a quick synopsis of how user applications
   may pass data between different Internet nodes.  The exact structure
   of the network is hidden from the application, allowing the network
   to be modified and improved as needed.  Using the transporter
   function, several different network layers may be traversed when
   moving from source to destination (several examples are provided in
   appendix D).

   One of the underlying assumptions is that the user application must
   refrain from making assumptions about the network structure.  As
   pointed out in section 3, this is not the case for the current
   Internet network.  User applications that are deployed with this new
   TCP must be capable of making this assumption.  This means that the
   user application should store the Internet Domain Name in it's
   internal structure instead of the IPng network number.  The domain
   name is globally unique and provides enough information to the system
   to find the transport and network layer addresses.  The user
   application must pass the following parameters down to TCP:

      1.  Destination domain name  (Text string)
      2.  Pointer to data buffer
      3.  Quality of service indicators
      4.  Options

   When the user application writes data to the network, TCP will return
   a nonzero integer to indicate an error condition, or a zero integer
   to indicate success. When the user application reads data from the
   network, TCP will deliver a pointer to a data buffer back to the
   application.

   TCP will receive the users request and it will make a DNS call to
   determine the destination nodes TA.  If DNS returns a TA, TCP will
   build a Transmission Control Block (TCB) (see the paragraph below)
   and call the network layer.   Otherwise, TCP will make a DNS call
   looking for the destination nodes IPv4 address.  If an address is
   returned, TCP will takes the steps listed below in building a TCB,
   and call the proper network layer.  If DNS returns a host unknown
   indication, exit back to the user with a "host unknown" error.  TCP
   should maintain a cache of domain names and addresses in lieu of
   making repeated DNS calls.  This feature is highly recommended, but
   not required.

   The state information needed to keep track of a TCP connection is
   kept in the Transmission Control Block (TCB).  Currently this
   structure has fields for the TCP parameters, source port, destination



Carlson & Ficarella                                             [Page 9]

RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994


   port, window size, sequence number, acknowledgment number, and any
   TCP options.  The network layer source and destination IP numbers are
   also stored here.  Finally, the status of the connection (LISTEN,
   ESTABLISHED, CLOSING, of the TCP parameters and include the new
   source and destination Transport addresses.  The existing space for
   the IPv4 addresses will be left in place to allow for backward
   compatibility.  The IPv4 fields will be used if the source is
   communicating directly with an unmodified TCP/IP host.

   The existing status indicators will remain with their meaning
   unchanged.  Connection setup will retain the current 3-way handshake.
   When performing transporter functions, TCP will NOT build a TCB,
   unless the destination is an unmodified IPv4 host (see appendix D).
   The TCP connection remains an end-to-end reliable transport service,
   regardless of the number of intermediate transporter nodes.

   TCP will build an old or new header (defined below) placing the user
   application data in the data field.  If TCP is communicating directly
   with an unmodified IPv4 host, the existing TCP header (STD 7, RFC
   793) will be used for comparability reasons.  If the destination host
   is an unmodified host, and an intermediate transporter node is being
   used, this new TCP header must be used with the 'C' bit set to 1.
   The destination TA will be set to the IPv4 address, and the packet
   will be delivered to the transporter node.  If the destination host
   is modified with this new TCP, the destination address will be set to
   the TA and the packet will be delivered, possibly through a
   transporter, to the remote host.

   TCP will communicate with it's underlying network layer(s) to deliver
   packets to remote hosts.  The Internet Assigned Number Authority
   (IANA) will assign unique identifiers to each network layer TCP will
   support.  TCP will maintain a cache of TA's and IANA network layers
   numbers, to allow support of multiple network layers.  When TCP
   wishes to send data, it will consult this cache to determine which
   network to send the packet to.  If the destination TA is not in this
   cache, TCP will send a request to each of it's network layer(s)
   asking if they know how to deliver data to this TA.  All of the
   network layers supported by the sending host will be probed, in an
   order defined by the system administrator, until one responds 'yes'
   or they all have said 'no'.  The first layer to say 'yes' will be
   used.  If no path exists, an error message will be returned to the
   user application.  Once a network layer is identified, TCP will
   communicate with it by passing the following parameters:

          1)  Destination address (TA or IPv4).
          2)  A pointer to the data buffer.
          3)  Options.




Carlson & Ficarella                                            [Page 10]

RFC 1705     Six Virtual Inches to the Left: IPng Problems  October 1994


   The network layer will use the destination address as an index into a
   cache to determine the network address to send to.  In the entry is
   not in the cache, it will make a DNS call to determine the network
   address and a cache entry will be build (see appendix D).  It is
   mandatory that a cache be maintained.  If a host is attached to
   several different networks (i.e., a transporter) each layer will
   maintain it's own cache.

   When IP receives a data packet from a remote node, it will strip off
   the IP header and pass a pointer to the data buffer up to TCP.  IP

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?