Utilization The effective throughput divided by the output rate gives a measure of utilization of the communication connection. Window and buffer allocation measurements Histogram of letters outstanding, measured at the instant of SEND receipt by TCP from user or at instant of arrival of a letter for a receiving user. Buffers in use on the SEND side upon packet departure into the net; buffers in use on the RECEIVE side upon delivery of packet into a USER Buffer. 5.3 MULTICONNECTION MEASUREMENTS Statistics on User Commands sent to the local TCP Statistics of error or success codes returned [histogram of each type of error or return response] Statistics of control bit use Counter for each control bit over all packets emitted by the TCP and another for packets accepted Count data carrying packets Count ACK packets with no data Error packets distribution by error type code received from the net and sent out into the net 5.4 MEASUREMENT IMPLEMENTATION PHILOSOPHY We view the measurement process as something which occurs internal to the TCP but which is controllable from outside. A well known socket owned by the TCP can be used to accept control which will select one or more measurement classes to be collected. The data would be periodically sent to a designated foreign socket which would absorb the data for later processing, in the manner currently used in the ARPANET IMPs. Each measurement class has its own data packet format to make the job of parsing and analyzing the data easier.
We would restrict access to TCP measurement control to a few designated sites [e.g. NMC, SU-DSL, BBN]. This is easily done by setting up listening control connections on partially specified foreign sockets. 6. SCHEDULE OF IMPLEMENTATION 7. REFERENCES 1. CEKA74 V. Cerf and R. Kahn, "A Protocol For Packet Network Intercommunication," IEEE Transactions on Communication, vol. C- 2O, No. 5. May 1974, pp. 637-648. 2. CERF74 V. Cerf, "An Assessment of ARPANET Protocols," in Proceedings of the Jerusalem Conference on Information Technology, July l974 [RFC#635, INWG Note # ***]. 3.CESU74 V. Cerf and C. Sunshine, "Protocols and Gateways for the Interconnection of Packet Switching Networks," Proc. of the Subconference on Computer Nets, Seventh Hawaii International Conference on Systems Science, January 1974. 4. HEKA70 F. Heart, R.E. Kahn, et al, "The Interface Message Processor for the ARPA Computer Network," AFIPS 1970 SJCC Proceedings, vol. 36, Atlantic City, AFIPS Press, New Jersey, pp. 551-567. 5. POUZ74 L. Pouzin, "CIGALE, the packet switching machine of the CYCLADES computer network," Proceedings of the IFIP74 Congress, Stockholm, Sweden. 6. ROWE74 L. Roberts and B. Wessler, "Computer Network Development to achieve resource sharing," AFIPS 1970, SJCC Proceedings, vol. 36, Atlantic City, AFIPS Press, New Jersey, pp. 543-549.
7. POUZ73 L. Pouzin, "Presentation and major design aspects of the CYCLADES Computer Network," Data Networks: Analysis and Design, Third Data Communications Symposium, St. Petersburg, Florida, November 1973, pp. 80-87. 8. SCWI71 R. Scantlebury and P.T. Wilkinson, "The Design of a Switching System to allow remote Access to Computer Services by other computers and Terminal Devices," Second Symposium on Problems in the Optimization of Data Communication Systems Proceedings, Palo Alto, California, 0ctober 1971, pp. 160-167. 9. POST72 J. Postel, "Official Initial Connection Protocol," Current Network Protocols, Network Information Center, Stanford Research Institute, Menlo Park, California. January 1972 (NIC 7101). 10. CACR70 C.S. Carr, S.D. Crocker, and V.G. Cerf, "Host-Host Communication Protocol in the ARPA Network," AFIPS Conference Proceedings, vol. 36, 1970 SJCC, AFIPS Press, Montvale, N.J. 11. ZIEL74 H. Zimmerman and M. Elie, "Transport Protocol. Standard Host-Host Protocol for heterogeneous computer networks," INWG#61, April 1974. 12. CRHE72 S. D. Crocker, J. F. Heafner, R. M. Metcalfe and J. B. Postel, "Function-oriented protocols for the ARPA Computer Network," AFIPS Conference Proceedings, vol. 41, 1972 FJCC, AFIPS Press, Montvale, N.J. 13. DALA74 Y. Dalal, "More on selecting sequence numbers," INWG Protocol Note #4, October 1974.
14. SUNS74 C. Sunshine, "Issues in communication protocol design -- formal correctness." INWG Protocol Note #5, October 1974 BELS74 D. Belsnes, "Note on single message communication," INWG Protocol Note #3. September 1974. 16. TOML74 R. Tomlinson, "Selecting sequence numbers," INWG Protocol Note #2, September 1974. 17. SCHA74 R. Schantz, "Reconnection Protocol", private communication; available from Schantz at BBN. 18. POUZ74A L. Pouzin, "A proposal for interconnecting packet switching networks, INWG Note #60, March 1974 [also submitted to EUROCOMP 74]. 19. DLMG74 D. Lloyd, M. Galland, and P. T. Kirstein, "Aims and objectives of internetwork experiments," to be published as an INWG Experiments Note. 20. MCKE73 A. McKenzie, "Host-Host Protocol for the ARPANET," NIC # 8246, Stanford Research Institute [also in ARPANET Protocols Notebook NIC 7104]. 21. BELS74A D. Belsnes, "Flow control in packet switching networks," INWG Note #63, October 1974.
FIGURE 1: TCB Major States 0-no TCB \____________________________________________________________/ OPEN | A CLOSE CLOSE A ---------- | | ---------- ---------- | set up TCB | | remove TCB remove TCB | | | | | | collision retry, | SYN arrives __V____|__ SEND, INTER | ------------- / S1=0 \ ---------------- | send SYN, ACK | S2=0 F=0 | send SYN | ______________________| R=0 C=0 |_____________________ | | | U=0/1 | | | | | | SYN arrives | | | error,timeout | 1-OPEN | ----------- | | | ------------- \__________/ collision; | | | clear TCB A A set timeout | | | _____________________| |_____________________ | | __V____|__ _|___V__|_ / S1=1 \ / S1=1 \ | S2=0 F=0 | | S2=0 F=0 | | R=1 C=0 | SYN, ACK arrives | R=0 C=0 | | U=0/1 | ACK arrives ---------------- | U=0 | | | ----------- send ACK | | | 3-SYN rcvd |_________________ _________________| 2-SYN sent | \__________/ | | \__________/ | __V_____V__ | / S1=1 \ | CLOSE | S2=1 F=0 | | -------- | R=1 C=0 | FIN arrives | send FIN | U=0 | ------------------- | | | tell user, send FIN | ________________|4-established|______________________ | | CLOSE \___________/ | | | ------- | __V_____V_ send FIN _______V__ / S1=1 \ / S1=1 \ | S2=0/1 F=1 | timeout or | S2=1 F=1 | | R=1 C=1 | FIN, error, arrives CLOSE | R=1 C=0 | | U=0/1 | ------------------- ---------- | U=0 | | | remove TCB remove TCB | | | 5-FIN wait |_____________________ _____________| 6-FIN rcvd | \__________/ | | \__________/ | | ____________________________V_____V_______________________ / \ 0-no TCB
FIGURE 2.1: Structure of the TCP | _____________ _______________ | | | | | | | | | | | INPUT PACKET |<---->| | | REASSEMBLER | | HANDLER | | | |_____________| |_______________| | | |_______________ | | | | | | | _________ | | | | | | __V_________V____ | NETWORK |<=====| SYSTEM | | | | or | | CALLS |<========| TCB's |<========| some USERS |=====>| or | | and | | NETWORK | | USER |========>|ASSOCIATED QUEUES|========>| INTERFACE |<---->|INTERFACE| |_________________| | PROGRAM | |_________| A A | | | | | | ______________| | | | _______|_____ _______|_______ | | | | | | | | | PACKETIZER | | OUTPUT PACKET | | | | | | HANDLER |<---->| | |_____________| |_______________| | | | =======> Logical or physical flow of data (packets/letters) -------> "Interaction" NOTE: The signalling of processes by others is not shown
FIGURE 2.2a: ________ Address Check / Begin \ \________/ | _V_ .' '. .' packet '. .' foreign '. ___________________.' socket matches '. | no '. a TCB local .' | '. socket .' | '. ? .' | '.___.' | | yes | _V_ | .' '. | .' packet '. ___ | .'local socket '. / \ | .' matches fully '.____\| YES | | '. specified TCB .' / \___/ | '.fgn socket .' | '. ? .' _V_ '.___.' .' '. | no .' SYN, '. _V_ .'FIN,INT,DSN, '. .' '. _____.'or text length>0 './_____ .' matches '. | no '. or QUERY .' \ | .'partly spec. '. | '. .' |___.' or unspec. TCB '. | '. ? .' no '. foreign .' | '.___.' '. socket .' | | yes '. ? .' | __________V_________ '.___.' | | | | yes | | Create error 7 | _V_ | | packet. Signal OPH | .' '. | |____________________| .' packet '. | | ______.' has SYN set '. | ____V____ | no '. .' | | | | '. ? .' |_________\| discard |/________| '.___.' /|_________|\ | | _V_ _V_ / \ / \ | YES | | NO | \___/ \___/
FIGURE 2.2b-1: _______ Input Packet Handler / Begin \ \_______/ | ________________________________________\|/_________________________ | A /|\ | | | | | | | _V_ | | | .' '. _______ | | | .' input '. | go to | | | | .' packet '.____\| sleep | | | | '.available.' no /|_______| | | | '.__?__.' | | | | yes | | | _V_ | | | .' '. | | .->SPECIAL FUNCT. Fig 4.7 | .'address'. | | | .->ERR Fig 4.5,4.6 |___.' check OK '. | | | | .->SYN Fig 4.1,4.2 no '. ? .' | | | | | .->INT Fig 4.3 '._____.' | | | | | | .->FIN Fig 4.4 | yes ________|_ | | | | | | _V_ | discard | | _|_|_|_|_|___________ .' '. |(or queue)| | | | .' error '. |__________| |<-| Control Processing |/_________.'or control '. A |____________________|\ yes '. ? .' | | '._____.' | | (INT with data) | no | | | | V _V_ | to "X" .' '. . | in Fig 2.2b-2 .'(estab)'. .' '. | _____.' R=S1=S2=1 '.----->.'seq.#'.--->| | yes '. ? .' no '.OK .' no | | '._____.' '.' | | | yes | | _______________ | | | | Set S2=1, U=0 | V | | | Notify user | .'. | |<--| with event 2 | .'ACK'. | | | if U was 1 |<-----'. OK .'--->' | |_______________| yes '. .' no | ' V to "Y" in Fig 2.2b-2
FIGURE 2.2b-2: Input Packet Handler (continued) "Y" | .'. _V_ .'txt'. .' '. ______________________________ .'lgth>0 '. .'within '. |Use ACK to advance send window| ,<----'. or DSN .'<---'. window .'--->|Release ACK'ed packets from | | no '. ? .' no '. ? .' yes |retransmit or send queues. If | | '._.' '._.' |any packet had EB bit set | | | yes |remove buffer from Packetized | | ________V____________________ |buffer queue and inform user | | |Create ACK packet. Put on | |(success). Signal Packetizer. | |<-|Send packet queue. Signal OPH| |______________________________| | |_____________________________| | | | | _____________________________________________| | | | | | | "X" | | | | _V_ _V_ _____________________ | .' '. .'TCB'. |Put packet on | | .' text '. yes .'Receive'. yes |Receive packet queue | | .' length>0 '.-------->.' buffer '.------>|in the right order. | | '. or DSN .' A '.available.' |Signal Reassembler. | | '. ? .' | '. ? .' |_____________________| | '._.' | '._.' | | | no | | no | | | | _V_ | |________\| | .' '. | /| | .' seq # '. ________ | | | .' of packet '. yes |Discard | | | | '. highest so .'---->|packet |----->| | | '. far .' |________| | | | '. ? .' | | | '._.' | | | | no | | | _______V______________ | | | |Discard packet with | | | |_____|highest seq. no from | | | |Receive packet queue. | | | |______________________| | | | |_____________________________________________________| | V to "Begin" in Fig 2.2b-1
FIGURE 2.3-1: Reassembler _______ / Begin \ \_______/ | | |<----------------------------------------------. | _____ | yes ______V_____ .' '. _|_ |Get ready | .' Receive '. yes .'any'. |for next TCB|--------->.'Packet Queue '.-------->.' more '. |____________| A '. empty ? .' A '.work?.' | '._______.' | '._.' | | no | | no "R"------>---------' __V__ | ____V____ .' is '. | | Go to | .' packet '. | | Sleep | .--<----------------------'.DSN with no.' | |_________| | yes '. data? .' | | '.___.' | | | no | | __V__ | | .' '. | | .' Receive '. yes | | .'Buffer Queue '.--->| | '. empty ? .' | | ________________ '._______.' | | |Copy from packet| | no |<-------------"S" | |to buffer until | __V__ | | |one is exhausted| .'First'. | | |Update receive | yes .' packet '. no | | |window. |<----.'matches Recv '.--->' | |________________| '.left window.' | | '. edge ?.' | __V__ '.___.' | .'Send '. | .' Packet '. yes _____________________________ | .' Queue empty '.---->|Create ACK packet containing | | '. ? .' |new window. Signal OPH. | | '._______.' |_____________________________| | no | | | | | | '--------------------------->| | | V V to "T" to "U" in Fig 2.3-2 in Fig 2.3-2
FIGURE 2.3-2: Reassembler (continued) "T" "U" | | | | _____________ ___V____ ___ __V__ |Mark progress| |process | yes .' '. yes .'whole'. no |in packet. | | DSN |<-----.' DSN '.<-----.' packet '.--->|Return buffer|--->. |________| '. set?.' '.copied?.' |to user. | | | '._.' '.___.' |_____________| | | | no | '--------------->| | | | __V__ __________________________ | .' EOL '. yes |Return buffer to user. | | '. set? .'--------->|Return packet to free |--->| '.___.' |storage. Signal Packetizer| | no | |__________________________| | | A | __V__ | | .' full'. | | '. buffer.'--------------' | '.___.' yes | | no | | | ___________________V__________________ | |Mark progress in buffer. Return packet| | |to free storage. Signal Packetizer. | ,--------' |______________________________________| | | | | | V V to "R" in Fig 2.3-1 to "S" in Fig 2.3-1
FIGURE 2.4: Packetizer _______ ________________________ / Begin \____________\| Get ready for next TCB |/___________________ \_______/ /|________________________|\ | | | __V__ _____ | .'Send '. .' any '. | no .' Buffer '. yes .' more '. yes | .-------------'. Queue .'---->'. work .'-----' | '.empty? .' A '. ? .' ____________V____________ '.___.' | '.___.' |Pick packet size depend- | | | no ,-->|ing on send buffer, TCB | | ______V______ | |buffer space, window, etc| | | go to sleep | | |_________________________| | |_____________| | | | | __V__ | | .'Send '. | | .' window '. no | | '.has room ? .'--------------------->| | '._______.' | | | yes | | __V__ | | .' TCB '. | | .' buffer '. no | | .'space avail- '.---------------------' | '. able ? .' A | '._______.' | | | yes | | _____________V____________ _________|_______ ____________ | |Copy from Send buffer to | |Move buffer from | |Set EOL bit | | |packet until packet full. | |Send queue to |<--|in packet | | |Put packet on Send packet | |packetized queue | |header | | |queue. Signal OPH. | |_________________| |____________| | |__________________________| A A | | | no | | __V__ __|__ | | .'whole'. .' EOL '. | | .' Send '. yes .' set in '. yes | | '. buffer .'----------->'. Send .'-----------' | '.copied?.' '.buffer?.' | '.___.' '.___.' | | no | _____________V__________ | |Note in TCB where in | --|Send buffer we stopped. | |________________________|
FIGURE 2.5a: Output Packet Handler _______ / Begin \ \_______/ | |<--------------------------. ____________V___________ | | Get ready for next TCB | | |________________________| | | | ,------------------------------------>| | | __V__ _____ | | _____ .'Send '. .' any '. | | yes .' ACK '. no .' Buffer '. yes .' more '. yes | | .-----'.bit set.'<------'. Queue .'---->'. work .'-----' | | '.___.' '.empty? .' A '. ? .' | | no |________ '.___.' | '.___.' | | |__________ | | no | ____V__________________ | | | | |Put latest receive left| ________v______ | ______V______ | |window edge in ACK. |->|Transmit packet| | | go to sleep | | |_______________________| |_______________| | |_____________| | | | | ________________ __V__ | | |Return packet to| .'pckt '. |_________________ | |buffer pool as | no .'seq # to '. | | |it has been |<------.'rgt of Send '. | | |ACKed | '.left window.' | | |________________| '. edge .' | | | '.___.' | | | | yes | | | _______________V________________ | | | |Move packet to retransmit queue;| | | | |set new retrans. time for it. | | | | |________________________________| | | | | | | '---------------------->| | | __V__ | | no .'Time '. yes | -------------------------------.'to switch'.---------------------' '.TCB's? .' '.___.'
FIGURE 2.5b: Retransmit Process _______ / Begin \ \_______/ | |<----------------------------------. ____________V___________ | | Get ready for next TCB | | |________________________| | | | .-------------------------------->| | | __V__ | | .' Any '. _____ | | .'packet's '. .' any '. | | .'retrans. time'. no .' more '. yes | | '. has occurred .'----->'. work .'-----' | '. for this .' '. ? .' | '. TCB ? .' '.___.' | '.___.' | | | yes | no | | ______V______ | ________V________ | go to sleep | | |Move packet to | |_____________| '------------------------|Send Packet | |queue. Signal OPH| |_________________|
FIGURE 3.1: OPEN _______ / Begin \ \_______/ | __V__ .'User '. _______ .'permitted'. no | | .' access to '.---->|error 1|------------. '.this local .' |_______| | '.socket?.' | '.___.' | | yes | __V__ | .' fgn '. | yes .' socket '. no | .-----'. specified .'----. | | '. ? .' | | __V__ '.___.' __V__ _______ | _______ .'conn-'. .'space'. no | | | | | yes .' ection '. '.for TCB.'---->|error 4|-->| ,-|error 6|<----'. already .' '.___.' |_______| | | |_______| '.exists?.' | yes | | '.___.' | | | | no ____V__________ | | _______ __V__ |Create TCB. Set| | | | | no .'space'. |S1=S2=R=F=C=1 | | |<-|error 4|<-----'.for TCB.' |Set U=1 | | | |_______| '.___.' |_______________| | | | yes | | | | | | | _________V__________ | | | |Create TCB. Set U=0 | | | | |Set S1=S2=R=F=C=1 | | | | |____________________| | | | | | | | '-------------.-------------' | | | | | _____________________V__________________ | | |Return local connection name and Success| | | |________________________________________| | | | | ----------------------------------->|<--------------------------------' ____V___ / Return \ \________/
FIGURE 3.2: SEND _______ / Begin \ \_______/ | __V__ .'conn-'. .' ection '. _________ .' legal for '. no | | '. this process .'---------->| error 1 |-----------. '. ? .' |_________| | '._______.' | | yes | __V__ | .'conn-'. _________ | .' ection '. no | | | .' open '.----------->| error 3 |---------->| '. ? .' |_________| | '._______.' | | yes | __V__ | .' fgn '. _________ | .' socket '. no | | | '. specified .'------------>| error 5 |---------->| '.(U=0)? .' |_________| | '.___.' | | yes | __V__ | .'conn-'. _________ | .' ection '. yes | | | '. closing ? .'------------>| error 12|---------->| '.(F,C=1).' |_________| | '.___.' | | no | ____________________V________________________________ | |Put buffer on Send Buffer queue and signal Packetizer| | |_____________________________________________________| | | | |<-----------------------------------------' ____V___ / Return \ \________/
FIGURE 3.3: INTERRUPT _______ / Begin \ \_______/ | | V Same as SEND | | | | ____________________V_________________________ | |Return any pending Send buffers with code 10. | | |Create INT packet on outgoing packet queue. | | |Signal Output Packet Handler. | | |______________________________________________| | | | |<-----------------------------------------' ____V___ / Return \ \________/
FIGURE 3.4: RECEIVE _______ / Begin \ \_______/ | __V__ .'conn-'. .' ection '. _________ .' legal for '. no | | '. this process .'---------->| error 1 |-----------. '. ? .' |_________| | '._______.' | | yes | _V_ | .' '. | .' '. | .'connection '. | .' state '. | :___________________: _________ | | | | | | | 1-4 | 5,6 | 0 '-------------------->| error 3 |-->| | '---------------------. |_________| | __________V__________ | | |Put buffer on Receive| | _________ | |Buffer queue. Signal | | | | | |Reassembler | '----->| error 12|-->| |_____________________| |_________| | | | |<------------------------------------------------' ____V___ / Return \ \________/
FIGURE 3.5: CLOSE _______ / Begin \ \_______/ | __V__ .'conn-'. .' ection '. _________ .' legal for '. no | | '. this process .'---------->| error 1 |-----------. '. ? .' |_________| | '._______.' | | yes | _V_ | .' '. | .' '. | .'connection '. | .' state '. | :___________________: _________ | 5| |3,4 |1,2,6 |0 | | | | | | '------------------>| error 3 |-->| ,------------' | '-------------------. |_________| | | ______________V______________________ | | | |Return all buffers to user with error| | ___________ | | |12; clear all packet queues, create | | |Remove TCB | | | |FIN packet, signal Output Packet | '--->|Return |--->| | |Handler, set C=F=1 | |Success | | | |_____________________________________| |___________| | | | | --------------------->|<----------------------------------------' ____V___ / Return \ \________/
FIGURE 3.6: STATUS _______ / Begin \ \_______/ | __V__ .'conn-'. .' ection '. _________ .' legal for '. no | | '. this process .'---------->| error 1 |-----------. '. ? .' |_________| | '._______.' | | yes | __V__ __________ | .'conn-'. |Return | | .' ection '. no |state=0 or| | '. open ? .'------------>|error 3 |--------->| '._______.' |__________| | | yes | ___________V___________ | |Fill in reply from TCB.| | |Return Success to user.| | |_______________________| | | | |<-----------------------------------------' ____V___ / Return \ \________/
FIGURE 4.1: SYN (no ACK) _______ / Begin \ \_______/ | _V_ .' '. .' '. .' S1, S2, R '. .' ? '. :___________________: 1,1,1 _________ __________ | | | | (states 4-6) | | |Treat as a| 1,0,1 | | | '------------->| error 6 |-->. |duplicate.|<-----------' | | |_________| | |Retransmit| | | 1.0,0 | |SYN, ACK | 0,0,0 | | (Syn sent) ________________ | |__________| (listening) | '------------>|Collision: Clear| | | | |S1, set timeout,| | | _____________________V________________ |remove SYN from |-->| | |Set R=S1=1. If U=1 set foreign socket | |retransmit queue| | | |in TCB to match packet local socket. | |________________| | | |Send SYN, ACK. Signal OPH. Fill in TCB| | | |with send window, receive sequence #. | | | |______________________________________| | | | | | | | '----------------------->|<---------------------------------------' ___V__ / Done \ \______/
FIGURE 4.2: SYN,ACK _______ / Begin \ \_______/ | __V__ .' '. .' State 2 '. no '.S1=1;S2=R=0.'----------------. '. ? .' | '.___.' | | yes | __V__ _______V______ .' ACK '. no | | .' correct '.-------->| send error 6 | '. ? .' |______________| '.___.' | | yes | _________V_________ | |Set S2=R=1. Process| | |ACK. Send ACK. | | |___________________| | | | |<----------------------' ___V__ / Done \ \______/
FIGURE 4.3: INT (from net) _______ ____________ / Begin \____\|Process ACK | \_______/ /|(may set S2)|------. |____________| | | __V__ ____________ .' in '. | Discard | no .' state 4 '. .<-------| (or queue) |<-------'. S1=S2=R=1 .' | |____________| '. F=0 ? .' | '.___.' | | yes | __V__ | ____________ .' '. | | ACK and | no .' within '. |<-------| discard |<-------'. window .' | |____________| '. ? .' | '.___.' | | yes | ____________________________V_______________ | |Move Receive Left window edge to sequence | | |number of INT. Return event 10 with any | | |pending Receive buffers. Ruturn event 11 to | | |user. Send ACK for INT. | | |____________________________________________| | | | __V__ | see yes .'data '. | Figure<----------.' in this '. | 2.2 '.packet?.' | '.___.' | | no '------------------------------------>| ___V__ / Done \ \______/
FIGURE 4.4: FIN _______ ____________ / Begin \____\|Process ACK | \_______/ /|(may set S2)|------. |____________| | | __V__ .' '. no .'S1=S2=R=1'. .--------------'. (estab- .' | '.lished).' | '.___.' | | yes | __V__ ______V_____ .' '. | | no .' within '. .-----------------| discard |<-------'. window .' | |____________| '. ? .' | '.___.' | | yes | __V__ | (state 4) 0 .'F bit'. 1 (state 5) | .------------'. value .'------------. | | '.___.' | | _________________________V________ | | |Return all user buffers (event 12)| _____________________V__ | |Clear all packet queues. Send FIN | |Return success to User's| | |packet. Set F=1. Inform user | |CLOSE. Remove TCB. | | |"connection closing" (event 12) | |________________________| | |__________________________________| | | | | '----------------->|<-----------------------------------' ___V__ / Done \ \______/
FIGURE 4.5: Error 6 (bad SYN) _______ / Begin \ \_______/ | | __V__ .' '. .'refers to'. .'current pckt?'. _________ .'(ACK matches seq '. no | | '. # of packet on .'----------------->| discard |-----------. '.retrans or send.' |_________| | '. queues?) .' | '._______.' | | yes | | | _V_ | .' '. 1 (state 3) | .' value '.--------------------------------. | '. of R.' bad SYN,ACK | | '._.' | | | | | | 0 (state 2) | | | bad SYN | | __________________V__________________ _______V______ | |Other side is established. Send RESET| |Clear S1, R | | |(put error packet's seq. # in ACK | |Remove SYN,ACK| | |field. Return all user buffers with | |from retrans | | |code 14. Inform user with event 14 | |queue. | | |_____________________________________| |______________| | | | | | V | |<--------------------------------------------------' ___V__ / Done \ \______/
FIGURE 4.6: Error 7,8 _______ / Begin \ \_______/ | __V__ .' '. .'refers to'. _________ .' current '. no | | '. packet (check .'---------------->| discard |-----------. '. ACK)? .' A |_________| | '._______.' | | | yes | | _V_ | | .' '. | | .' '. | | .'connection '. | | .' state '. | | :___________________: | | 4| 5| 3| 2| 6| | | .-------' | | | '------' | | | | '-----------------------------. | | | '-------------. | | | | | | | ___V___ ____V_______ ______V_______ ________V_________ | |Pass to| |Remove TCB. | |Clear S1, R. | |Discard. SYN will | | |user | |Return | |Remove SYN,ACK| |be retrans to | | |_______| |success to | |from transmit | |avoid receiver | | | |user's CLOSE| |queue (go to | |having to queue it| | | |____________| |state 1). | |__________________| | | | |______________| | | | V | V | '------------------------------>|<---------------------------------' ___V__ / Done \ \______/
FIGURE 4.7: RESET _______ / Begin \ \_______/ | __V__ no .'Reset'. yes .------------'. All ? .'------------------. | '.___.' | | _________V_________ | |Clear all TCB's for| | |foreign TCP. Inform| | |users with event 14| | |___________________| __V__ | .' Is '. _________ | .' RESET '. no | | | .'believable ? '.------->| discard |------------->| '.(check ACK .' |_________| | '.field) .' | '.___.' | | yes | ________________V________________ | |Clear all queues for this TCB. | | |Return event 14 for user buffers.| | |Inform User with event 14. | | |_________________________________| | | | |<----------------------------------------' ___V__ / Done \ \______/ [ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Alex McKenzie with ] [ support from GTE, formerly BBN Corp. 2/2000 ]