mardi 14 août 2012

C'est Quoi un logiciel ?

les LOGICIELS


En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués

samedi 11 août 2012

Tout Ce Que Vous Voulez Savoir Sur la Sociéte iOS(Apple)

Systèmes de diffusion de l'information

Systèmes de diffusion de l'information



Les Jeux Olympiques sont un mariage complexe de technologies


Services et Solutions des Jeux Olympiques



Les Jeux Olympiques sont un mariage complexe de technologies, de procédures et d'individus.

Atos fournit la technologie des JO de Londres 2012

Atos fournit la technologie des JO de Londres 2012

Londres 2012 Systems et technologies

Nos équipes maintiennent le monde entier connecté durant Londres 2012 !

L’un des plus grands défis auquel les équipes d'Atos sont confrontées pendant les Jeux olympiques les plus connectés de l'histoire est de s'assurer que les 27 000 journalistes accrédités sur le réseau olympique puissent accéder à l'information dont ils ont besoin, quel que soit le terminal utilisé.

Tyrann Mathieu

AVEC PAUL RYAN, ROMNEY MET LA BARRE À DROITEAVEC PAUL RYAN, ROMNEY MET LA BARRE À DROITE

AVEC PAUL RYAN, ROMNEY MET LA BARRE À DROITE


développement informatique


Le développement informatique




ou

Le développement de logiciel

Le développement de logiciel est le travail d'étudier, de concevoir, construire, transformer, mettre au point, maintenir et améliorer des logiciels.
Ce travail est effectué par les collaborateurs des éditeurs de logiciels, des sociétés de services et d'ingénierie informatique (abr. SSII) et les membres de la communauté du logiciel libre.
Un logiciel est créé petit à petit par une équipe d'ingénieurs, au service d'un ou de plusieurs utilisateurs. Différentes activités permettent de prendre connaissance des attentes de l'usager, créer un modèle théorique du logiciel, qui servira de plan de construction, puis construire le logiciel, contrôler son bon fonctionnement et son adéquation au besoin. La planification et la répartition des travaux permet d'anticiper le délai et le coût de fabrication.
Les activités clé
Un logiciel est créé petit-à-petit en effectuant des travaux d'analyse, de conception, de construction, de tests, puis de recette. La phase préliminaire avant le commencement des travaux de développement est une étude qui permettra de déterminer le besoin, le but visé par les travaux, et le retour sur investissement de l'utilisation du futur logiciel. Cette phase comporte souvent une analyse sommaire, destinée à obtenir une estimation empirique du coût de fabrication du logiciel.


Analyse

Le travail de l'analyste est d'effectuer une enquête, qui vise à recenser, et documenter chaque fonctionnalité que devra offrir le logiciel, et créer les documents de spécification, qui seront la base du cahier des charges du logiciel. C'est à ce moment que sera créée la maquette de l'interface graphique du logiciel1.
Un cahier des charges détaillé permettra au chef de projet de calculer en détail de coût de fabrication du logiciel ainsi que le temps nécessaire.

Conception

Le travail de conception consiste à déterminer les solutions techniques théoriques qui permettront de satisfaire le cahier des charges, c'est-à-dire les attentes de l'usager. L'ingénieur se basera sur ses connaissances scientifiques, ainsi que le savoir-faire propre au développement logiciel que sont les patrons de conception - des modèles de solutions déjà éprouvés. Le résultat du travail effectué sont des documents tels que les diagrammes d'architecture, la description du modèle de données et le diagramme de classes. Les diagrammes utilisent souvent la notation UML

Construction

La construction est la principale activité, qui occupe plus de la moitié de la durée totale du développement. Durant cette étape le programmeur rédige le code source du logiciel, puis utilise un compilateur pour le transformer et obtenir le logiciel proprement dit. Le programmeur effectue également de nombreux tests en vue de déceler un maximum de bugs - des erreurs de programmation.
Les différents modules du logiciels sont programmés un par un, puis rassemblés, et de nouveaux tests sont effectués en vue de vérifier le fonctionnement de l'ensemble (test d'intégration).
Le produit de cette phase est le livrable, c'est-à-dire l'ensemble des fichiers qui seront mis à disposition de l'utilisateur final, parmi lesquels il y a les programmes, ainsi que le mode d'emploi et les fichiers de configuration. Le livrable peut être une application informatique complète, un composant, ou un patch.

Recette

Durant la recette, divers contrôles sont effectués avant que le logiciel soit mis sur le marché. Un examen approfondi, composé d'une suite de tests, est effectué en vue de vérifier l'alignement du produit avec le cahier des charges. Une version beta (pré-série) du logiciel est mise à disposition d'un nombre limité d'usagers en vue de leur permettre d'évaluer l'adéquation du logiciel avec leurs attentes.

Le génie logiciel

Le génie logiciel est la science des bonnes pratiques de développement de logiciel. Cette science étudie en particulier la répartition des phases dans le temps, les bonnes pratiques concernant les documents clés que sont le cahier des charges, le diagramme d'architecture ou le diagramme de classes. Le but recherché est d'obtenir des logiciels de grande ampleur qui soient fiables, de qualité, et correspondent aux attentes de l'usager.

Les outils

Un compilateur permet de traduire le code source rédigé dans un certain langage de programmation, et d'obtenir le code binaire du logiciel. Un éditeur de liens et un pré-processeur est parfois nécessaire. Ces trois outils sont parfois réunis en un moteur de production qui automatise la préparation du code binaire (opération appelée make ou build).
Le code source est rédigé à l'aide d'un éditeur de texte. Celui-ci est souvent muni de coloration syntaxique, une fonctionnalité qui met en couleur les éléments du lexique du langage de programmation.
Le débogueur (anglais debugger) permet de contrôler le déroulement de l'exécution du logiciel, et déceler des bugs.
Un environnement de développement intégré est une suite d'outils de développement, qui comporte généralement un compilateur, un moteur de production, un éditeur et un débogueur. Les trois logiciels sont orientés autour d'un même langage de programmation et prévus pour être utilisés ensemble. Il peut souvent être couplé avec un système de gestion de versions.
Un système de gestion de versions est un outil qui permet d'enregistrer des fichiers en conservant l'historique de toutes les modifications effectuées. Il permet de retrouver le code source dans l'état où il était à une date donnée.
Un logiciel de suivi de problèmes permet de recenser les problèmes techniques rencontrés avec un logiciel, l'évolution des corrections de bugs, et les possibilités de contournement (anglais workaround).
Le cahier des charges peut être rédigé avec un traitement de texte standard. Les diagrammes de conception peuvent être rédigés avec un outil de dessin assisté par ordinateur. Les outils de dessins orientés sur les diagrammes de logiciel utilisent souvent la notation UML (Unified Modeling Language).
Un atelier de génie logiciel est une suite d'outils qui permettent la construction, ainsi que la conception et la planification des travaux. Il comporte tous les outils présents dans un environnement de développement intégré, ainsi que des outils de conception, de planification, de test, et des outils qui créent automatiquement du code source et de la documentation.
Une forge est un portail Web sur une suite d'outils de développement collaboratif. Il comporte tous les outils présents dans un environnement de développement intégré, y compris un système de gestion de versions et un logiciel de suivi de problèmes, ainsi que des outils de liste de discussions et de rédaction collaborative de documents  
(tvspothd):)
attendez nous pour les cours d'OFPPT de Développement Informatique
   

Réseau Informatique


Réseau informatique



Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des informations. Par analogie avec un filet (un réseau est un « petit rets », c'est-à-dire un petit filet), on appelle nœud (node) l'extrémité d'une connexion, qui peut être une intersection de plusieurs connexions (un ordinateur, un routeur, un concentrateur, un commutateur).
Indépendamment de la technologie sous-jacente, on porte généralement une vue matricielle sur ce qu'est un réseau. De façon horizontale, un réseau est une strate de trois couches : les infrastructures, les fonctions de contrôle et de commande, les services rendus à l'utilisateur. De façon verticale, on utilise souvent un découpage géographique : réseau local, réseau d'accès et réseau d'interconnexion.

Historique

Dans les années 1960, les premiers réseaux informatiques étaient de portée limité (quelques dizaine de mètres avec par exemple l'HP-IB, l'HP-IL, etc) et servaient a la communication entre micro-ordinateurs et des instruments de mesure ou des périphériques (imprimantes, table traçante, etc).
Les réseaux informatiques filaires locaux existent depuis le milieu des années 1970 lorsque les universités américaines commencèrent à avoir besoin d'interconnexion rapide entre les ordinateurs présents sur un même site[réf. souhaitée].
Les réseaux informatiques filaires étendus sont devenus nécessaires et populaires depuis les années 1970 lorsque les fabricants de matériel informatique IBM et Digital equipment créèrent les architectures SNA et DECnet, ceci en conjonction avec la digitalisation du réseau de téléphone d'AT&T ( voir Réseau téléphonique commuté)
qui permit la mise en place de Connexions dédiées à moyen débits entre sites distants (en oppositions aux connexions bas-débits par modem).
Voici une liste non-exhaustive des protocoles réseaux qui existent à ce jour (par type de réseau):
Réseau local
  • Anneau à jeton (en Anglais Token Ring)
  • ATM
  • FDDI
  • Ethernet
Réseau étendu
  • ATM
  • Ethernet
  • MPLS
  • Relais de trames
  • SONET/SDH

Infrastructures

Les infrastructures ou supports peuvent être sur des câbles dans lesquels circulent des signaux électriques, l'atmosphère (ou le vide spatial) où circulent des ondes radio, ou des fibres optiques qui propagent des ondes lumineuses. Elles permettent de relier « physiquement » des équipements assurant l'interconnexion des moyens physiques qui sont définis par des protocoles. Les équipements d'un réseau sont connectés directement ou non entre eux, conformément à quelques organisations types connues sous le nom de topologie de réseau. Les principaux types de réseaux filaires pour les réseaux informatiques d'entreprises ou de particuliers utilisent les protocoles suivant qui proviennent du standard Ethernet :
  • 10BASE5 : câble coaxial épais bande de base (obsolète) ;
  • 10BASE2 : câble coaxial fin bande de base (obsolète) ;
  • 10BASE-T : paires torsadées (10 Mb/s) ;
  • 100BASE-T : paires torsadées (100 Mb/s) les plus généralisées aujourd'hui en réseau local (LAN) ;
  • 1000BASE-T : paires torsadées (1 Gb/s), présent dans les nouveaux ordinateurs.
  • 10GBASE-T : paires torsadées (10 Gb/s).
Plusieurs normes définissent les modalités de fonctionnement des réseaux hertziens, comme par exemple la norme Wi-Fi (IEEE 802.11).
Les courants porteurs en ligne (CPL) permettent quant à eux de transporter des flux d'information sur un réseau électrique local.

Protocoles et services

Les protocoles de communication définissent de façon formelle et interopérable la manière dont les informations sont échangées entre les équipements du réseau. Des logiciels dédiés à la gestion de ces protocoles sont installés sur les équipements d'interconnexion que sont par exemple les commutateurs réseau, les routeurs, les commutateurs téléphoniques, les antennes GSM, etc. Les fonctions de contrôle ainsi mises en place permettent une communication entre les équipements connectés. Le protocole probablement le plus répandu est IP qui permet l'acheminement des paquets jusqu'à sa destination. Deux protocoles de niveau supérieur UDP et TCP permettent le transport de données. La première permet l'envoi de données d'une manière non fiable (aucune garantie de la réception du paquet par le destinataire). L'autre permet au contraire une transmission fiable des données (garantie de la réception du paquet par le destinataire par accusés de réception). Les services réseau se basent sur les protocoles pour fournir, par exemple :
  • des transferts de textes (SMS...) ;
  • ou de données (Internet...) ;
  • des communications vocales (téléphone...) ; VoIP
  • ou des diffusions d'images (télé...). TNT hd principalement.

Sous réseau

Un réseau (ne pas confondre ce terme avec celui qui sert à désigner la couche n°3 dans le modèle OSI de l'ISO ou la couche Réseau dans la pile de protocoles Internet) ou sous réseau peut être composé de plusieurs réseaux ou sous réseaux à base d'équipements matériels. Dans le protocole IP les membres d'un même sous réseau ou réseau possèdent le même identifiant, calculable à partir de l'adresse IP et du masque de sous réseau. L'utilisation d'une architecture comprenant des sous-réseaux permet une gestion du parc informatique plus aisée (un sous-réseau par service ou par salle, par exemple) ou un broadcast sélectif.

Découpage géographique

Les réseaux informatiques sont classés suivant leur portée :
  • le réseau personnel (PAN) relie des appareils électroniques personnels ;
  • le réseau local (LAN) relie les ordinateurs ou postes téléphoniques situés dans la même pièce ou dans le même bâtiment ;
le réseau local (WLAN) est un réseau LAN utilisant le technologie WIFI ;
  • le réseau métropolitain (MAN) est un réseau à l'échelle d'une ville ;
  • le réseau étendu (WAN) est un réseau à grande échelle qui relie plusieurs sites ou des ordinateurs du monde entier
Également (à titre indicatif):
  • le réseau régional (RAN) qui a "pour objectif de couvrir une large surface géographique. Dans le cas des réseaux sans fil, les RAN peuvent avoir une cinquantaine de kilomètres de rayon, ce qui permet, à partir d'une seule antenne, de connecter un très grand nombre d'utilisateurs. Cette solution devrait profiter du dividende numérique, c'est-à-dire des bandes de fréquences de la télévision analogique, qui seront libérés, après le passage au tout numérique, fin 2011 en France".

Découpage fonctionnel

Un réseau peut être classé en fonction de son utilisation et des services qu'il offre. Ce découpage recoupe également la notion d'échelle. Ainsi, pour les réseaux utilisant les technologies Internet (famille des protocoles TCP/IP), la nomenclature est la suivante :
  • Intranet : le réseau interne d'une entité organisationnelle
  • Extranet : le réseau externe d'une entité organisationnelle
  • Internet : le réseau des réseaux interconnectés à l'échelle de la planète

Catégories de réseau informatique

Il existe plusieurs façons de catégoriser un réseau informatique.
Les réseaux informatiques peuvent être catégorisés en termes d'étendue :
  • Personal Area Network (PAN) : Réseau personnel
  • Wireless PAN : Réseau personnel sans fil
  • Controller Area Network (CAN) : Réseau personnel pour les systèmes électroniques(bus)-Notamment utilisé dans le secteur automobile
  • Local Area Network (LAN) : Réseau local
  • Wireless LAN (WLAN) : Réseau local sans fil
  • Metropolitan Area Network (MAN) : Réseau métropolitain
  • Wide Area Network (WAN) : Réseau étendu
  • Storage Area Network (SAN) : Réseau de stockage
  • Réseau Bureautique
Les réseaux informatiques peuvent aussi être catégorisés par relation fonctionnelle entre les composants :
  • Client-serveur
  • Architecture multi-tiers
  • Architecture trois tiers
  • Peer-to-peer (P2P ou Poste à poste)
Ils peuvent également être catégorisés par topologie de réseau :
  • Réseau en étoile
  • Réseau en bus
  • Réseau en anneau
  • Réseau en grille
  • Réseau toroïdal ou en hypercube
  • Réseau en arbre
  • Réseau hybride
Les réseaux informatiques peuvent être implémentés en utilisant plusieurs piles de protocoles, ou avec des combinaisons de médias et de couches de protocoles. Une liste des protocoles existants est disponible à Protocole de communication et IEEE 802.
Sujets connexes:
  • Bitnet
  • CPL (Courants Porteurs en Ligne)
  • Routage
  • Théorie de la communication
  • Transmission des données
  • Réseau Téléphonique commuté(RTC) : Le réseau de téléphonie public commuté ou Public Switched Telephone Network(PSTN)
  •  Les Modem
  • transmission sans fil
  • Courte distance
                 Bluetooth
  • Moyenne distance
                Wi-Fi, 802.11
                MANET
  • Longue distance
  • MMDS
  • SMDS
  • Transmission de données sur téléphone cellulaire
                CDMA
                CDPD
                GSM
                GPRS
                TDMA
  • Réseaux de téléavertissement
                DataTAC
                Mobitex
                Motient
  • Transmission câblée
               Ligne dédiée (leased line)
               Time-division multiplexing (TDM)
               Commutation de paquets
               Relais de trames
               ATM
               MPLS
               PDH
               Ethernet
               PBT/PBB-TE (IEEE 802.1Qay, ITU-T g.pbt)
               RS-232
  • Transmission sur fibre optique
              SONET / SDH
              OTN

Les Systèmes d'exploitations

Les Systèmes d'exploitations




Systèmes d'exploitation

Les premiers systèmes d'exploitation pour serveurs ont été Banyan Vines et Novell NetWare, ils ont été développés spécialement dans le but de fournir des services de partage de fichiers et d'imprimante, ainsi que les fonctions de contrôle d'accès, qui n'existaient pas dans les produits concurrents. Depuis l'an 2000 il y a très peu de différence entre un système d'exploitation pour serveur et un pour les clients40.
Dans les systèmes d'exploitation de la famille Unix les seules différences entre les modèles pour serveur et ceux destinés aux clients sont que les modèles pour serveurs sont adaptés à la puissance de calcul de ces ordinateurs, et que les contrôles d'accès y sont plus sévères26. Dans la famille Windows les modèles pour serveurs sont équipés du même noyau et du même environnement de bureau que les modèles pour les ordinateurs personnels; les modèles pour serveurs comportent en plus des fonctions et des utilitaires en rapport avec les réseaux informatique et les serveurs40.
Tandis qu'un système d'exploitation pour ordinateur personnel est prévu pour offrir la meilleure performance au logiciel qui est actuellement manipulé par l'utilisateur, un système d'exploitation pour serveur est prévu pour répartir la puissance de calcul entre les différents utilisateurs qui exploitent le serveur26. Les fonctionalités caractéristiques des systèmes d'exploitation pour les serveurs sont la prise en charge de la connexion au réseau (pile de protocoles), différents services tels que le partage de fichiers, d'imprimantes et le service DNS. Ces systèmes d'exploitation offrent également des fonctions fréquemment utilisées avec les serveurs tels que le contrôle d'identité, le contrôle d'accès, la fonction de proxy, de firewall, le protocoles DHCP ainsi que et les mécanismes de sauvegarde et de tolérance de faute26,41.
Les systèmes d'exploitation populaires sur les serveurs sont la série Windows NT de Microsoft (Windows NT, Windows 2000, Windows 2003 et Windows 2008), Novell NetWare et la famille Unix, parmi lesquels il y a Linux, Mac OS X de Apple et les systèmes BSD26,41.
Pour assurer la confidentialité, chaque processus est attaché à un compte utilisateur (typiquement le compte de l'utilisateur qui a lancé la demande), et chaque opération est soumise à un mécanisme de contrôle d'accès qui l'autorisera ou la refusera en fonction d'informations de permissions, de listes de contrôle d'accès ou de privilèges42.
D'une importance mineure pour les professionnels, l'interface homme-machine d'un système d'exploitation pour serveur est peu développée43, et les capacités multimédia sont réduites : les machines n'ont souvent pas de carte sonore, pas de clavier et pas d'écran.

Protection des informations

La sécurité des informations est la première des préoccupation des professionels de l'informatique. Les serveurs pour le world wide web, le partage de fichiers et les base de données stockent de grandes quantités d'informations. Ils sont équipés de moyens de protection visant à assurer la confidentialité, la disponibilité et l´authenticité des informations: Que les informations sont accessibles uniquement aux personnes concernées, qu'elles soient accessibles à tout moment, et dépourvues de falsifications44.
Les possibilités d'accès aux informations contenues dans le serveur sont typiquement réduites au strict minimum nécessaire à chaque usager, en vue de donner le moins possible d'opportunités de compromettre la confidentialité et l'authenticité des informations. Les mesures de protections sont limitées par le confort d'utilisation du serveur: si les mesures sont trop lourdes et encombrantes, ceci diminue l'utilisabilité du serveur et les usagers ont tendance à les contourner45.
Les mesures de sécurités prises dépendent du niveau de confidentialité requis, des services offerts par le serveur, de sa localisation (réseau Internet ou entreprise), et des risque encourus. La protection est souvent assurée par un dispositif médiateur, qui arbitre l'accès aux informations. Le firewall et le proxy sont des dispositifs médiateurs courants. Les ordinateurs serveurs peuvent fournir un service unique, dans le but de diminuer les possibilités d'attaque et leur impact sur le système informatique45.
Les administrateurs systèmes, ou les administrateurs réseau sont les personnes responsables de la préparation, l'installation et la maintenance des serveurs, et une de leurs activités quotidienne est la lutte contre les attaques et le maintien d'un niveau de sécurité élevé des serveurs. Ils travaillent notamment à l'application régulière de patches visant à corriger les failles de sécurité des logiciels présents sur les serveurs. Ils surveillent l'état de santé et l'activité du serveur, à la recherche d'éventuelles anomalies, et effectuent sur demande des tests des mécanismes de défense45.

Utilisations

Les serveurs sont couramment utilisés pour le partage de fichiers, le partage d'imprimantes, le courrier électronique, le world wide web, les bases de données, les applications, les jeux ou les proxys.
Un serveur mandataire (anglais proxy) reçoit des demandes, les contrôle, puis les transmet à d’autres serveurs46.
L’auto-hébergement consiste pour un particulier à utiliser son ordinateur personnel comme serveur, et de le mettre à disposition par l'intermédiaire de sa connexion Internet personnelle. L'usager évite ainsi les frais dus à un contrat avec un hébergeur web. Il peut ainsi avoir son propre serveur web (LAMP, WAMP, ...) et, en utilisant un DNS dynamique (en), avoir son propre nom de domaine. Certains FAI font payer les adresses IP fixes, mais elles ne sont pas indispensables.
Le démarrage et l'exécution du logiciel qui traite les demandes se fait sans intervention humaine, il peut avoir lieu lors du démarrage de l'ordinateur (anglais boot), ou sur demande. Rien n'est affiché à l'écran et le logiciel est invisible (voir aussi Daemon).

Partage de fichiers

Le partage de fichiers consiste à enregistrer des fichiers dans un emplacement central - tel les disque durs d'un serveur - et permettre l'utilisation commune de ces fichiers par plusieurs personnes à partir de plusieurs clients. Network File System (abr. NFS) est un service de partage de fichier lancé par Sun Microsystems, et Server Message Block (abr. SMB) est un service lancé par Microsoft, ces deux services permettent de manipuler des fichiers présents sur des serveurs exactement comme s'ils se trouvaient sur l'ordinateur client. File Transfer Protocol (abr. FTP) est un service Internet qui permet de parcourir les fichiers enregistrés sur un serveur, de les télécharger ou d'envoyer des fichiers au serveur47. Le partage de fichiers était le service le plus courant en 1990, avec 70 % des serveurs 8. Les serveurs de fichiers sont souvent inclus dans les systèmes d'exploitation.
Le partage de fichiers en pair à pair est une application de partage de fichier décentralisé, ou chaque client peut utiliser des fichiers qui sont enregistrés sur d'autres clients, et aussi mettre ses propres fichiers à disposition des autres clients. Napster et BitTorrent sont des services de partage pair-à-pair48.
Un NAS est un équipement matériel / logiciel clé en main prévu exclusivement pour du partage de fichiers. Les NAS reconnaissent plusieurs protocoles.

Partage d'imprimantes

Dans les enterprises, il y a souvent plusieurs ordinateurs, qui utilisent en même temps une imprimante branchée à un des ordinateurs du réseau. Le partage d'imprimantes permet d'économiser l'achat d'un matériel onéreux, et qui est souvent inutilisé pendant de longues périodes49. Certaines imprimantes sont équipées d'un serveur incorporé et se branchent directement au réseau50. Le service de partage de fichier Server Message Block (abr. SMB) permet également le partage des imprimantes. Common Unix Printing System (abr. CUPS) est un service de partage d'imprimantes. D'autres services utilisent le protocole Internet Printing Protocol (abr. IPP) ou Line Printer Daemon protocol (abr. LPD)51.
Un serveur d'impression répond à des demandes en rapport à des travaux d'impression numérique. Les documents sont placés dans des files d'attente, puis envoyés aux imprimantes (voir spooling)52.
Les demandes concernent la manipulation des files d'attente (une pour chaque imprimante) : lecture du contenu, ajout ou suppression de documents, mise en attente, priorités. Le serveur envoie automatiquement les documents un après l'autre à l'imprimante. Les documents peuvent subir des transformations de format en vue de les adapter aux caractéristiques de l'imprimante destinataire. PCL et PostScript sont des formats de données courant en impression numérique52.
JetDirect est une gamme de serveurs d'impression sous forme d'une carte d'extension à poser dans les imprimantes Hewlett Packard53.

Courrier électronique

Le courrier électronique est un service d'envoi de courriers rapides dérivé du télégramme et du télex, mis en place par les services de poste en 197554. Les réseaux Usenet, Fidonet, Bitnet puis Internet sont utilisés pour transporter du courrier électronique. Dans ces réseaux, chaque serveur appelle à intervalle régulier un autre serveur, souvent à l'aide d'un modem, pour qu'ils s'échangent du courrier55. Simple Mail Transfer Protocol (abr. SMTP) est un protocole utilisé par les serveurs de poste pour s'échanger du courrier électronique, et Post Office Protocol (abr. POP) est un protocole utilisé par les clients pour récupérer les messages en attente dans les serveurs de courrier56. X.400 est un standard déposé par ISO en 1984, concernant le format de données du courrier électronique57.
Un serveur de courrier répond à des demandes d'acheminement de messages électroniques. Le serveur stocke les messages arrivés, et transmet les messages en partance au destinataire (un autre serveur de courrier). Un serveur de courrier répond également aux demandes de manipulation et de récupération des messages stockés.
Les messages en partance sont souvent placés dans des files d'attente, et envoyés groupés à intervalles réguliers (voir spooling).
Un webmail est une application placée sur un serveur web, qui agit comme un client sur un serveur de courrier.

Services d'information - le world-wide web

Le world wide web (abr. WWW ou Web) est un service créé en 1990 dans le but de faciliter l'accès à l'information. Il offre à l'informateur le moyen de mettre à disposition ses informations, et offre aux usagers les moyens de retrouver facilement des informations connexes diséminées à travers le monde (anglais world-wide)58. Le service utilise le protocole HTTP, et un logiciel client, le navigateur web, offre une manière uniforme d'accéder aux informations mis à disposition par différents serveurs selon les protocoles HTTP ainsi que Gopher, WAIS, FTP ou NNTP59. Les informations souvent mises à disposition par les serveurs web concernent l'économie, la finance, la formation, la santé, la culture, la musique, l'informatique, l'actualité, le sport, le divertissement, la vente, les voyages, la politique et la pornographie60.
En 1998 le world wide web est le service dominant de l'Internet, à l'origine de 75 % de l'activité du réseau, au côté du transfert de fichiers FTP et du courrier électronique61. Dix ans plus tard il est suivi de près par le partage de fichiers en pair à pair62,63. Initialement utilisé passivement pour rechercher et consulter de la documentation, le world wide web a évolué en 2005 vers Web 2.0, ou il est devenu un moyen technique de réaliser des services où le lecteur devient acteur et peut non seulement lire le contenu, mais également le modifier ou en ajouter - Facebook, YouTube ou Wikipédia sont des exemples de services Web 2.064.
Un serveur web répond à des demandes de consultation de documents tels que ceux du World wide web. Chaque consultation d'un nouveau document hypertexte par parcours d'un hyperlien dans le logiciel client (la plupart du temps un navigateur web) provoque l'envoi d'une nouvelle demande. Chaque demande peut être envoyée à un serveur différent.
En réponse à une demande, le serveur peut envoyer un document qui est stocké en tant que fichier dans les mémoires de masse du serveur ou exécuter un traitement puis envoyer le résultat sous forme d'un document. HTTP et HTTPS sont les protocoles des serveurs web et HTML est le format de fichier prévu à cet effet.
En 1997 il existe plus de 100 logiciels qui mettent en œuvre un serveur web. Ceux-ci fonctionnent sur des ordinateurs tels que compatible PC, Macintosh, HP 9000, IBM RISC/6000, Sun SPARC, Silicon Graphics ou VAX65.
Apache est un serveur web pour les systèmes d'exploitation Unix et Windows. Internet Information Services (abrégé IIS) est un serveur web inclus dans les systèmes d'exploitation Windows.
Une application web est un logiciel applicatif composé d'un ensemble de traitements qui créent des documents instantanés suite à la réception de demandes de consultation. Le webmail, le wiki et le weblog sont des applications web.

Commerce électronique

Depuis 1995, le world wide web est utilisé pour faire du commerce électronique (e-commerce). des sociétés comme Amazon.com mettent leurs produits en vente sur un serveur, le consommateur y recherche ce qui l'intéresse, puis commande, envoie le numéro de sa carte de crédit, et reçoit la marchandise quelques jours plus tard. Cette utilisation business to consumer vient compléter l'échange de données informatisé déjà effectué depuis plusieurs années entre les sociétés commerciales (détaillants, producteurs, revendeurs,...). Le commerce électronique permet de diminuer les coûts de la vente, mais pose un problème de sécurité: la nécessité pour le consommateur d'envoyer des informations confidentielles sur un réseau public66. En 2000 80 % des ventes effectuées en commerce électronique concernent des produits informatiques, du divertissement, des voyages et des produits discount67.

Base de données

Le stockage d'information dans des bases de données est un service d'arrière-plan (backend) offert par différents serveurs. Un logiciel d'avant-plan (front-end) émet une demande formulée dans le langage normalisé Structured Query Language (abr. SQL), puis la transmet au serveur d'arrière-plan68. Le logiciel d'avant-plan peut servir de client, d'interface graphique, ou offrir un autre service69. En architecture trois tiers un service (e-commerce, médias, forums, ...) est fourni par un serveur d'avant-plan qui lui-même exploite les services d'un serveur de base de données en arrière plan70.
Il n'existe pas de technologie normalisée pour exploiter les services d'un serveur de base de données, et chaque firme fournit un kit pour connecter un logiciel d'avant-plan avec les serveurs de base de données produit par la firme71, un kit qui s'utilise avec des middleware comme ODBC ou JDBC.
Un serveur de base de données répond à des demandes de manipulation de données stockées dans une ou plusieurs base de données. Il s'agit typiquement de demandes de recherche, de tri, d'ajout, de modification ou de suppression de données72.
Le serveur de base de données fait partie d'un système de gestion de base de données (abréviation SGBD) — logiciel qui manipule une base de données — qui comporte un logiciel client et un logiciel serveur. Les demandes de manipulation de données sont souvent créées par un logiciel de gestion sous forme de requêtes en langage SQL, puis le client les transmet au serveur en utilisant un protocole propre au SGBD72,73.
Oracle, Microsoft SQL Server ou MySQL sont des SGBD qui comportent un serveur de base de données74.

Applications web

Les serveurs d'application sont des outils de développement (frameworks) spécialement concus pour faciliter la programmation d'applications web - des logiciels applicatifs en construction 3-tiers, dont l'interface graphique se manipule à l'aide d'un navigateur web à partir d'un client70.
Les serveurs d'applications comportent généralement un kit permettant de connecter le logiciel avec un serveur de base de données, et un outil pour créer des interfaces graphiques sous forme de documents au format HTML75 - le format des documents du world wide web, qui permet facilement de générer l'interface graphique d'un logiciel76.
Le but de la construction en trois tiers est de retirer du logiciel client des traitements complexes et spécifiques à un domaine d'activité, pour les faire exécuter par un serveur dédié, ou ils seront plus facile d'accès et pourront plus facilement être maintenus et améliorés70. L'utilisation du navigateur web comme logiciel client évite à l'utilisateur de devoir acquérir et installer un logiciel client spécifique, et permet la disponibilité immédiate de l'application à une large audience76.
Les technologies Server Side Includes et Common Gateway Interface (abr. CGI), apparues en 199577 se révèlent insuffisantes pour réaliser des logiciels en architecture trois tiers, dans lesquels la puissance de calcul d'un serveur d'avant-plan (tiers du milieu) est utilisée pour réaliser des traitements complexes, et c'est ce créneau qui est rempli par les serveurs d'application70. En 1998 il existe plus de 40 produits de ce type78.

Logiciel en tant que service

La nouvelle tendance apparue au début des années 2000 est de ne plus considérer un logiciel applicatif comme un produit destiné à la vente, mais comme un service à disposition des utilisateurs. C'est l'optique software as a service (abr. SaaS). Au lieu de payer cher l'acquisition et l'installation d'un produit complexe, le consommateur loue un service mis à disposition par un fournisseur de services applicatif; les couts d'installation et de maintenance sont pris en charge par le fournisseur. Les logiciels en tant que services sont mis à disposition des entreprises ainsi que des particuliers. Hotmail est un exemple de tels services79.


vendredi 10 août 2012

Le Serveur informatique


Serveur informatique



Un serveur informatique est un dispositif informatique matériel ou logiciel qui offre des services, à différents clients. Les services les plus courants sont :
le partage de fichiers ;
l'accès aux informations du World Wide Web ;
le courrier électronique ;
le partage d'imprimantes ;
le commerce électronique ;
le stockage en base de données ;
le jeu et la mise à disposition de logiciels applicatifs (optique software as a service).
Un serveur fonctionne en permanence, répondant automatiquement à des requêtes provenant d'autres dispositifs informatiques (les clients), selon le principe dit client-serveur. Le format des requêtes et des résultats est normalisé, se conforme à des protocoles réseaux et chaque service peut être exploité par tout client qui met en œuvre le protocole propre à ce service.
Les serveurs sont utilisés par les entreprises, les institutions et les opérateurs de télécommunication. Ils sont courants dans les centres de traitement de données et le réseau Internet.
D'après le cabinet Netcraft, il y a en mars 2009 plus de 220 millions de serveurs web dans le monde, et leur nombre est en augmentation constante depuis l'invention du World Wide Web en 1995

Histoire

au milieu des années 1970, les systèmes informatiques dans lesquels plusieurs ordinateurs co-opèrent, sont devenus réalisables suite à la baisse de prix et l'augmentation de la puissance des ordinateurs. Les prix abordables des petits mini-ordinateurs ou des micro-ordinateurs permettaient alors à une institution d'en acquérir plusieurs. La recherche s'oriente alors vers deux axes différents, qui sont l'utilisation en commun de ressources telles que les imprimantes et les disque durs, et l'utilisation de la puissance de calcul des différentes machines par répartition des tâches
En 1975 les services de poste des États-Unis, du Canada, de l'Allemagne de l'Ouest et du Royaume Uni mettent en place des serveurs en vue d'utiliser des moyens électroniques pour envoyer du courrier. Des moyens qui - contrairement au fax, au télégramme ou au télex - n'utilisent pas de papier
Entre 1980 et 1995, l'avénement simultané des réseaux locaux, des services en ligne, de l'Internet, et de l'architecture client-serveur sont des facteurs qui ont influencé le marché, la technologie et les usages des serveurs.

Les réseaux locaux

Avant la mise en place de serveurs, l'utilisation d'ordinateurs à usage personnel et isolés était peu pratique. La nécessité pour une entreprise d'acquérir une imprimante pour chaque ordinateur, la difficulté des échanges d'informations numériques entre les différents ordinateurs. Chaque usager devait copier les informations sur une disquette puis la transmettre en main propre au destinataire.
En 1980 apparaissent les premiers réseaux locaux équipés d'ordinateurs personnels et de serveurs. Xerox met sur le marché un ensemble composé de 4 serveurs qui permet aux ordinateurs connectés au réseau local d'imprimer des documents et enregistrer des fichiers. Il permet également d'échanger des fichiers et du courrier électronique avec une installation similaire ailleurs dans le monde. À la même période Nestar met sur le marché une suite de logiciels pour offrir les mêmes services sur un réseau composé uniquement d'ordinateurs personnels Apple II tous identiques. Un des ordinateurs est arbitrairement choisi pour servir de serveur de fichier ou d'impression.
En 1984 Sun Microsystems met sur le marché le Network file system (abr. NFS), un service qui permet l'accès aux fichiers de différents ordinateurs d'un réseau local (abr. LAN). La documentation du protocole réseau est immédiatement rendue publique, en vue de permettre aux autres constructeurs de créer les logiciels nécessaires pour offrir ou exploiter ce service avec leurs propres ordinateurs. Quatre ans plus tard il existe plus de 100 produits serveur et client du service NFS.
Les serveurs de fichiers ont facilité les échanges de fichiers entre utilisateurs.Utilisés dans les institutions, ils ont permis à plusieurs utilisateurs d'exécuter un même logiciel. Une seule copie du logiciel est stockée sur le serveur de fichier.
En 1989 70 % des serveurs sont utilisés pour du partage de fichiers, 34 % comme serveur de bases de données et 10 % pour du courrier électronique. Apparu deux ans avant, le service de bases de données se place comme concurrent du partage de fichiers, offrant un service de stockage d'informations plus efficace, plus sûr, et plus rapide.

Les services en ligne et Internet

En 1978 le bureau de recherche du département de la défense des États-Unis, le DARPA étudie la possibilité d´internetworking - relier entre eux plusieurs réseaux locaux dans un réseau de réseaux. Le DARPA relie ensemble 4 serveurs dans 4 universités des États-Unis. Cinq ans plus tard le réseau relie de nombreuses universités des États-Unis, la majorité des serveurs connectés utilisent le système d'exploitation Unix, le réseau est alors principalement exploité par des étudiants qui l'ont appelé Internet. Le département de la défense abandonne alors ce projet devenu public.
En 1979, The Source Telecomputing Corporation met à disposition une suite de services informatiques destinés aux petits groupes d'utilisateurs. Les services mis à disposition sont des banques de données, du courrier électronique, des nouvelles, les horaires des vols, du commerce électronique, des prévisions météo ainsi que d'autres services. Par la suite, d'autres société ont fait de même, par exemple Telenet, Compuserve, Dow Jones ou Lockheed.
En 1980, les serveurs de bulletin board system permettent à l'aide d'un micro-ordinateur, un modem et un émulateur de terminal d'accéder à des services. Ils permettent également aux différents usagers de s'envoyer des messages, poster des annonces, dialoguer entre eux et s'échanger des fichiers.
Depuis 1989, les technologies apportées à l'Internet passent pas un procédé démocratique d'acceptation mutuelle organisé par l'Internet Engineering Task Force (abr. IETF) - un consortium d'industriels. Pour qu'un service soit reconnu officiellement comme service Internet, son protocole doit avoir été publié sous la forme d'un RFC et être accepté par les membres de l´IETF. Ce procédé de standardisation aide à obtenir une large audience des technologies des serveurs et clients Internet.
En 1994 plus de 5000 réseaux, et autant de serveurs, sont reliés à l'Internet, les fournisseurs d'accès Internet mettent à disposition des services tels que Gopher, World wide web, le courrier électronique ou le transfert de fichiers FTP pour plus de 7 millions d'usagers.

Le client-serveur et le downsizing

En 1987 le principe du client-serveur, dans lequel une application informatique est scindée en 2 processus qui peuvent être exécutés par deux ordinateurs différents, intéresse les fournisseurs de logiciels pour les bases de données. Ashton-Tate, Microsoft et Sybase travaillent ensemble au développement d'un système de gestion de base de données selon le principe du client-serveur, en même temps que IBM et Oracle Corporation mettent sur le marché de tels produits.
Depuis 1990, les systèmes informatiques, en client-serveur, ont connu une croissance explosive ; le client-serveur était une nouveauté à la mode et le mot était considéré comme un buzzword. Contrairement aux systèmes informatiques précédents qui étaient alors équipés d'un mainframe manipulé depuis des terminaux, un système informatique en client-serveur demandait un matériel moins spécifique et moins coûteux. De plus les systèmes client-serveurs utilisaient des produits ouverts, basés sur des standards industriels évitant à l'acheteur de devoir acquérir la totalité de son système informatique auprès du même fabricant. Ces avantages sont à l'origine du downsizing: le replacement progressif des mainframes coûteux et volumineux par des serveurs plus petits, meilleur marché et qui travaillent de concert avec des micro-ordinateurs20.
Les logiciels sont typiquement organisés en trois couches: une qui contient les traitements relatifs à l'affichage, une pour ce qui est relatif aux calculs, et la dernière qui est relative au stockage des informations. En client-serveur les traitements des différentes couches ont été répartis entre deux ordinateurs différents - un client et un serveur.
L'architecture trois tiers est une évolution de l'architecture client-serveur où les traitements des trois couches sont répartis entre un client et deux serveurs.

Technique

Une application distribuée est une application informatique dans laquelle les résultats sont obtenus par la coopération de plusieurs ordinateurs d'un réseau informatique. Un protocole de communication établit les règles selon lesquelles les ordinateurs communiquent et coopèrent.
L'architecture client/serveur est un modèle d'organisation d'une application distribuée dans laquelle les traitements sont effectués par l'exécution conjointe de deux logiciels différents et complémentaires placés sur des ordinateurs différents : le client et le serveur. Le client formule des requêtes, puis les transmet au serveur. Le serveur traite les demandes, puis envoie sa réponse au client. Le client affiche la réponse (par exemple, il présente le résultat à l'écran). Un protocole de communication établit le format des requêtes envoyées au serveur, et des réponses de celui-ci.
Dans l'architecture client-serveur les clients vont rechercher les informations stockées dans les serveurs. Dans l'architecture pair-à-pair (anglais peer-to-peer abrégé P2P) par contre les clients vont rechercher des informations stockées dans d'autres clients, et les serveurs jouent le rôle d'intermédiaires.

Caractéristiques techniques

Dans les produits du marché des serveurs, l'accent est mis sur le débit (nombre de réponses données par unité de temps), la disponibilité et la scalabilité - capacité d'adaptation à une augmentation de la demande. Les serveurs s'occupent de plusieurs utilisateurs simultanément, et ont besoin d'une puissance de calcul supérieure à celle des ordinateurs personnels25. Les serveurs jouent un rôle clé dans de nombreux réseaux et sont souvent logés dans des locaux ventilés et sécurisés26.
Les serveurs fonctionnent continuellement, l'objectif visé étant la disponibilité continue du service, 24 heures sur 24. Les constructeurs de matériel affirment souvent que l'ordinateur peut assurer une disponibilité de 99,999 % (soit moins de 5 minutes d'interruption par année). La disponibilité effective est cependant moins élevée. Les pannes dues au logiciel sont plus fréquentes que celles dues au matériel, et leur nombre a tendance à augmenter avec l'évolution technologique: la quantité de logiciel augmente et sa qualité moyenne stagne. La qualité du matériel, la qualité du logiciel, autant que la qualité des procédures de manipulation du serveur ont un impact sur la disponibilité des services27.
Les composants du matériel dont les caractéristiques ont un effet sur le débit du serveur sont l'interface réseau, les disques durs, les bus, la mémoire, ainsi que la puissance de calcul du ou des processeurs. Le débit du serveur ne sera jamais plus élevé que celui du plus faible des composants28. Le débit est souvent limité par la connexion au réseau. Les serveurs peuvent être équipés de plusieurs processeurs, ce qui leur permet de servir plus de clients, accélère le traitement des requêtes, et augmente le débit25. Des journaux d'activité permettent de déceler des erreurs, dues à un débit trop bas ou des temps de réponse trop longs28.
La capacité d'adaptation (scalabilité) du matériel d'un serveur permettra d'augmenter le débit du serveur en ajoutant ultérieurement des pièces. En cas de manque de scalabilité, une demande accrue posera des problèmes techniques et il sera alors nécessaire de remplacer le serveur. Le coût de remplacement sera le coût d'acquisition du matériel, auquel s'ajoute le coût des travaux de bascule du serveur, et le manque à gagner du à l'indisponibilité du service27.

Matériel

Le mot serveur ne désigne pas une taille d'ordinateur, mais un rôle joué par un appareil sur un réseau informatique. Un serveur peut être une petite boîte, un micro-ordinateur, ou alors un mini-ordinateur, un mainframe voire une ferme de calcul. La taille de l'appareil et sa puissance sera choisie en fonction de la quantité de travail, qui dépend du nombre d'utilisateurs qui demandent des services au même instant29.
Divers constructeurs et assembleurs tels que Apple, HP, Sun, IBM ou Bull vendent des ordinateurs destinés au marché des serveurs.
La durée moyenne d'arrêt des serveurs varie entre 36 minutes et 10 heures par année.
Les serveurs peuvent être montés dans des baies, ce qui permet de les empiler. Ils peuvent être équipés de dispositifs de prévention des pannes et de pertes d'informations, tels que les dispositifs RAID : les informations sont copiées sur plusieurs disques durs, en vue d'éviter leur perte irrémédiable en cas de panne d'un des disques durs.
Le regroupement de plusieurs serveurs en une grappe (en anglais cluster) permet de répartir la charge, et assure que les clients soit servis même en cas d'arrêt d'un des serveurs.
Un Network Attached Storage est un appareil clé en main, conçu spécialement comme serveur de fichier. Il existe également des appareils clé en main pour les serveurs d'impression.
Les serveurs sont parfois reliés à des réseaux de stockage : un ensemble de serveurs est relié par un réseau en fibre optique à une batterie de disques durs. L'espace de stockage de la batterie de disques durs est découpé en partitions réparties entre les serveurs.
Un appareil serveur peut exécuter plusieurs logiciels serveurs en même temps et servir pour de nombreux usagers en même temps. Un serveur est rarement manipulé, et le clavier et l'écran (s'il y en a) servent principalement à des travaux de maintenance, de réparation et de contrôle.
Pour l'année 2005 la consommation électrique annuelle de l'ensemble des serveurs informatiques a été estimée à environ 45 TWh aux États-Unis et 123 TWh pour toute la planète.

Du plus petit au plus grand

La taille et la puissance de calcul d'un appareil serveur seront choisies en fonction de la charge de travail, qui dépend du nombre d'utilisateurs servis au même instant. Un micro-ordinateur peut être suffisant pour offrir des services de partage de fichiers et d'imprimantes sur un réseau qui comporte une dizaine de clients, alors qu'un mainframe peut être nécessaire pour mettre à disposition une volumineuse base de données à plusieurs milliers de clients. Par exemple le serveur central de Whirlpool Corporation est un mainframe qui s'occupe de 73'000 employés répartis dans 70 sites dans le monde entier.
En 2009 le coût d'acquisition d'un ordinateur pour serveur peut aller de 1000 dollars (micro-ordinateur) à 500'000 dollars (mainframe). La scalabilité verticale des ordinateurs du marché des serveurs permet d'y ajouter des composants en vue d'augmenter après coup leur capacité, ce qui leur permet de s'occuper de plus de clients, stocker plus d'information et traiter plus de demandes en moins de temps.
Outre les ordinateurs, les serveurs existent également sous forme d'appareils prêts à l'emploi et offrant un service unique. Ces appareils peu coûteux, dont les plus petits tiennent au creux de la main, mettent en œuvre des services tels que le partage d'imprimante ou de fichiers. Ils possèdent souvent un serveur web incorporé, permettant de manipuler l'appareil. Ils sont destinés aux particuliers et petites entreprises et sont vendus en grande distribution.
Les appareils serveur (anglais server appliance) sont des appareils dans un boitier, qui mettent en œuvre des services courants tels que partage de fichiers, courrier électronique, world wide web, ainsi que des fonctions réseau tel que le pare-feu et le réseau privé virtuel et peuvent servir jusqu'à 50 clients. Les serveurs lame quant à eux, sont des serveurs composés d'un circuit imprimé unique, qui s'installe dans un châssis. Le châssis comporte plusieurs emplacements, permettant d'y placer plusieurs serveurs lame. L'encombrement réduit de tel appareils permet à une entreprise d'en placer un grand nombre dans un petit espace et d'obtenir ainsi de puissants serveurs.
L’avènement de l'Internet a permis de mettre des services à disposition d'un très grand nombre d'usagers. En raison de la taille sans précédent du réseau Internet, les services les plus populaires ont dû pour la première fois être construits en vue de supporter plus d'un million d'utilisations simultanées. Ces besoins ont posé un véritable challenge en nécessitant une puissance de calcul et un débit de réseau sans précédent; les applications Internet sont ainsi devenues un des moteurs de la recherche et de l'industrie informatique. les serveurs de grande dimension sont souvent mis en œuvre par une ferme de serveurs (cluster). Dans ces dispositifs il y a un groupe d'ordinateurs et un appareil qui répartit les demandes en les distribuant à tour de rôle à chacun des ordinateurs du groupe. Le moteur de recherche de Google est une ferme composée de 6000 micro-ordinateurs x86, ce qui permet de traiter plus de mille demandes par seconde.


Serveur de jeu

Le serveur fait partie d'un logiciel de jeu en ligne multijoueur en architecture client-serveur. Il répond à des demandes de diffusion des opérations effectuées par chaque joueur. Le serveur valide les opérations de chaque joueur, arbitre le jeu puis transmet les évolutions du jeu aux autres joueurs.
Le serveur de jeu stocke l'état du jeu en mémoire et l'entretient. Une copie de tout ou partie de l'état du jeu est envoyée aux joueurs qui entrent dans la partie.
Lors de la réception d'une demande — opération effectuée par un joueur — le serveur effectue divers traitements en vue de contrôler la conformité de l'opération par rapport aux règles du jeu puis il effectue les modifications nécessaires sur l'état du jeu qu'il stocke en mémoire. Le serveur envoie ensuite aux différents clients la liste des évolutions effectuées sur l'état du jeu. Chaque client entretient sa propre copie de l'état du jeu.
Le protocole est différent pour chaque jeu en ligne et dépend de la vitesse d'évolution du jeu. Dans un jeu d'action comme Quake ou Half-Life le protocole est adapté à une évolution très rapide80,81. Dans un jeu sur navigateur web les protocoles sont ceux du web et le serveur est une application web.


Économie

Marché

Le marché des ordinateurs serveurs s'est établi à 53 milliards de dollars en 2008 (en baisse de 3,3 % sur l'année).


Fabricants

Les principaux fabricants d'ordinateurs serveurs sont (au 4e trimestre 2008, selon le cabinet d'études Gartner)82 :
IBM : 4,4 milliards de dollars de chiffre d'affaires serveurs au quatrième trimestre 2008 ;
Hewlett Packard83 : 3,9 milliards ;
Dell84 : 1,4 milliard ;
Sun Microsystems : 1,2 milliard ;
Fujitsu et Fujitsu Siemens : 0,6 milliard ;
Autres : 1,6 milliard.
En 2009, 35 % des serveurs sont équipés avec les systèmes d'exploitation Windows NT, 14 % sont installés avec Linux et 36 % sont installés avec un autre système d'exploitation de la famille Unix. Les parts de Windows NT sur le marché des serveurs sont soutenus par la domination des systèmes d'exploitation Windows sur le marché des ordinateurs clients (plus de 80 % des parts de ce marché)85.
Une solution adoptée par de plus en plus de particuliers pour acquérir un serveur consiste à recycler un vieux PC, en installant dessus une version serveur d'un système d'exploitation, la plupart libres comme debian ou ubuntu server.

Fonctions d'entrées/sorties les plus utilisées

Fonctions d'entrées/sorties les plus utilisées

Le langage C se veut totalement indépendant du matériel sur lequel il est implanté. Les entrées sorties, bien que nécessaires à tout programme (il faut lui donner les données de départ et connaître les résultats), ne font donc pas partie intégrante du langage. On a simplement prévu des bibliothèques de fonctions de base, qui sont néanmoins standardisées, c'est à dire que sur chaque compilateur on dispose de ces bibliothèques, contenant les même fonctions (du moins du même nom et faisant apparemment la même chose, mais programmées différemment en fonction du matériel). Ces bibliothèques ont été définies par la norme ANSI, on peut donc les utiliser tout en restant portable. Nous détaillerons ici deux bibliothèques : CONIO.H et STDIO.H.
Dans CONIO.H on trouve les fonctions de base de gestion de la console :
putch(char) : affiche sur l'écran (ou du moins stdout) le caractère fourni en argument (entre parenthèses). stdout est l'écran, ou un fichier si on a redirigé l'écran (en rajoutant >nomfichier derrière l'appel du programme, sous DOS ou UNIX). Si besoin est, cette fonction rend le caractère affiché ou EOF en cas d'erreur.
getch(void) : attend le prochain appui sur le clavier, et rend le caractère qui a été saisi. L'appui sur une touche se fait sans écho, c'est à dire que rien n'est affiché à l'écran. En cas de redirection du clavier, on prend le prochain caractère dans le fichier d'entrée.
getche(void) : idem getch mais avec écho. On pourrait réécrire cette fonction en fonction des deux précédentes :
char getche(void);
 {
  char caractere;
  caractere=getch();
  putch(caractere);
  return(caractere);
 }

ou même {return(putch(getch))}
Dans la pratique, ce n'est pas ainsi que getche est réellement défini, mais en assembleur pour un résultat plus rapide.
Dans STDIO.H, on trouve des fonctions plus évoluées, pouvant traiter plusieurs caractères à la suite (par les fonctions de conio.h), et les transformer pour en faire une chaîne de caractères ou une valeur numérique, entière ou réelle par exemple. Les entrées sont dites "bufférisées", c'est à dire que le texte n'est pas transmis, et peut donc encore être modifié, avant le retour chariot.
puts(chaîne) affiche, sur stdout, la chaîne de caractères puis positionne le curseur en début de ligne suivante. puts retourne EOF en cas d'erreur.
gets(chaîne) lecture d'une chaîne sur stdin. Tous les caractères peuvent être entrés, y compris les blancs. La saisie est terminée par un retour chariot. Gets retourne un pointeur sur le premier caractère entré (donc égal à son paramètre d'entrée, ou le pointeur NULL en cas d'erreur (fin du fichier stdin par exemple).
printf(format,listevaleurs) affiche la liste de valeurs (variables ou expressions) dans le format choisi. Le format est une chaîne de caractères entre guillemets (doubles quote "), dans laquelle se trouve un texte qui sera écrit tel quel, des spécifications de format (débutant par %) qui seront remplacées par la valeur effective des variables, dans l'ordre donné dans listevaleurs, et de caractères spéciaux (\). Printf retourne le nombre de caractères écrits, ou EOF en cas de problème.
Une spécification de format est de la forme :
% [flag][largeur][.précision][modificateur]type (entre [] facultatifs)
Le flag peut valoir : - (cadrage à gauche, rajout de blancs si nécessaire à droite), + (impression du signe, même pour les positifs), blanc (impression d'un blanc devant un nombre positif, à la place du signe), 0 (la justification d'un nombre se ferra par rajout de 0 à gauche au lieu de blancs). D'autres Flags sont possibles mais moins utiles, pour plus de détails voir l'aide en ligne de Turbo C.
La largeur est le nombre minimal de caractères à écrire (des blancs sont rajoutés si nécessaire). Si le texte à écrire est plus long, il est néanmoins écrit en totalité. En donnant le signe * comme largeur, le prochain argument de la liste de valeurs donnera la largeur (ex printf("%*f",largeur,réel)).
La précision définit, pour les réels, le nombre de chiffres après la virgule (doit être inférieur à la largeur). Dans la cas d'entiers, indique le nombre minimal de chiffes désiré (ajout de 0 sinon), alors que pour une chaîne (%s), elle indique la longueur maximale imprimée (tronqué si trop long). La précision peut, comme la largeur, être variable en donnant .*
Le modificateur peut être : h (short, pour les entiers), l (long pour les entiers, double pour les réels), L (long double pour les réels).
Le type est : c (char), s (chaîne de caractères, jusqu'au \0), d (int), u (entier non signé), x ou X (entier affiché en hexadécimal), o (entier affiché en octal), f (réel en virgule fixe), e ou E (réel en notation exponentielle), g ou G (réel en f si possible, e sinon), p (pointeur), % (pour afficher le signe %).
Les caractères spéciaux utilisables dans le format sont \t (tabulation), \n (retour à la ligne), \\ (signe \), \nb tout code ASCII, en décimal, hexa ou octal (\32=\040=\0x20=' ').
scanf(format,listeadresse) lecture au clavier de valeurs, dans le format spécifié. Les arguments sont des pointeurs sur les variables résultats (dans le cas de variables scalaires, les précéder par l'opérateur &). Scanf retourne le nombre de valeurs effectivement lues et mémorisées (pas les %*).
Le format peut contenir (entre ") : du texte (il devra être tapé exactement ainsi par l'utilisateur, et ne sera pas stocké), des séparateurs blancs (l'utilisateur devra taper un ou plusieurs blancs, tabulations, retours à la ligne), et des spécifications de format, sous la forme %[*][largeur][modificateur] type.
* signifie que la valeur sera lue mais ne sera pas stockée (ex scanf("%d%*c%d",&i,&j) : lecture de deux entiers séparés par n'importe quel caractère)
la largeur est la largeur maximale lue, scanf s'arrête avant s'il trouve un séparateur (blanc, tab, CR).
les modificateurs et types sont les mêmes que pour printf (excepté d,o,x : pour entiers short, D,O,X pour long). Dans le cas des chaînes (%s), le blanc est également un séparateur. On ne pourra donc pas entrer une chaîne avec des blancs par scanf, il faut utiliser gets.
Scanf lit dans stdin en considérant les retours chariot (CR) comme des blancs. on peut donc séparer par des CR plusieurs valeurs demandées dans le même scanf. Mais de même, si scanf a pu lire tous ses arguments sans arriver à la fin de la ligne, la suite servira au prochain scanf. Utilisez gets(bidon) avant (pour être sur de commencer sur une nouvelle ligne) ou après scanf (pour ignorer la fin de la ligne) si nécessaire.
getchar(void) fonctionne comme getche, mais utilise le même tampon que scanf.
On dispose aussi de sprintf(chaîne, format, listevaleurs) qui permet d'écrire dans une chaîne plutôt que sur l'écran, et donc faire des conversions numériques ->ASCII; et de sscanf(chaîne, format,l isteadresse) qui lit dans une chaîne plutôt qu'au clavier. On possède encore d'autres fonctions dans STDIO, en particulier pour gérer les fichiers.

Les Pointeurs

Définition d'un pointeur
Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des structures dynamiques, c'est-à-dire qui évoluent au cours du temps .
Comprendre la notion d'adresse
Comme nous l'avons vu, un pointeur est une variable qui permet de stocker une adresse, il est donc nécessaire de comprendre ce qu'est une adresse.  Lorsque l'on exécute un programme, celui-ci est stocké en mémoire, cela signifie que d'une part le code à exécuter est stocké, mais aussi que chaque variable que l'on a défini a une zone de mémoire qui lui est réservée, et la taille de cette zone correspond au type de variable que l'on a déclaré.
En réalité la mémoire est constituée de plein de petites cases de 8 bits (un octet). Une variable, selon son type (donc sa taille), va ainsi occuper une ou plusieurs de ces cases (une variable de type char occupera une seule case, tandis qu'une variable de type long occupera 4 cases consécutives). Chacune de ces « cases » (appelées blocs) est identifiée par un numéro. Ce numéro s'appelle adresse. On peut donc accéder à une variable de 2 façons :
grâce à son nom
grâce à l'adresse du premier bloc alloué à la variable
Il suffit donc de stocker l'adresse de la variable dans un pointeur (il est prévu pour cela) afin de pouvoir accéder à celle-ci (on dit que l'on « pointe vers la variable »).
Comment connaît-on l'adresse d'une variable ?
En réalité vous n'aurez jamais à écrire l'adresse d'une variable, d'autant plus qu'elle change à chaque lancement de programme étant donné que le système d'exploitation alloue les blocs de mémoire qui sont libres, et ceux-ci ne sont pas les mêmes à chaque exécution.
Ainsi, il existe une syntaxe permettant de connaître l'adresse d'une variable, connaissant son nom :  il suffit de faire précéder le nom de la variable par le caractère & (« ET commercial ») pour désigner l'adresse de cette variable :
&Nom_de_la_variableIntérêt des pointeurs
Déclaration d'un pointeur
Un pointeur est une variable qui doit être définie en précisant le type de variable pointée, de la façon suivante :
type * Nom_du_pointeur
Le type de variable pointée peut être aussi bien un type primaire (tel que int, char...) qu'un type complexe (tel que struct...).

Un pointeur doit préférentiellement être typé !
Il est toutefois possible de définir un pointeur sur 'void', c'est-à-dire sur quelque chose qui n'a pas de type prédéfini (void * toto). Ce genre de pointeur sert généralement de pointeur de transition, dans une fonction générique, avant un transtypage permettant d'accéder effectivement aux données pointées.
Grâce au symbole '*' le compilateur sait qu'il s'agit d'une variable de type pointeur et non d'une variable ordinaire, de plus, étant donné que vous précisez (obligatoirement) le type de variable, le compilateur saura combien de blocs suivent le bloc situé à l'adresse pointée.
Initialisation d'un pointeur
Après avoir déclaré un pointeur il faut l'initialiser. Cette démarche est très importante car lorsque vous déclarez un pointeur, celui-ci contient ce que la case où il est stocké contenait avant, c'est-à-dire n'importe quel nombre. Autrement dit, si vous n'initialisez pas votre pointeur, celui-ci risque de pointer vers une zone hasardeuse de votre mémoire, ce qui peut être un morceau de votre programme ou... de votre système d'exploitation !
Un pointeur non initialisé représente un danger !
Pour initialiser un pointeur, il faut utiliser l'opérateur d'affectation '=' suivi de l'opérateur d'adresse '&' auquel est accollé un nom de variable (celle-ci doit bien sûr avoir été définie avant...) :
Nom_du_pointeur = &nom_de_la_variable_pointee;
Par exemple :
int a = 2;
char b;
int *p1;
char *p2;
p1 = &a;
p2 = &b;
Accéder à une variable pointée
Après (et seulement après) avoir déclaré et initialisé un pointeur, il est possible d'accéder au contenu de l'adresse mémoire pointée par le pointeur grâce à l'opérateur '*'. La syntaxe est la suivante :
Par exemple :
int a = 2;
*p1 = 10;
*p2 = 'a';
Après ces deux instructions, le contenu des variables a et b sera respectivement 10 et 97 (61 en hexadécimal, le code ASCII associé au caractère 'a').
Si vous désirez utiliser cette notation dans une expression plus complexe, il sera nécessaire d'employer des parenthèses :   Par exemple :    a = (*p)++;

Les Structures

Différence entre une structure et un tableau
Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de type différent tels que des entiers et des chaînes de caractères.
Les structures permettent de remédier à cette lacune des tableaux, en regroupant des objets (des variables) au sein d'une entité repérée par un seul nom de variable.
Les objets contenus dans la structure sont appelés champs de la structure.
Déclaration d'une structure
Lors de la déclaration de la structure, on indique les champs de la structure, c'est-à-dire le type et le nom des variables qui la composent :
struct Nom_Structure {
type_champ1 Nom_Champ1;
type_champ2 Nom_Champ2;
type_champ3 Nom_Champ3;
type_champ4 Nom_Champ4;
type_champ5 Nom_Champ5;
...
};La dernière accolade doit être suivie d'un point-virgule !

Le nom des champs répond aux critères des noms de variable
Deux champs ne peuvent avoir le même nom
Les données peuvent être de n'importe quel type hormis le type de la structure dans laquelle elles se trouvent
Ainsi, la structure suivante est correcte :
struct MaStructure {
int Age;
char Sexe;
char Nom[12];
float MoyenneScolaire;
struct AutreStructure StructBis;
/* en considérant que la structure AutreStructure est définie */
};
Par contre la structure suivante est incorrecte :
struct MaStructure {
int Age;
char Age;
struct MaStructure StructBis;
};
Il y a deux raisons à cela :
Le nom de variable Age n'est pas unique
Le type de donnée struct MaStructure n'est pas autorisé
La déclaration d'une structure ne fait que donner l'allure de la structure, c'est-à-dire en quelque sorte une définition d'un type de variable complexe. La déclaration ne réserve donc pas d'espace mémoire pour une variable structurée (variable de type structure), il faut donc définir une (ou plusieurs) variable(s) structurée(s) après avoir déclaré la structure...
Définition d'une variable structurée
La définition d'une variable structurée est une opération qui consiste à créer une variable ayant comme type celui d'une structure que l'on a précédemment déclarée, c'est-à-dire la nommer et lui réserver un emplacement en mémoire.
La définition d'une variable structurée se fait comme suit :
struct Nom_Structure Nom_Variable_Structuree;
Nom_Structure représente le nom d'une structure que l'on aura préalablement déclarée.
Nom_Variable_Structuree est le nom que l'on donne à la variable structurée.
Il va de soi que, comme dans le cas des variables on peut définir plusieurs variables structurées en les séparant avec des virgules :
struct Nom_Structure Nom1, Nom2, Nom3, ...;
Soit la structure Personne :
struct Personne{
int Age;
char Sexe;
};On peut définir plusieurs variables structurées :

struct Personne Pierre, Paul, Jacques;
Ou
struct Personne{
int Age;
char Sexe;
              } Pierre, Paul, Jacques;
Accès aux champs d'une variable structurée
Chaque variable de type structure possède des champs repérés avec des noms uniques. Toutefois le nom des champs ne suffit pas pour y accéder étant donné qu'ils n'ont de contexte qu'au sein de la variable structurée...
Pour accéder aux champs d'une structure on utilise l'opérateur de champ (un simple point) placé entre le nom de la variable structurée que l'on a défini et le nom du champ :
Nom_Variable.Nom_Champ;
Ainsi, pour affecter des valeurs à la variable Pierre (variable de type struct Personne définie précédemment), on pourra écrire : Pierre.Age = 18; Pierre.Sexe = 'M';
Tableaux de structures
Etant donné qu'une structure est composée d'éléments de taille fixe, il est possible de créer un tableau ne contenant que des éléments du type d'une structure donnée. Il suffit de créer un tableau dont le type est celui de la structure et de le repérer par un nom de variable :
struct Nom_Structure Nom_Tableau[Nb_Elements] ;
Chaque élément du tableau représente alors une structure du type que l'on a défini...
Le tableau suivant (nommé Repertoire) pourra par exemple contenir 8 variables structurées de type struct Personne :   struct Personne Repertoire[8];
De la même façon, il est possible de manipuler des structures dans les fonctions.