Professor Salem HASNAOUI - ENIT / FSB2013 TCP Sockets -Official primitives naming connection phase data exchange phase Close Connection phase a. Sock = socket(type of data communication TCP / UDP, SOCK_STREAM, 0) SOCK_DGRAM UDP b. Connect(socketdescriptor, address_structure, length of address structure) c. Hp=gethostbyname(server
Original Description:
Original Title
Sockets & TCP related Tasks (From Hasnaoui's Book).pdf
Professor Salem HASNAOUI - ENIT / FSB2013 TCP Sockets -Official primitives naming connection phase data exchange phase Close Connection phase a. Sock = socket(type of data communication TCP / UDP, SOCK_STREAM, 0) SOCK_DGRAM UDP b. Connect(socketdescriptor, address_structure, length of address structure) c. Hp=gethostbyname(server
Professor Salem HASNAOUI - ENIT / FSB2013 TCP Sockets -Official primitives naming connection phase data exchange phase Close Connection phase a. Sock = socket(type of data communication TCP / UDP, SOCK_STREAM, 0) SOCK_DGRAM UDP b. Connect(socketdescriptor, address_structure, length of address structure) c. Hp=gethostbyname(server
(c) Professor Salem HASNAOUI - ENIT/FSB- 2013 TCP Sockets Official primitives naming Connection phase Data exchange phase Close Connection phase a. sock = socket(type of data communication TCP/UDP, SOCK_STREAM, 0). SOCK_DGRAM UDP b. connect(socketdescriptor, address_structure, length of address structure). c. hp=gethostbyname(server name) : Host pointer to Host structure which contains the server name and host address a. socket_descriptor=socket(add ress_domain, communications_type, protocol) b. bind(socketid, &serveraddress, length of server address) Pour les ports >1025 c. Listen() d. new socket descriptor= accept(socketid, client address structure, length of client address structure) (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Connection phase Data exchange phase Close Connection phase TCP Sockets - (C-TCPIP) (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 UDP Sockets Official primitives naming (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 No connection establishment between UDP client and UDP server Only Data exchange phase UDP Sockets - (C-TCPIP) (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 ULP A: Client pour TCP A locale et client pour ULP B distante TCP A: Serveur pour l'ULP A locale Client pour TCP B distante (SYN=x, ACKN=0) 3.Active Open 4.Open ID 8. Open Success ULP B: Client pour TCP B locale et serveur pour ULP A distante TCP B: Serveur pour ULP B locale Serveur pour TCP A distante 1. Passive Open 2.Open ID 9.Open Success 5.SYN, SN=x, ACKN =0 6. ACKN=x+1, SYN, ACK, SN=y 7. ACK=y+1 Figure 9.5 Phase tablissement d'une connexion de transport TCP Sockets -Connection phase: Segments Exchanged 1 1 1 2 3 5 4 5_1 9 4 4 (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 1 a. socket_descriptor=socket(a ddress_domain, communications_type, protocol) b. bind(socketid, &serveraddress, length of server address) c. Listen() d. new socket descriptor= accept(socketid, client address structure, length of client address structure) ULP A TCP A 10.Send (n Bytes) 15. Deliver (m Bytes) ULP B TCP B 12.Deliver (n Bytes) 13.Send (m bytes) 11. SYN, SN=x+1 (Data) 12. ACKN=x+n+1 16. ACKN=y+m+1 SN=x+n+1 14. SN=y+1 (Data) Figure 9.6 Phase de transfert de donnes sur une connexion de transport TCP Sockets -Data transfer phase: Segments Exchange 6 6 6 7 7 (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 6 7 ULP A (Client) TCP A 17.Close 23. Deliver (k bytes) ULP B (Serveur) TCP B 18. Send (k Bytes) 28. Terminate 19. FIN, SN=x+n+1 20. ACK=x+n+2 25. FIN, SN= y+m+1 ACKN=x+n+1 22. SN=y+m+1 (Data) 21. Closing Indication 24. Close 27. Terminate .ACKN= y+m+1+k Figure 9.7 Phase de libration de connexion de transport TCP Sockets - Closing phase: Segments Exchanged 8 8 8 8 (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 8 a. socket_descriptor=socket(a ddress_domain, communications_type, protocol) b. bind(socketid, &serveraddress, length of server address) c. Listen() d. new socket descriptor= accept(socketid, client address structure, length of client address structure) Connection phase Data exchange phase Close Connection phase TCP Finite State Machine (FSM) (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Au dmarrage du systme et avant qu'une entit ULP ne demande une connexion de transport (_Passive-Open dans le cas du serveur et _Active-Open dans le cas d'un client). Aprs demande de fermeture par l'entit ULP et que le segment FIN mis a t acquitt, aprs la phase de transfert de donnes. Aprs demande de fermeture par l'entit ULP et que l'entit TCP serveur se trouve dj dans l'tat TCPS_LISTEN, en absence de tout transfert de donnes. Aprs l'mission d'un segment SYN et que le timer a t expir ou que l'entit ULP ayant demand l'tablissement de la connexion de transport ordonne brusquement de fermer la connexion avant la fin de son tablissement. Aprs indication d'un tat de fermeture et renvoi d'un segment fin ; et que le timer de rception des dernires donnes, a t expir. TCP Finite State Machine Closed state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Au dmarrage du systme lorsqu'une entit ULP serveur demande une connexion de transport _Passive-Open. Aprs renvoi d'un segment ACK d'acquittement de connexion de transport bit "SYN =1" et bit "ACK=1" et que l'entit TCP ayant demand la connexion de transport l'abandonne brutalement, abandon signal dans un segment FIN avec bit "RST=1". TCP Finite State Machine LISTEN state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Au dmarrage du systme lorsqu'une entit ULP cliente demande une connexion de transport _Active-Open et envoi d'un segment SYN. Lorsque l'entit TCP serveur (tat TCPS_LISTEN) reoit la demande de service Send(), pour envoyer des donnes la machine distante. L'ouverture ct serveur aurait t faite par Full- Specified_Passive-Open(). Aprs renvoi d'un segment ACK d'acquittement de connexion de transport bit "SYN =1" et bit "ACK=1" l'entit TCP ayant reu un segment SYN (tat TCPS_SYN_RECEIVED). TCP Finite State Machine SYSN_SENT state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Aprs rception d'un segment SYN d'tablissement d'une connexion de transport TCP Finite State Machine SYSN_RECEIVED state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Lorsque les deux entits TCP ont produit chacune l'vnement de sortie Open-Success (ou action Open-Success) l'entit ULP laquelle est rattache et qu'elle change des donnes et des acquittements. Cet tat transite l'tat TCPS_CLOSE_WAIT lors de la rception d'un segment FIN ou l'tat TCPS_FIN_WAIT-1 lors d'une demande de fermeture de connexion par la primitive CLOSE. TCP Finite State Machine ESTABLISHED state DATA FLOW CONTROL (ESTABLISHED STATE) ESTABLISHED URG PUSH NORMAL Data (URG=1) DELIVER (URG=1) Data (URG=0, PUSH=0) DELIVER (URG=1) Data (PUSH=1) DELIVER (URG=1) Transitions entre tats microscopiques de l'tat "ESTABLISHED" en entre (ou en TCP-INPUT) (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 EVENT ACTION Legend: TCP Finite State Machine ESTABLISHED state On considre qu'on a trois sous tats microscopiques de l'tat "ESTABLISHED" - URG, NORMAL et PUSH. Ainsi: A la rception du segment de donnes urgentes l'entit TCP notifie l'entit ULP objet du segment (au numro de port dsign) de l'arrive des donnes urgentes par la primitive de service DELIVER ou le bit URG est positionn. On est alors dans l'tat URG. L'entit TCP tient un compteur sur les donnes urgentes. Au marquage de fin de donnes urgentes l'entit TCP bascule vers l'tat NORMAL. A la rception du segment de donnes ou le service PUSH est requis, l'entit TCP notifie l'entit ULP correspondante de l'arrive de "donnes urgentes" par la primitive de service DELIVER ou le bit URG est positionn. L'entit TCP assimile les donnes au bit "PUSH=1" comme tant des donnes urgentes. Aussi, au marquage de fin de donnes urgentes l'entit TCP bascule vers l'tat NORMAL. A la rception d'un segment de donnes o tous les bits SYN, ACK, RST, URG, PUSH et FIN valent "0", l'entit TCP dcide que c'est l'tat NORMAL de transfert de donnes (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Lorsqu'un segment FIN arrive une entit TCP dj en mode TCPS_ESTABLISHED. L'entit TCP informe l'ULP locale que l'entit TCP distante dsire terminer la connexion et attend que l'ULP locale effectue son tour la demande de fermeture de la connexion de transport. L'entit TCP passe l'tat TCPS_LAST_ACK lorsque l'ULP locale demande effectivement la fermeture par la primitive Close(). TCP Finite State Machine CLOSE_WAIT state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Lorsque L'vnement CLOSE a eu lieu. Dans le but de prvenir une perte de donnes non encore acquitte due ventuellement une fentre nulle, TCP temporise l'mission du segment FIN en attendant le dernier acquittement de ces donnes TCP Finite State Machine CLOSE_WAIT state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Lorsqu'une demande de fermeture de connexion par la primitive CLOSE a eu lieu, en tant qu'vnement d'entre, partir de l'tat TCPS_ESTABLISHED. Lorsqu'une demande de fermeture de connexion par la primitive CLOSE a eu lieu partir de l'tat TCPS_SYN_RECEIVED. Pour l'un ou l'autre des deux tats origines, TCP envoie un segment FIN. L'entit TCP homologue peut rpondre par un segment ACK, par un segment FIN ou par les deux. Si FIN arrive seul, TCP objet de l'tat en question, rpond par un segment ACK et passe l'tat TCPS_CLOSING. Si ACK arrive seul, TCP passe un second tat d'attente du segment FIN appel " TCPS_FIN_WAIT-2". Si les segments ACK et FIN arrivent, TCP passe l'tat TCPS_TIME_WAIT o l'on est sr dans cet tat, pendant au minimum deux fois la dure de vie d'un segment, que rien ne se passe dans le rseau avant de dcider finalement d'actualiser l'tat de TCP TCPS_CLOSED TCP Finite State Machine CLOSE_WAIT_1 state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Lorsqu'il reoit un segment FIN en rponse au segment FIN envoy. L'entit TCP se trouvant dans cet tat attend l'acquittement des dernires donnes par le biais du segment ACK avant de sortir l'vnement TERMINATE pour indiquer son ULP que la connexion de transport a t dfinitivement termine. A la rception du segment ACK, l'entit TCP passe l'tat TCPS_TIME_WAIT. TCP Finite State Machine CLOSING (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le protocole TCP se trouve dans cet tat Lorsqu'il reoit un segment ACK en rponse au segment FIN envoy. L'entit TCP se trouvant dans cet tat attend toujours le segment FIN pour librer la connexion de transport. A l'arrive de ce dernier TCP passe l'tat TCPS_TIME_WAIT. TCP Finite State Machine CLOSE_WAIT_2 state Le protocole TCP se trouve dans cet tat Suite une transition partir de l'tat TCPS_CLOSING. Suite une transition partir de l'tat TCPS_FIN_WAIT-2. C'est un temps de garde ncessaire pour remettre TCP l'tat TCPS_CLOSED. En effet, puisque les mcanismes de transfert du protocole IP ne sont pas fiables, des duplications de segments FIN peuvent avoir lieu. TCP Finite State Machine TIME_WAIT state (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 TCP Events and Actions _PASSIVE- OPEN ou _ACTIVE- OPEN SEND CLOSE ou ABORT PROCESSUS ULP OPEN-ID OPEN-SUCCESS DELIVER CLOSING- INDICATION TERMINATE Evnements l'entit TCP SYN ACK FIN RST FIN + ACK SYN+ ACK Data (URG/PU SH) SYN ACK FIN RST FIN + ACK SYN+ ACK Data (URG/PU SH) Actions entreprises par l'entit TCP Entit TCP PROCESSUS TCP DISTANT (Via le rseau) Entit TCP - vnements d'entre et actions de sortie 1. TCPS_FREE IOERR() 2. TCPS_CLOSED TCPCLOSED() 3. TCPS_LISTEN TCPLISTEN() 4. TCPS_SYN_SENT T CPSYNSENT() 5. TCPS_SYN_RECEIVED TCPSYNRCVD() 6. TCPS_ESTABLISHED TCPESTABLISHED() 7. TCPS_FIN_WAIT-1 TCPFIN1() 8. TCPS_FIN_WAIT-2 TCPFIN2() 9. TCPS_CLOSE_WAIT TCPCLOSEWAIT() 10. TCPS_LAST_ACK TCPLASTACK() 11. TCPS_CLOSING TCPCLOSING() 12. TCPS_TIMEWAIT TCPTIMEWIAT() 13. TCPO_IDLE TCPIDLE() 14. TCPO_PERSIST TCPPERSIST() 15. TCPO_XMIT TCPXMIT() 16. TCPO_REXMT TCPREXMT() Action (Callback Function) Changed Status (TCP State : Event) TCP Events and Actions (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Pseudo-Code for TCP Main Module (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 IDLE PERSIST Transitions entre tats microscopiques de l'tat "ESTABLISHED" de TCP-OUTPUT TRANSMIT RETRANSMIT DEBUT Timer de persistance expir Fentre nulle Fentre non nulle Tous les segments y inclus ACK envoys Timer de retransmission expir Acquittement arriv Timer de retransmission expir Message d'envoi suite send() Tous les messages y compris ACK envoys Chaque fois que TCP-OUTPUT envoie un segment, il crit dans une liste chane la valeur de la temporisation. Le TCP-TIMER dcrmente cette valeur. Dcrmente jusqu' zro ou en d'autres termes jusqu' l'expiration du timer de retransmission ; TCP-TIMER envoie un message TCP-OUTPUT et passe son tat de "TRANSMIT" "RETRANSMIT". A la fin de retransmission et lorsque tous les segments envoys sont acquitts, le processus TCP-OUTPUT actualise son tat de "RETRANSMIT" "IDLE". Nous avons vu au paragraphe V-4 que si un acquittement est arriv avant l'expiration du timer, TCP supprime le ou les segments appropris de la file d'attente et dtruit le ou les timers activs. C'est le processus TCP-INPUT qui fait ce travail en consultant la liste chane des temps restants pour les segments envoys et c'est lui qui fait passer TCP- OUTPUT de l'tat "RETRANSMIT" l'tat "TRANSMIT". Finite State Machine (FSM) TCPTIMER (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 On a besoin de modifier ou de lire : Les informations caractrisant les machines tats finis 1. Exclusion mutuelle de TCB 2. Smaphore ouverture/fermeture de connexion de transport 3. L'tat courant de TCP (ou TCP-INPUT) 4. Le type de l'entit TCP : Client ou Serveur 5. L'tat courant de TCP-OUTPUT 6. Opration raliser (ou mthode appeler) ' 7. Flags/Numros de squence/Erreur- d'envoi ou de rception tels que : Pas de donnes acquitter (lors d'envoi de SYN) PUSH pour dlivrer immdiatement les donnes URG pour dlivrer en urgence les donnes NORMAL pour buffriser les donnes Fermeture de la connexion par l'utilisateur Sortir les donnes immdiatement (bit URG et/ou PUSH "1") Retarder l'acquittement Plus de donnes mettre Utilisateur ferme la connexion de transport Plus de donnes recevoir - Ne plus accepter de donnes reues Validit du pointeur de donnes urgentes reues Validit du pointeur de donnes urgentes mises Besoin de transmettre des donnes lorsqu'on passe l'tat IDLE Numro de squence pour FIN (ou "0") Numro de squence pour PUSH Erreur retourner l'utilisateur suite une condition d'exception Transmission Control Block - TCB (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Les informations relatives au site et aux applications 1. Adresse IP locale 2. Adresse IP distante 3. Port TCP local 4. Port TCP distant 5. Interface locale Les informations pour contrle de flux et de congestion 1. Taille de la fentre l'mission 2. Taille de la fentre de congestion 3. Seuil du dmarrage lent en octets 4. Squence SN de la dernire fentre mise jour 5. Squence ACKN de la dernire fentre mise jour 6. Valeur de la dviation estime de RTT 7. Pointeurs pour faire la correspondance entre donnes et adresse d'un buffer circulaire au moment de l'envoi des donnes. Informations sur les dlais de retransmission 1. Time-Out de persistance 2. Time-Out de retransmission 3. Les valeurs KeepAliveTime et KeepAliveInterval 4. Nombre de retransmissions envoyes. Tailles des files d'attente alloues LISTEN pour chaque port. Pointeurs de donnes urgentes mises et reues. Transmission Control Block - TCB (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Informations sur l'mission de segments 1. Taille du buffer d'mission 2. Pointeur sur le "buffer" contenant les donnes mettre 3. Dbut d'octets envoyer. 4. Nombre d'octets envoyer 5. Numro du segment recevoir 6. Smaphore d'envoi 7. Numro de squence initial Informations sur la rception de segments 1. Taille du buffer e rception 2. Pointeur sur le "buffer" contenant les donnes reues 3. Dbut d'octets reus. 4. Nombre d'octets reus 5. Smaphore de rception de segments 6. MSS reu (obtenu pendant la phase de ngociation au dmarrage) 7. Taille de la fentre courante Informations d'ordre gnral 1. Pointeur sur TCB parent d'une table de TCB. 2. Numro de l'interface rseau Transmission Control Block - TCB (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Descripteurs de segments TCP reus ou mettre TCP Port Table TCB descriptors (one by port number) Associated buffer Incoming Messages FIFO Receive Buffer Window Incoming Messages FIFO Receive Buffer Window Associated buffer TCP Buffer Used and Related Descriptors Organization (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Current Buffer Address Total Bytes transferred Next TCP Header Address Current Buffer Address Total Bytes transferred Next TCP Header Address Current Buffer Address Total Bytes transferred Next TCP Header Address 0 1 N 0 1 N 0 1 N Segment 0: Header + data Segment 1 : Header + data Segment N: Header + data TCP Buffer Used and Transmitted and Received Segments Descriptor Organization (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Processus TCP d'entre (TCP-INPUT), Processus TCP de sortie (TCP-OUTPUT) et Processus de temporisations (TCP-TIMER). 1. Le processus TCP-INPUT est responsable de la gestion de la machine tats finis du protocole TCP reprsente sur la figure 9.10 et du traitement des segments entrants tels que l'extraction d'un segment partir de la file d'attente de remise de segments, la comparaison des ports source et destinataire, la vrification de l'entte (checksum), l'interprtation du champ d'options et particulirement la taille de la fentre, l'acquittement des bons segments selon la politique adopte. En bref il doit traiter l'entte TCP de chaque segment qui arrive partir du rseau et ce champ par champ, et faire l'action dpendante de l'tat courant de la machine tats finis de la figure 9.10. 2. Le processus TCP-OUTPUT est considr comme un tat microscopique de ce qui se passe chaque tat de la machine TCP reprsente sur la figure 9.10 (ou TCP-INPUT), puisqu'il doit interagir chaque segment qui arrive partir du rseau. Cependant, il peut tre dcrit par une machine tats finis lorsque TCP-INPUT atteint l'tat "ESTABLISHED" ou "DATA FLOW CONTROL". La machine tats finis de TCP-OUTPUT reprsente en fait la reprsentation microscopique de chacun des tats "NORMAL", "URG", "PUSH" lorsque l'tat global "ESTABLISHED" a t atteint. 3. Le processus TCP-TIMER est une autre partie importante de TCP qui consiste la gestion des timers de retransmission. Cette gestion devrait s'effectuer en temps rel. En effet, la retransmission adaptative repose sur l'estimation du RTT, calcul partir du temps rel prlev chaque extrmit de la connexion de transport. Le processus TCP-TIMER gre aussi des dlais de persistance. En effet, lorsque la fentre signale est petite ou nulle, le processus TCP de sortie que nous discuterons dans le paragraphe suivant tient un temps de persistance avant de transmettre de nouveau des segments TCP. Les trois processus communiquent constamment entre eux pour coordonner l'change de segments de donnes et d'acquittements. TCP Related Processes (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 Le processus TCP-INPUT est le principal processus implmenter. La mthode d'implmentation procdurale consiste affecter chaque tat une procdure. Dans la programmation oriente objet on affecte le mme nom de procdure la mthode de la classe TCP-INPUT. Rappelons que TCP-INPUT fait l'action dpendante de l'tat courant de la machine tats finis de la figure 9.10. Selon les tapes suivantes : A chaque segment qui arrive partir du rseau ou chaque primitive de service partir d'une entit ULP, TCP-INPUT traite l'entte du segment ou la primitive pour dcoder le type d'vnement d'entre conformment la figure 9.9. 1. TCP-INPUT accde TCBRepository pour avoir l'tat courant. 2. A partir de l'tat courant et de l'vnement d'entre, TCP-INPUT se pointe sur la mthode de traitement adquate. 3. TCP-INPUT met jour TCBRepository et particulirement son tat courant. En d'autres termes TCP-INPUT transite au nouvel tat aprs excution de l'action selon l'vnement d'entre et l'tat dans lequel il se trouvait (ancien tat). TCP InputProcess (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 TCP InputProcess (Continued) Dans l'tape 3 ci-dessus, TCP se pointe sur la mthode de traitement qui porte un nom faisant rfrence l'tat de TCP-INPUT. L'excution de la mthode revient en fait raliser l'une des actions suivantes : Renvoi de l'un des quatre types de segments TCP (SYN, data, ACK et FIN) Ou renvoi de l'unes des primitives de rponses aux couches ULP, OPEN_ID, OPEN_SUCCESS, DELIVER, CLOSING_INDICATION, TERMINATE Lorsque l'action a t excute, TCP-INPUT passe l'tape 4 pour terminer la transition de son tat courant et mettre jour les paramtres de TCBRepository au cas o il y aurait un changement quelconque dans l'un des paramtres de TCB. Les mthodes utilises peuvent tre comme suit : IOERR TCPS_FREE (mthode IOERR pour l'tat TCPS_FREE) TCPCLOSED TCPS_CLOSED () TCPLISTEN TCPS_LISTEN () TCPSYNSENT TCPS_SYN_SENT() TCPSYNRCVD TCPS_SYN_RECEIVED() TCPESTABLISHED TCPS_ESTABLISHED() TCPFIN1 TCPS_FIN_WAIT-1() TCPFIN2 TCPS_FIN_WAIT-2 () TCPCLOSEWAIT TCPS_CLOSE_WAIT () TCPLASTACK TCPS_LAST_ACK () TCPCLOSING TCPS_CLOSING () TCPTIMEWIAT TCPS_TIMEWAIT() (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 TCP outputProcess Les messages que TCP-OUTPUT peut recevoir sont : SEND: Produit par TCP-INPUT pour envoyer des donnes ou des acquittements. RETRANSMIT: Produit par TCP-TIMER pour provoquer la retransmission des mmes donnes. PERSIST: Produit par TCP-INPUT pour envoi de donnes afin de tester la fentre de rception de l'entit TCP homologue. DELETE: Pour provoquer la destruction d'un TCB expir Chaque message contient les paramtres suivants : Pointeur sur le TCB (ou le nom de TCBRepository) auquel les donnes envoyer s'attachent. Le type du message. TCP-OUTPUT fait l'action dpendante de l'tat courant de la machine tats finis de la figure 9.12. selon les tapes suivantes : A chaque message qui arrive TCP-OUTPUT le dcode pour savoir le type du message d'entre. TCP-OUTPUT accde TCBRepository pour avoir l'tat courant. A partir de l'tat courant et du message d'entre, TCP-OUTPUT se pointe sur la mthode de traitement adquate. TCP-OUTPUT met jour TCBRepository et particulirement son tat courant. En d'autres termes TCP-OUTPUT transite au nouvel tat aprs excution de l'action. Les mthodes utilises dans ce cas portent aussi des noms qui rappellent les tats de TCP-OUTPUT savoir : TCPIDLE TCPO_IDLE() TCPPERSIST TCPO_PERSIST() TCPXMIT TCPO_XMIT () TCPREXMT TCPO_REXMT () (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 TCP TimerProcess TCP-INPUT effectue des ajouts et des suppressions d'vnements pour une connexion de transport et limine ventuellement tous les vnements relatifs une connexion au retour l'tat "CLOSED". Les oprations d'insertion d'vnements font rfrence au type du segment envoy, sa longueur, son dlai de retransmission estim et le port d'mission. L'opration la plus courante dans la gestion des vnements est la recherche du temps restant pour chaque vnement, insr dans une liste appele liste delta dans laquelle les temps insrs sont des temps relatifs. Si par exemple les temps des vnements supposs apparatre dans le futur seront 10, 15, 22, 70 units de temps; la liste delta contiendra les valeurs 10 units pour le premier, 5 units pour les second (15-10), 7 units pour le troisime (22-15), 48 units pour le dernier. L'intrt d'une telle liste rside dans le fait qu'un processus priodique dcrmente successivement chaque valeur jusqu' zro avant de passer la valeur suivante. Dans l'exemple ci-dessus o les valeurs sont 10, 5, 7, 48 units de temps chacune. Le processus TCP-TIMER dcrmente la valeur 10 jusqu' zro avant de dcrmenter la valeur 5 et ainsi de suite. Le processus TCP-TIMER utilise le service adquat du systme d'exploitation pour lire la valeur de l'horloge temps rel. Si la liste delta est vide le processus TCP-TIMER fait appel au service correspondant du systme d'exploitation pour le suspendre. En effet, la liste ne peut tre vide que s'il n ' y a plus d'activits sur le rseau et il vaut mieux librer l'unit centrale du processus TCP-TIMER (c) Professor Salem HASNAOUI - ENIT/FSB- 2013 La liste delta mentionne ci-dessus est une liste chane qui contient les paramtres suivants : RelativeTime: Temps relatif OutputPort: Numro du port de sortie (ou source port) NextActionName: Le nom de l'action excuter NextRelativeTime: Pointeur sur l'lment suivant. Il y a lieu d'ajouter (SetTimer()) un lment la liste (ce qui revient au mme l'ajout d'un vnement), de supprimer un lment (ClearTimer()) suite l'arrive d'un acquittement et de chercher le temps restant pour un vnement (TimeLeft()). L'lment supprimer est identifi par le message envoy (msg) et le numro de port de sortie (OPort). Cette liste et les procdures utilises pour ajouter, supprimer un vnement et rechercher un temps restant pour un vnement sont encapsules dans la classe d'abstraction de donnes DeltaListRepositoryClass dont le principe a t expos dans l'implmentation du processus IP (paragraphe VII-5 du chapitre 6). TCP TimerProcess (Continued) (c) Professor Salem HASNAOUI - ENIT/FSB- 2013