• Aucun résultat trouvé

11.1.1 Reeption de la trame Ethernet par la arte reseau Latramevoyagesurlesupportphysiqueatraverslereseau.Ilyatroispossibilites

N/A
N/A
Protected

Academic year: 2022

Partager "11.1.1 Reeption de la trame Ethernet par la arte reseau Latramevoyagesurlesupportphysiqueatraverslereseau.Ilyatroispossibilites"

Copied!
6
0
0

Texte intégral

(1)

Chapitre 11

Vue d'ensemble sur

l'implementation du sous-systeme

reseau de Linux

Commenousl'avonsditdanslaprefae,nousn'allonspasnousinteresserdansetouvrageau

sous-systemereseaude Linuxdans sonintegralitemaisuniquemental'envoid'un datagramme

UDPetasareeptionparunordinateurd'extremite.

La struturation en ouhes devrait nous permettre d'etudier l'envoi et la reeption pour

haune desouhes.L'experienemontre queei n'est paspedagogique, aumoins pourl'im-

plementationLinux.

La logique voudrait qu'on s'interesse d'abord a l'envoi d'un datagramme UDP puis a sa

reeption.Enfaitl'experienemontrequ'ilvautmieux,toujourspourdesraisonspedagogiques,

leontraire.

(2)

11.1 Reeption de donnees via un datagramme UDP

Lorsqu'unutilisateurenvoiedesdonneesvialeprotooleUDP,elles-isontenapsuleesdans

un datagramme UDP, puis dans un paquet IP puis dans une trame. Nous supposerons que

l'ordinateurreepteurest relieaureseauparunearteEthernet.

11.1.1 Reeption de la trame Ethernet par la arte reseau

Latramevoyagesurlesupportphysiqueatraverslereseau.Ilyatroispossibilites:

{ elleseperdlorsdesesperegrinations;

{ ellearriveorrompuesurlaarteEthernetdudestinataire;

{ ellearrivedanssonintegritesurlaarteEthernetdudestinataire.

Nous n'avons vu que le protoole Ethernet exige qu'un minuteur soit delenhe lors de

l'emission d'une trame. Dans lepremier as, la mahine emettrie ne reevra pas d'ausede

reeption. Au bout d'un ertain delai, elle enverra a nouveau la trame (en iterant un ertain

nombredefois).

Dansleseondas,sieiestdetetegr^aeauCRC,laartereseaudelamahinereeptrie

eartelatrame.Lamahineemettrienereevradonpasd'ausedereeptionetonseretrou-

veradanslasituationdupremieras.

Dansleseondas,siein'estpasdeteteparleCRC,etdansletroisiemeas,leontr^oleur

de la arte reseau ompare l'adresse materielle du destinataire de la trame ave elle de la

artereseaude lamahine reeptriesurlaquelle estarriveelatrame.Si elles-ionordent,il

delenhe une interruption materielle pour annoner aumiroproesseur de l'ordinateurqu'un

paquet estdisponibledans lamemoiredelaartereseau.Illaisse lepilotedeette arteagira

saguise.

Si lesdeuxadressesneonordentpas,il yatroisasdanslesquelsleontr^oleurdelaarte

aquandm^emeunomportementanalogue: dansleasd'unetramedediusion generale,dans

elui d'unetrame de multidiusiondontl'adresse est aepteepar laarteet dans leas d'un

mode speial, dit mode de promisuite. Nous ne nous ouperons pas de es as dans et

ouvrage.

Lemodedepromisuite,ommesonnomlelaisseentendre,indiquealaartereseaud'aepter

touteslestramesquiparviennentaelles-i.Ceiestutilepourlesrenieurs,quianalysenttout

equipassesurlereseau,soitdansunbutavouabledeontr^ole,soitdansunbutd'espionnage.

Danslesautresas,latrameestrejeteeparleontr^oleur.

11.1.2 Reuperation du paquet par l'ordinateur

Nous venonsde voirque lorsqu'une trame arriveen bonetat sur la artereseau de l'ordi-

nateur qui luiest destine,le ontr^oleurde laartedelenheune interruption.Le gestionnaire

de ette interruption, qui est une partie du pilote de la arte reseau, alloue un emplaement

enmemoirevivepourepaquet,appeletampon de soket(voirhapitres12 et13), eetue

quelques veriations sur e paquet et, si elles sont onluantes, le plae dans e tampon de

soket,ainsi qu'unepartie de l'en-t^etede trame, omprenant lesadresses materielles soure et

dedestinationainsiqueletypedupaquet.Ilalloueegalementundesripteur de tampon de

soketontenantdesinformationssur elui-i(debut desonemplaement, sataille,sonheure

d'arrivee...).

Suivantletypedupaquet,legestionnairefaitappelaunefontiondetraitementdeelui-i,

ayantpourseulparametrel'adressedudesripteurdetampondesoket.Dansleasd'unpaquet

(3)

11.1.3 Traitement du paquet par la ouhe reseau

Dansleasd'unetramedestineeaIPv4,laouhereseautraitelepaquetgr^aealafontion

iprv(). Celle-i verie d'abord s'il s'agit d'un paquet entier ou d'un sous-paquet d^u a une

fragmentation.Dansedernieras,elleplaelesous-paquetdansuneled'attenteetdelenhe

unminuteuren attendantde reevoirtousles sous-paquets ontituantle paquet originel.Si le

delais'eoulesansquetouslessous-paquetssoientarrives,elledetruitlessous-paquetsarrivesse

trouvantdanslaled'attente etenvoieunmessageICMPalamahineemettriepourindiquer

derenvoyerlepaquet.Sinonellereassemblelessous-paquetspourobtenirlepaquet originelqui

sera plae dans un seul tampon de soket puis demultiplexie la ouhe de transport gr^ae au

hamponernantelle-i del'en-t^ete IP.Cei onsisteatransmettreledesripteurdetampon

desoketalafontionudprv()dansleasdeUDP.

11.1.4 Traitement du datagramme par la ouhe de transport

DansleasdeUDP,laouhedetransportexeuteuneveriationminimalepuistransmet

lemessageal'appliationonernee.

On ommene parverierlalongueurdu datagramme.Si elle-iest inferieureaelle d'un

en-t^ete UDP, on se ontente d'aÆher un message noyau et de detruire le tampon de soket.

Sinon,si la longueurdudatagrammeest superieure aelle indiquee dans l'en-t^ete UDP, on se

ontente egalementd'aÆherunmessagenoyauet dedetruireletampondesoket.Onalule

ensuitela somme deontr^ole dudatagramme. Si ellene onordepas ave elle speiee dans

l'en-t^ete UDP, on seontenteegalement d'aÆherunmessage noyauet de detruire le tampon

desoket.

Si touteslesveriationssontonluantes,onplaeletampondesoket(enfaitunnouveau

desripteur,elui de ouhede transport) dans lale d'attente dereeption des datagrammes

UDP.

11.1.5 Reuperation par l'utilisateur

L'utilisateur ree une soket de la faonvue auhapitre 6et lit, dans le as nononnete,

atraverselle-i gr^ae ala fontionrevfrom(). Celle-i fait appel ala fontionde reeption

speiquealafamilledeprotooles,asavoirsokommonrevmsg()dansleasdeIPv4.Cette

derniereseontentededemultiplexersuivantlaouhedetransport:ellefaitappelalafontion

udprevmsg()dansleasdeUDP.

Lafontionudprevmsg()essaiedereupereruntampondesoketdanslaled'attentede

reeptionUDP,enfaisantappelaskb revdatagram()etenattendantquelebontamponde

soketarrives'ilnes'ytrouvepasdeja.Onlitalorslenombredearateresvoulu,quel'onplae

dansl'espaeutilisateur.

11.2 Envoi de donnees via un datagramme UDP

11.2.1 Envoi par l'utilisateur

L'utilisateurreeunesoketdelafaonvueauhapitre6etenvoie,dansleasnononnete,

atraverselle-i gr^ae ala fontion sendto(). Celle-i ree un messagea partirdes donnees,

omprenantenpartiulierunen-t^etedemessage,puisfaitappelalafontionsoksendmsg(),

elle-m^eme faisant appel a la fontion soksendmsg(), qui fait appel a la fontion d'envoi

(4)

attribue unnumerodeport aumessagepuisdemultiplexie suivant laouhedetransport:elle

faitappelalafontionudpsendmsg()dansleas deUDP.

11.2.2 Traitement du datagramme par la ouhe de transport

Lafontion udpsendmsg()ommeneparonstituerle datagrammeUDP apartirdumes-

sage.Silatailledesdonneesestsuperieurea65535otets,elles-inepeuventpastenirdansun

datagramme;ons'arr^etedonpurementetsimplement.Ilenestdem^emesionessaied'envoyer

des donnees urgentes (gr^aea un positionnement des drapeaux), puisque ei n'est pas prevu

dansleasdeUDP.Onreuperel'adresseetlenumerodeportpourrenseignerl'en-t^eteUDP.On

essaied'initialiseruneentreedeahederoutage;onest s^urd'yparvenirsilatablederoutage

possedeuneadressepardefaut.Onfaitennappelalafontionudpflushpendingframes()

pouronstituer le datagramme UDPpuis a lafontion udppushpending frames() pour en-

voyerledatagrammealaouhereseau.Iln'yapasbeoindedemultiplexerdansesens,puisque

laouhereseauestneessairementIPv4.

11.2.3 Envoi des paquets ordinaires sous IPv4

Lapremierepartie onsistearouter lepaquetgr^aealafontioniprouteoutputflow(),

hargeedefournirune entreedeahederoutage.Onremarqueraquel'onadejaparledeette

ation dans la sous-setionpreedente; ei est d^u au fait que Linux ne tient pas ompte des

ouhesdefaon strite.L'entreedeahederoutagepreiseenpartiulierquelepaquetdevra

^

etretransmis,dansleasd'unpaquetordinaire,alafontionip output().

LaseondeetapeonsisteaonstituerlepaquetIP.Pourelaonessaiedereupererlepremier

desripteur de tampon de soket de la le d'attente en eriture du desripteur de ouhe de

transportpasseenargumentalafontionippush pendingframes().Onreupereensuitetous

lesdesripteurs de ettele d'attente et on lesplae dans lalistedes fragments. Onrenseigne

les hamps d'un nouvel en-t^ete IP puis on fait appel a la fontion ip output() determinee

preedemment.

Latroisiemeetapeonsisteatransfererlepaquetdelaouhereseaualaouheinferieure.

Pour ela, on fragmenteventuellement le paquet, on positionne le type dupaquet de la sous-

ouhe 2b a ETHP IP et on transmet ala fontion ip finishoutput2(), qui fait appel a la

fontiondevqueuexmit()d'envoid'unetrame.

11.2.4 Envoi de la trame

La fontiondevqueuexmit(),ouskbdesignele desripteurdetamponde soket,indique

alaartereseauqu'ilyadesdonneesaenvoyeret leuremplaementenmemoirevive.Laarte

s'oupedureste,utilisantl'aesdiret alamemoire(DMA)pourreupererlesdonnees.

A la

ndel'emission,laarteleveuneinterruptionpourprevenirlenoyauquelatrameaeteenvoyee

avesuesouqueledelais'esteoule.

Les donnees onsistent en un paquet de la ouhe reseau. La arte s'oupe d'enapsuler

elui-ipourobtenirunetrame.

11.3 Historique

Une implementationUUCP atournesousLinuxpresquedesledebut. L'implementationde

TCP/IP a ommene en 1992 lorsque Ross Biro et d'autres ont reee qui fut ensuite onnu

(5)

Ross Biro ne s'oupa plus du developpement de Linux a partir de mai 1993. Fred van

Kempen ommena alors a travailler sur une nouvelle implementation, qui sera onnue sous

ladenominationdeNet-2.Lapremiereversionpublique,Net-2d,apparutdanslenoyau0.99.10

del'ete1993.AlanCoxommenaas'interesserauprojet,onevantNet-2Debugged,puispassa

alaversionNet-3pourLinux1.2et Linux2.0.Lenoyau2.2utiliseNet-4.

(6)

Références

Documents relatifs

Sur ces quelques lignes, nous vous laissons découvrir ce hors-série consacré aux codes malveillants sous GNU/Linux et Unix en espérant que les auteurs des différents articles -

Quand Mme Abdou prepare à manger pour ses enfants, elle prend soin que chacun ait autant de bananes et de mabawas et que rien ne soit jeté4. Aujourd’hui pour le repas de ses

Vous encadrerez en particulier vos commentaires concernant le nombre d’octets total de la trame, le nom du protocole de chacun des en-tˆetes, l’adresse MAC du destinataire, le temps

Vous encadrerez en particulier vos commentaires concernant le nombre d’octets total de la trame, le nom du protocole de chacun des en-tˆetes, l’adresse MAC du destinataire, le temps

Le responsable d’une entreprise ultra-sensible, dont les postes informatique sont tous sur le mˆeme r´eseau local Ethernet avec adresses IP donn´ees par DHCP, a r´ecup´er´e

r eserve pas un emplaement en m emoire vive pour haque ouhe, mais un seul emplaement.. pour le paquet, dont le d ebut peut s'aro^ tre ou r etr eir a souhait pour tenir ompte

La d6monstration est facile et peut se faire de plusieurs mani6res... Sur une

[r]