You are on page 1of 43

Sockets, TCP Segments Exchange

and related tasks


(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

You might also like