Archive

Archives pour 12/2009

QRQVB : Les paquets UDP

29/12/2009 Aldevar 2 commentaires

Suite de la Question Réseau Qui Va Bien, nouveau billet purement réseau donc. Je comptais me lancer dans la description des paquets TCP, mais je pense qu’il est plus intéressant de se pencher d’abord sur UDP avant d’appréhender TCP.

UDP (Pour User Datagram Protocol) se situe dans la couche 4 du modèle OSI (couche transport). Pour rappel, au niveau de la couche 3 (IP), les datagrammes sont routés d’une machine à une autre en fonction des adresses IP (en fait, le routage se fait en fonction de l’adresse réseau, voir QRQVB : L’adresse IP). Lors de cette opération de routage, aucune distinction n’est faite entre les différents services pour lesquels ces paquets peuvent être destinés. Que ce soit pour une connexion SSH (port 22) ou HTTP (port 80) ou autre, les datagrammes IP sont tous indifféremment mélangés.

La couche 4 du modèle OSI ajoute un mécanisme qui permet l’identification du service  concerné. Plusieurs programmes de plusieurs utilisateurs pouvant simultanément circuler sur le réseau, il est indispensable de faire un tri entre les applications. Ici, l’idée est d’associer la destination du paquet à une fonction. L’identification de cette fonction ce fait à l’aide d’un chiffre nommé Port.

En tête UDP

Lors de l’étude des datagramme IP, nous avions vu le contenu de l’entête du paquet (partie verte). Ici,  nous allons observer le contenu de l’entête du message (partie jaune) lorsque l’on traite un paquet UDP.

Le paquet UDP est composé de 8 octets.

Les 2 premiers octets contiennent le port source. Codé sur 16 bits donc. C’est le numéro de port de l’émetteur du paquet. C’est aussi le numéro de port sur lequel le destinataire doit envoyer sa réponse.

Les octets 3 et 4 stockent le port de destination. C’est sur ce port que sera remis le paquet lors de sa livraison à la machine ciblée.

Le port étant un entier positif de 16 bits, on en déduit que les bornes sont 0 – 65535 (2^16). Cependant, le port 0 n’est pas exploitable.

Les octets 5 et 6 contiennent la longueur de l’entête UDP et du message. Sa longueur minimal est 8 (entête UDP avec 0 données à transporter) et sa longueur maximal 2^16 = 65535 (64ko).

Les 2 derniers octets contiennent le cheksum. C’est la somme de contrôle de l’entête UDP et des données qui suivent.

Ports réservés

Toute machine qui utilise la pile TCP/IP se doit de connaitre un certains nombre de services bien connus, aussi appelé « well known port number » pour pouvoir dialoguer avec les autres machines sur internet. Sur une machines Unix, cette liste est placée dans le fichier /etc/services et se doit d’être lisible par tous les utilisateurs et toutes les applications. Voici un extrait du contenu de ce fichier :

Nom             Port/Protocol     Commentaire
netstat		15/tcp
 qotd		17/tcp		quote
 msp		18/tcp		# message send protocol
 msp		18/udp
 chargen	19/tcp		ttytst source
 chargen	19/udp		ttytst source
 ftp-data	20/tcp
 ftp		21/tcp
 fsp		21/udp		fspd
 ssh		22/tcp		# SSH Remote Login Protocol
 ssh		22/udp
 telnet		23/tcp
 smtp		25/tcp		mail
 time		37/tcp		timserver
 time		37/udp		timserver
 rlp		39/udp		resource	# resource location
 nameserver	42/tcp		name		# IEN 116
 whois		43/tcp		nicname
 tacacs		49/tcp				# Login Host Protocol (TACACS)
 tacacs		49/udp
 re-mail-ck	50/tcp				# Remote Mail Checking Protocol
 re-mail-ck	50/udp
 domain		53/tcp				# name-domain server
 domain		53/udp
 mtp		57/tcp				# deprecated
 tacacs-ds	65/tcp				# TACACS-Database Service
 tacacs-ds	65/udp
 bootps		67/tcp				# BOOTP server
 bootps		67/udp
 bootpc		68/tcp				# BOOTP client
 bootpc		68/udp
 tftp		69/udp
 gopher		70/tcp				# Internet Gopher
 gopher		70/udp
 rje		77/tcp		netrjs
 finger		79/tcp
 www		80/tcp		http		# WorldWideWeb HTTP
 www		80/udp				# HyperText Transfer Protocol

Les ports 1 à 1023 sont réservés aux « well known ports ». Ils ne peuvent être utilisés que par des applications qui s’exécutent avec des droits privilégiés (root). Les autres ports peuvent être utilisés librement sans privilège particulier et sont en général employés par les applications clientes. Par exemple, sur ma machine, en ce moment, mon client IRC utilise le port 59175 pour communiquer avec le serveur irc holmes.freenode.net.

Mode non connecté

Contrairement à TCP, UDP est conçu pour permettre un échange de données entre 2 applications sans échange préliminaire. UDP est utilisé si les données à transmettre n’ont pas besoin d’être fragmentées en plusieurs paquet. La paquet est ainsi envoyé sans s’assurer qu’il arrive bien à destination. UDP est appelé mode de transport non connecté par opposition à TCP. Plus particulièrement, les paquets a destination d’une application UDP sont conservés dans une pile de type FIFO. Si l’application destinatrice ne les “consomme” pas assez rapidement, les plus anciens paquets risquent d’être écrasés par les plus récents… Un risque supplémentaire de perte de données.

Nous verrons comment TCP peut palier à ce problème dans la prochaine QRQVB

Categories: QRQVB, document, planet-libre

GNU/Linux : Résolution de problèmes

25/12/2009 Aldevar 9 commentaires

Une grande partie du travail sur les forums concernant les logiciels libres est d’obtenir plus d’informations sur les problèmes des novices. Il est très agréable d’aider les autres comme il peut être assez agaçant d’essayer d’aider quelqu’un qui ne montre aucun effort pour s’aider lui-même. Je ne pense pas que cela soit dû à de la fainéantise de la part de celui qui pose la question. C’est simplement parce que les novices ne connaissent pas les premières étapes de résolution des problèmes sur GNU/Linux et ne savent pas quels types d’informations rechercher ni comment les obtenir. J’espère que ce petit guide sera utile pour ceux qui font leurs premiers pas sur linux.

I -  Diagnostiquer soi-même

1 – La première étape est la collecte d’informations.

Si un programme plante ou ne fait pas ce qu’il est censé faire, il faut se poser et réfléchir calmement. Ouvrez un nouveau fichier dans votre éditeur de texte favori et écrivez-y ce que vous faisiez quand le problème est apparu ainsi que tous les messages d’erreurs reçus. Ces messages d’erreurs doivent être recopiés exactement tel qu’ils sont apparus. Utilisez le copier/coller si cela est possible.

Ouvrez un terminal et tapez tail /var/log/messages. Cette commande affichera les 10 dernières lignes des logs du système. Si celui ci contient un ou des messages qui sont clairement en rapport avec votre problème, recopiez les également. Les erreurs des applications graphiques sont en général dans le fichier .Xsession-errors ou .xsession-errors dans votre dossier /home. La commande pour visualiser les 10 dernières lignes est donc tail ~/.xsession-errors. Comme pour le fichier /var/log/messages, ajoutez les lignes en rapport avec votre problème dans votre fichier de départ.
Si vous n’avez trouvé aucune information dans ces fichiers, essayez de lancer l’application concernée depuis votre terminal. Lors de l’apparition du bug, des messages devraient s’afficher.

Si votre système ne démarre plus suite à un problème, démarrez alors sur une autre distribution (soit en dual-boot si vous en avez soit depuis un live-cd). Il est toujours bon d’avoir un live-cd sous la main pour ce genre d’opération. Une fois que vous avez démarré sur le live-cd, montez votre partition root et récupérez les informations dans les fichiers cités plus haut.

2 – Le problème est-il reproductible?

S’il est possible de reproduire le problème facilement, faites-le. N’oubliez pas de le faire sur des fichiers peu important ou sur une copie du fichier concerné afin de ne pas endommager vos données.

3 – Est-ce un problème matériel ?

Les problèmes non reproductibles sont souvent dus au matériel. Si vous pensez que c’est le cas, regardez alors dans le fichier /var/log/boot ainsi que /var/log/kern.log ou /var/log/kernel.log suivant votre distribution pour voir si le kernel reconnait bien votre matériel. Ce fichier étant très long, la commande tail ne vous sera pas d’un grand secours. Utilisez plutôt less /var/log/boot et parcourez les pages à la recherche d’un message en rapport avec votre problème. Recopiez également ce message dans votre fichier de départ.

4 – Lisez la documentation du programme.

Ceci est à faire en particulier si le programme ne réagit pas de la manière souhaitée. Lisez l’aide en ligne du programme et utilisez également le manuel universel (dans un terminal : man nom_du_programme).

5 – Recherchez votre message d’erreur sur internet

Copiez/collez le message d’erreur dans un moteur de recherche ou un meta-moteur tel que ixquick et ajoutez-y le nom du programme. Vous trouverez certainement des messages sur des forums d’utilisateurs qui ont le même problème que vous. Lisez le thread complet, vous y trouverez peut-être une solution.

6 – Réfléchissez avec logique

Si, arrivé ici, vous commencez à avoir une idée sur la cause du problème, vous pouvez peut être tester cette idée. Il y a beaucoup de petites commandes simples qui peuvent vous aider à recueillir plus d’informations sur votre problème et votre système, qui vont seront d’un grand secours. lspci pour lister votre matériel, lsusb pour lister les périphériques usb, cat /proc/cpuinfo pour avoir les caractéristiques de votre CPU, free -m pour connaitre le taux de charge de votre RAM

7 – Maintenant, vous pouvez penser à demander de l’aide.

Si après tout ça, vous n’avez toujours pas résolu votre problème, il est temps de demander de l’aide sur un forum d’utilisateurs. Avant de passer à cette étape, rappelez vous que les utilisateurs des forums ne sont pas payés pour répondre à vos questions. Ce sont seulement des utilisateurs ayant une certaine expérience et qui font cela bénévolement.

II – Obtenir de l’aide

1 – D’abord, observer

Commencez par choisir votre forum. Il est préférable dans un premier temps de choisir le forum de votre distribution, puis le forum du programme concerné. Si ce forum possède une FAQ, lisez-la. Lisez aussi les règles du forum. Si votre question ne respecte pas les règles, il y a de grandes chances pour que vous n’obteniez pas de réponse.

2 – Ne soyez pas hors-sujet

Trouvez le sous-forum qui correspond à votre problème. Ne postez pas votre message dans plusieurs sous-forums, ceci est très mal vu.

3 – Choisissez bien le titre de votre topic.

N’utilisez pas de sujet tel que « Besoin d’aide » ou « J’ai un problème ». Ceci a tendance à irriter les gens. Votre titre doit indiquer le plus clairement quel problème vous avez. Ainsi, une personne qui pense pouvoir vous aider sera plus encline à lire votre sujet et poster une réponse. Soyez aussi précis que possible. Par exemple « Impossible d’obtenir une adresse IP » sera plus utile que « Je n’arrive pas à aller sur internet ».

4 – Donnez des informations

Dans le corps de votre message, donnez le nom et la version de votre distribution, le nom et la version du programme utilisé et les informations sur votre matériel si cela est nécessaire. Recopiez-y aussi les messages d’erreurs (c’est là que le fichier que vous avez créé au devient utile). Indiquez ce que vous avez fait pour tenter de résoudre le problème. En faisant cela, vous montrerez aux autres que vous ne vous êtes pas jeté sur le forum dès que le problème est apparu.

5 – Pas de langage SMS

Ça saoule! Ça n’aide pas à vous faire comprendre et on vous répondra d’autant moins.

6 – Ne perdez pas une opportunité d’apprendre

Ne suivez pas les conseils aveuglément. Vous êtes ici pour apprendre quelque chose. Si on vous demande d’utiliser un outil en ligne de commande, utilisez les pages man pour savoir à quoi sert cet outil. Vous pourrez ensuite réutiliser cet outil si vous rencontrez un problème similaire. Si on vous demande de poster un fichier pour plus d’informations, recherchez l’utilité de ce fichier. Les fichiers systèmes importants possèdent souvent une page man dédiée.

7 – Dites merci

Les logiciels libres reposent sur la communauté. Personne n’est payé pour vous aider. Les personnes qui vous aident le font car elles ont elles-mêmes reçu de l’aide dans le passé et veulent rendre la pareille. En plus de dire merci, vous pouvez également aider les autres qui ne savent peut-être pas quelque chose que vous savez. Vous ressentirez alors une certaine satisfaction que les logiciels propriétaires ne peuvent vous apporter.

Categories: Howto, document, planet-libre

Les meilleurs et les pires systèmes d’exploitation de la décennie

ITWorld a publié sa liste des meilleurs systèmes d’exploitation de la décennie ainsi que les plus décevants. Je vous retranscris donc ici cette liste avec un léger résumé.

Décevant

  • Windows Millennium Edition
  • La dernière version de Windows qui tournait encore avec DOS. Tout ceux qui s’en sont approché ont pu voir l’ampleur de la catastrophe…

  • Windows Vista
  • Annoncé comme le système d’exploitation le plus cher en terme de développement, les résultats furent catastrophiques. Manque de pilotes, problème de compatibilité des logiciels, consommation de ressources excessive.

  • Netware 6.5
  • Avec e-Directory, le rêve inassouvi d’un concurrent direct à Active Directory de Microsoft.

  • Windows Mobile
  • Lorsque les PDA ont fusionné avec les téléphones portables, PALM, Symbian ont été dépassé par l’iPhone d’Apple. Dorénavant, l’iPhone est la cible à éliminer et Windows Mobile est loin derrière.

  • GNU Hurd
  • Le nec plus ultra du vaporware open source.

Les meilleurs

  • Windows Server 2008 R2
  • Avouons ici que c’est quand même un bon OS (si on met de coté le fait que le code soit fermé et malgré l’hilarante faille SMB2) et les entreprises lui font confiance.

  • Mac OS X
  • Ça juste marche! Les cotés positifs sont les graphismes et l’intégration. Les utilisateurs le trouvent intuitif et c’est ce qui fait son succès malgré le prix.

  • Solaris/OpenSolaris 10
  • Un autre cas d’excellence. Sun (bientôt Oracle) a construit un des dérivés Unix les plus fiable. De plus Solaris est devenue ouverte et relativement libre.

  • GNU/Linux (> 2.6.18)
  • Un noyau et des utilitaires libres, rapides et efficaces. Les distributions les plus populaires : Ubuntu, Novell / Suse, Mandriva, Fedora pour le desktop et Red Hat qui dominent le marchés des serveurs d’entreprises.

  • Google Android
  • Un système d’exploitation ouvert pour les téléphones ne fut pas facile à imposer. Google l’a fait.

Article original sur ITWorld

Categories: Humeur, News, planet-libre

Gestion des droits sous GNU/Linux.

21/12/2009 Aldevar 4 commentaires

Dans ce nouveau billet, je vais tenter d’expliquer comment fonctionne les droits sur les fichiers sous GNU/Linux et surtout, comment modifier ces droits depuis un terminal.

Utilisateur, groupe et les autres

Pour chaque fichier, on va pouvoir déterminer quels sont les droits pour l’utilisateur propriétaire, le groupe propriétaire et les autres. Pour connaitre les droits actuels sur un fichier, on peut utiliser ls -l

ls -l fichier1
-rw-r--r-- 1 aldevar users 28 2009-12-20 18:13 fichier1

Ici, on voit donc que l’utilisateur propriétaire est aldevar et le groupe propriétaire est users.

Pour chaque fichier, il existe 3 propriétés : Lecture (Read), Ecriture (Write) et Execution (Execute). Chacun de ses attributs est représenté par 1 lettre (R, W et X). On peut donc définir pour l’utilisateur propriétaire, le groupe propriétaire et les autres ce à quoi ils auront accès. Le premier groupe de 3 lettres définit les droits pour l’utilisateur, le second groupe pour le groupe et le dernier groupe de 3 lettres pour tous les autres.

rw- → Lecture et écriture pour l’utilisateur aldevar

r– → Lecture pour le groupe users

r– → Lecture pour tous les autres utilisateurs. (Ceux qui ne font pas parti du groupe ‘users’ )

Modifier l’utilisateur et le groupe propriétaire

La commande chown (diminutif de Change Owner) va servir a modifier l’utilisateur propriétaire. La commande chgrp (Change Group) fera la même chose pour le groupe. Pour expliquer leur fonctionnement, voici un exemple concret.

Je possède un fichier ayant ces droits là :

-rw-r--r-- root root 28 2009-12-20 18:13 fichier1

Et je souhaite changer l’utilisateur et le groupe. Voici les commandes à utiliser :

chown aldevar fichier1
chgrp users fichier1
ls -l fichier1
-rw-r--r-- 1 aldevar users 28 2009-12-20 18:13 fichier1

Si ou souhaite modifier en même temps l’utilisateur et le groupe propriétaire, chown permet de le faire, grâce à cette syntaxe:

chown aldevar:users fichier1

Modifier les attributs RWX

La commande chmod va permettre d’ajouter ou de supprimer des droits en lecture/ecriture/exécution sur les fichiers. Si on souhaite par exemple ajouter des droits en lecture à tout le monde, on va utiliser cette syntaxe :

chmod +r fichier1

On peut également choisir qui sera affecté par les changements de droits. On utilise pour cela des diminutifs (u pour user, g pour group et enfin o pour other). Par exemple :

chmod g+w fichier1

donnera les droits en écriture pour le groupe.

Enfin, une dernière syntaxe va permettre de donner les droits grâce à des chiffres. Vous avez sans doute déjà aperçu des chmod 777 fichier ou chmod 644 fichier. Pour comprendre cette syntaxe, il est nécessaire d’avoir quelques notions de binaires. En effet, chaque groupe de rwx peut être codé de 0 a 7.

Chaque R, W ou X peut être positionné sur 0 ou 1. Donc –x équivaut a mettre un 1 binaire pour l’exécution (001). Si on souhaite ajouter les droits en lecture, ceci va nous donner r-x soit 101. Le 101 binaire correspondant au 5 décimale.

Pour résumer :

--x → 1 binaire → 1 décimal
-w- → 10 binaire → 2 décimal
-wx → 11 binaire → 3 décimal
r-- → 100 binaire → 4 décimal
r-x → 101 binaire → 5 décimal
rw- → 110 binaire → 6 décimal
rwx → 111 binaire → 7 décimal

Donc, d’après ce ‘tableau’, si on souhaite mettre les droits d’un fichier en rw-r–r– on utilisera cette commande :

chmod 644 fichier1
ls -l fichier1
rw-r--r-- 1 aldevar users 28 2009-12-20 18:13 fichier1

Et pour donner tous les droits à tout le monde :

chmod 777 fichier1
ls -l fichier1
rwxrwxrwx 1 aldevar users 28 2009-12-20 18:13 fichier1
Categories: Howto, planet-libre

CTKArch, nouvelle version

screenshot_010CalimeroTeknik vient de sortir la dernière version de CTKArchLive.

Ce LiveCD/LiveUSB se caractérise notamment par sa légèreté et tourne sur des machines plutôt modestes.

Cette nouvelle mouture, en version 0.4, permet d’installer la distribution sur son disque dur.  On peut également, si on possède assez de RAM, copier le contenu du LiveCD dans la RAM afin de pouvoir éjecter le média (CD ou USB) pour regarder un DVD ou passer le support à son voisin par exemple.

Voici la liste des améliorations apportées par cette dernière version :

  • Un nouveau bootloader, plus esthétique.
  • Support de KMS pour les cartes Intel, Radeon et Nvidia (pilote Nouveau).
  • Possibilité de garder une partition /home persistante. (voir la documentation)

screenshot_012

screenshot_013

screenshot_014

screenshot_015

Les liens de téléchargement :

tonbnc
i686x86_64

archlinux.fr
i686x86_64

bacardi55
i686x86_64

Une version i586 devrait bientôt voir le jour.

On en parle également sur le forum de la communauté francophone de Archlinux. N’hésitez pas à venir y faire part de vos problèmes, questions, retours d’experiences… ainsi que sur le canal IRC (#archlinux-fr sur Freenode).

Categories: Archlinux, News, planet-libre