⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc675.txt

📁 RFC 相关的技术文档
💻 TXT
📖 第 1 页 / 共 5 页
字号:
RFC 675              Specification of Internet TCP         December 19742.4.3 EVENT CODES   The event code specifies the particular event that the TCP wishes to   communicate to the user.   In addition to the event code, three flags may be useful to classify   the event into major categories and facilitate event processing by   the user:      E flag: set if event is an error      L/F flag: indicates whether event was generated by Local TCP, or      Foreign TCP or network      P/T flag: indicates whether the event is Permanent or Temporary      [retry may succeed]   Events are encoded into 8 bits with the high order bits set to   indicate the state of the E, L/F, and P/T flags, respectively.   Events specified so far are listed below with their codes and flag   settings. A * means a flag does not apply or can take both values for   this event. Additional events may be defined in the course of   experimentation.      0  0**  general success      1  ELP  connection illegal for this process      2  OF*  unspecified foreign socket has become bound      3  ELP  connection not open      4  ELT  no room for TCB      5  ELT  foreign socket unspecified      6  ELP  connection already open         EFP  unacceptable SYN [or SYN/ACK] arrived at foreign      TCP. Note: This is not a misprint, the local meaning is different      from foreign.      7  EFP  connection does not exist at foreign TCP      8  EFT  foreign TCP inaccessible [may have subcases]      9  ELT  retransmission timeoutCerf, Dalal & Sunshine                                         [Page 13]RFC 675              Specification of Internet TCP         December 1974      10 E*P  buffer flushed due to interrupt      11 OF*  interrupt to user      12 **P  connection closing      13 E**  general error      14 E*P  connection reset   Possible events for each message type are as follows:      Type 0[general]: 2,11,12,14      Type 1[open]: 0,1,4,6,13      Type 2[close]: 0,1,3,13      Type 3[interrupt]: 0,1,3,5,7,8,9,12,13      Type 10[send]: 0,1,3,5,7,8,9,10,11,12,13      Type 20[receive]: 0,1,3,10,12,13      Type 30[status]: 0,1,13   Note that events 6(foreign), 7, 8 are generated at the foreign TCP or   in the network[s], and these same codes are used in the error field   of the internet packet [see section 4.2.1].3.  HIGHER LEVEL PROTOCOLS3.1  INTRODUCTION   It is envisioned that the TCP will be able to support higher level   protocols efficiently. It should be easy to interface existing   ARPANET protocols like TELNET and FTP to the TCP.3.2  WELL KNOWN SOCKETS   At some point, a set of well known 24 bit port numbers must be   picked. The type of service associated with the well known ports   might include:      (a)  Logger      (b)  FTP (File transfer protocol)Cerf, Dalal & Sunshine                                         [Page 14]RFC 675              Specification of Internet TCP         December 1974      (c)  RJE (Remote job entry)      (d)  Host status      (e)  TTY Test      (f)  HELP - descriptive, interactive system documentation   WE RESERVE WELL KNOWN SOCKET 0 (24 bits of 0) for global messages   destined for a particular TCP but not related to any particular   connection. We imagine that this socket would be used for unusual TCP   synchronization (e.g. RESET ALL) or for testing purposes (e.g.   sending letters to TRASHCAN or ECHO). This does not conflict with the   usage that if a socket is 0, it is unspecified, since no user can   SEND, CLOSE, or INTERRUPT on socket 0.3.3  RECONNECTION PROTOCOL (RCP)   Port identifiers fall into two categories: permanent and transient.   For example, a Logger process is generally assigned a port identifier   that is fixed and well known. Transient processes will in general   have ID's which are dynamically assigned.   In the distributed processing environment of the network, two   processes that don't have well known port identifiers may often wish   to communicate. This can be achieved with the help of a well known   process using a reconnection protocol. Such a protocol is briefly   outlined using the communication facilities provided by the TCP. It   essentially provides a mechanism by which port identifiers are   exchanged in order to establish a connection between a pair of   sockets.   Such a protoco1 can be used to achieve the dynamic establishment of   new connections in order to have multiple processes solving a problem   cooperatively, or to provide a user process access to a server   process via a logger, when the logger's end of the connection can not   be invisibly passed to the server process.   A paper on this subject by R. Schantz [SCHA74] discusses some of the   issues associated with reconnection, and some of the ideas contained   therein went into the design of the protocol outlined below.   In the ARPANET, a protocol was implemented which would allow a   process to connect to a well known socket, thus making an implicit   request for service, and then be switched to another socket so that   the well known socket could be freed for use by others. Since socketsCerf, Dalal & Sunshine                                         [Page 15]RFC 675              Specification of Internet TCP         December 1974   in our TCP are permitted to have connections with more than one   foreign socket, this facility may not be explicitly needed (i.e.   connections <A,B> and <A,C> are distinguishable).   However. the well known socket may be in one network and the actual   service socket(s) may be in another network (or at least in another   TCP). Thus, the invisible switching of a connection from one port to   another within a TCP may not be sufficient as an "Initial Connection   Protocol". We imagine that a process wishes to use socket N1.T1.Q to   access well known socket N2.T2.P. However, the process associated   with socket N2.T2.P will actually start up a new process somewhere   which will use N3.T3.S as its server socket. The N(i) and T(i) may be   distinct or the same. The user will send to N2.T2.P the relevant user   information such as user name, password, and account. The server will   start up the server process and send to N1.T1.Q the actual service   socket ldentif1er: N3.T3.S. The connection (N1.TI.Q,N2.T2.P) can then   be closed, and the user can do a RECEIVE on (N1.T1.Q,N3.T3.S). The   serving process can SEND on (N3.T3.S,N1.T1.Q). There are many   variations on this scheme, some involving the user process doing a   RECEIVE on a different socket (e.g. (N1.T1.X,U.U.U)) with the server   doing SEND on (N3.T3.S,N1.T1.X).  Without showing all the detail of   synchronization of sequence numbers and the like, we can illustrate   the exchange as shown below.      USER                             SERVER                                       1. RECEIVE(N2.T2.P,U.U.U)      1. SEND (N1.T1.Q,N2.T2.P)==>                                   <== 2. SEND(N2.T2.P,N1.T1.Q)                                          With "N3.T3.S" as data      2. RECEIVE(N1.T1.Q,N2.T2.P)      3. CLOSE(N1.T1.Q,N2.T2.P)==>                                   <:= 3. CLOSE(N2.T2.P,N1.T1.Q)      4. RECEIVE(N1.T1.Q,N3.T3.S)                                   <== 4. SEND(N3.T3.S,N1.T1.Q)   At this point, a connection is open between N1.T1.Q and N3.T3.S. A   variation might be to have the user do an extra RECEIVE on   (N1.T1.X,U.U.U) and have the data "N1.T1.X" be sent in the first user   SEND. Then, the server can start up the real serving process and do aCerf, Dalal & Sunshine                                         [Page 16]RFC 675              Specification of Internet TCP         December 1974   SEND on (N3.T3.S,N1.T1.X) without having to send the "N3.T3.S" data   to the user. Or perhaps both server and receiver exchange this data,   to assure security of the ultimate connection (i.e. some wild process   might try to connect to N1.T1.X if it is merely RECEIVING on foreign   socket U.U.U.).   We do not propose any specific reconnection protocol here, but leave   this to further deliberation, since it is really a user level   protocol issue.4.  TCP IMPLEMENTATION4.1  INTRODUCTION   Conceptually, the TCP is made up of several processes. Some of these   deal with USER/TCP commands, and others with packets arriving from   the network. The TCP also has an internal measurement facility which   can be activated remotely.   Any particular TCP could be viewed in a number of ways. It could be   implemented as an independent process, servicing many user processes.   It could be viewed as a set of re-entrant library routines which   share a common interface to the local PSN, and common buffer storage.   It could even be viewed as a set of processes, some handling the   user, some the input of packets from the net, and some the output of   packets to the net.4.2  TCP DATA STRUCTURES4.2.1  INTERNETWORK PACKET FONMAT   8 bits: Internet information      2 bits: Reserved for local PSN use      2 bits: Header format (11 in binary)      4 bits: Protocol version number   8 bits: Header length in octets (32 is the current value)   16 bits: Length of text in octets   32 bits: Packet sequence number   32 bits: Acknowledgment number (i.e. sequence number of next octet   expected).Cerf, Dalal & Sunshine                                         [Page 17]RFC 675              Specification of Internet TCP         December 1974   16 bits: Window size (in octets)   16 bits: Control Information      Listed from high to low order:      SYN: Request to synchronize sending sequence numbers      ACK: There is a valid acknowledgment in the 32 bit ACK field      FIN: Sender will stop SENDing and RECEIVEing on this connection      DSN: The sender has stopped using sequence numbers and wants to      initiate a new sequence number for sending.      EOS: This packet is the end of a segment and therefore has a      checksum in the 16 bit checksum field. If this bit is not set, the      16 bit checksum field is to be ignored. The bit is usually set,      but if fragmentation at a GATEWAY occurs, the packets preceding      the last one will not have checksums, and the last packet will      have the checksum for the entire original fragment (segment) as it      was calculated by the sending TCP.      EOL: This packet contains the last fragment of a letter. The EOS      bit will always be set in this case.      INT: The sender wants to INTERRUPT on this connection.      XXX: six (6) unused control bits      OD: three (3) bits of control dispatch:         000: Null (the control octet contents should be ignored}         001: Event Code is present in the control octet. These were         defined in section 2.4.3.         010: Special Functions         011: Reject (codes as yet undefined)         1XX: Unused   8 bits: Control Data Octet      If CD is 000 then this octet is to be ignored.Cerf, Dalal & Sunshine                                         [Page 18]

⌨️ 快捷键说明

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