diff options
Diffstat (limited to 'sem_6/HLIN611')
| -rw-r--r-- | sem_6/HLIN611/.gitkeep | 0 | ||||
| -rw-r--r-- | sem_6/HLIN611/Chap_4/TD | 29 | ||||
| -rw-r--r-- | sem_6/HLIN611/TCP/a.out | bin | 0 -> 9149 bytes | |||
| -rw-r--r-- | sem_6/HLIN611/TCP/prog.c | 61 | ||||
| -rw-r--r-- | sem_6/HLIN611/TD/TCP.txt | 19 | ||||
| -rw-r--r-- | sem_6/HLIN611/TP_TCP_P2/prog.c | 51 | ||||
| -rw-r--r-- | sem_6/HLIN611/a.out | bin | 0 -> 9053 bytes | |||
| -rw-r--r-- | sem_6/HLIN611/td1.md | 14 | ||||
| -rw-r--r-- | sem_6/HLIN611/tp1.c | 72 |
9 files changed, 246 insertions, 0 deletions
diff --git a/sem_6/HLIN611/.gitkeep b/sem_6/HLIN611/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sem_6/HLIN611/.gitkeep diff --git a/sem_6/HLIN611/Chap_4/TD b/sem_6/HLIN611/Chap_4/TD new file mode 100644 index 0000000..ae2f148 --- /dev/null +++ b/sem_6/HLIN611/Chap_4/TD @@ -0,0 +1,29 @@ +Exo 1 :
+194.195.196.197/24
+194.195.196.206/24
+130.160.21.22/24
+130.160.140.22/24
+I) Classe C pour 1 et 2, Classe B pour 3 et 4 ( mais masque incorrect, devrait être /16)
+1) 194.195.196.1 to 194.195.196.254
+2) 194.195.196.1 to 194.195.196.254
+3) 130.160.21.1 to 130.160.21.254
+4) 130.160.140.1 to 130.160.140.254
+
+II)
+1) 11000010.11000011.11000100.11000101
+application du masque :
+OU 11111111.11111111.11111111.00000000
+ =11000010.11000011.11000100.00000000
+2) 11000010.11000011.11000100.11000101
+3) 10000010.10100000.00010101.00010110
+4) 10000010.10100000.10001100.00010110
+
+On change de reseau des lors qu'un bit commun avec le masque change d'une adresse à l'autre.
+
+III)
+Pour que H1 et H2 ne soient pas dans le meme reseaux : il faut un masque genre
+255.255.255.248
+
+Exo 2 :
+I)
+2)
diff --git a/sem_6/HLIN611/TCP/a.out b/sem_6/HLIN611/TCP/a.out Binary files differnew file mode 100644 index 0000000..6d92efd --- /dev/null +++ b/sem_6/HLIN611/TCP/a.out diff --git a/sem_6/HLIN611/TCP/prog.c b/sem_6/HLIN611/TCP/prog.c new file mode 100644 index 0000000..046d2f1 --- /dev/null +++ b/sem_6/HLIN611/TCP/prog.c @@ -0,0 +1,61 @@ +#include<stdlib.h>
+#include<stdio.h>
+#include<sys/socket.h>
+#include<netdb.h>
+#include<sys/types.h>
+#include<string.h>
+#include<arpa/inet.h>
+#include<errno.h>
+#define closesocket(s) close(s)
+
+typedef int SOCKET;
+typedef struct sockaddr_in SOCKADDR_IN;
+typedef struct sockaddr SOCKADDR;
+typedef struct in_addr IN_ADDR;
+int main (int argc, char ** argv){
+ if (argc != 2){
+ printf("Syntaxe : %s message\n",argv[0]);
+ return 1;
+ }
+
+ //init du socket local
+ struct sockaddr_in sin= { 0 };
+ int sock = socket(PF_INET, SOCK_STREAM, 0);
+ if(sock == -1)
+ {
+ perror("socket()");
+ exit(errno);
+ }
+
+ // inet_pton(AF_INET,"162.38.81.131",&(sin.sin_addr));
+ // //recherche de la cible
+ // const char * hostname = "s1.fdsetu.infra.umontpellier.fr";
+ // hostinfo=gethostbyname(hostname);
+ // if (hostinfo == NULL) /* l'hôte n'existe pas */
+ // {
+ // fprintf (stderr, "Unknown host %s.\n", hostname);
+ // exit(EXIT_FAILURE);
+ // }
+if (inet_pton(AF_INET,"162.38.81.131",&(sin.sin_addr))==-1){
+ perror("inet_pton()");
+ exit(errno);
+}
+// sin.sin_addr = *(IN_ADDR *) hostinfo->h_addr;
+sin.sin_port = htons(53325);
+sin.sin_family = AF_INET;
+if(connect(sock,(SOCKADDR *) &sin, sizeof(sin)) == -1)
+{
+ perror("connect()");
+ exit(errno);
+}
+
+char buffer[1024];
+strcpy(buffer,argv[2]);
+if(send(sock, buffer, strlen(buffer), 0) < 0)
+{
+ perror("send()");
+ exit(errno);
+}
+
+ return 0;
+}
diff --git a/sem_6/HLIN611/TD/TCP.txt b/sem_6/HLIN611/TD/TCP.txt new file mode 100644 index 0000000..c3065a9 --- /dev/null +++ b/sem_6/HLIN611/TD/TCP.txt @@ -0,0 +1,19 @@ +Exercice 1 :
+1) Non
+2) Non
+3) Non
+
+Exercice 2 :
+1) Soit p1 et p2 deux paquets tcp, si p1 passe par r1 et p2 par r2, et que r1 est moins efficace que r2, alors p2 arrivera avant p1
+Si p1 est envoyé, et p2 l'est ensuite, si p1 est perdu en route, alors il sera renvoyé au bout de x temps, car non recu alors p1 arrivera après p2
+
+2) Dans le cas d'une connection p2p sur un même reseau local, les paquets arriveront dans l'ordre où ils ont étés envoyés.
+
+3) Pour la 1, meme reponse, pour la 2, ca depends
+
+Exercice 3 :
+1 ) Elle est envisageable mais non indispensable
+2) On attends l'accusé de reception avant de renvoyer un autre message, ce n'est pas optimal
+3 ) Si l'accusé de reception tarde à arriver, soit je retransmet le message, soit je redemande un accusé de reception soit je considère que la connection est morte
+4..
+5) Il faut identifier chaque paquet individuellement
diff --git a/sem_6/HLIN611/TP_TCP_P2/prog.c b/sem_6/HLIN611/TP_TCP_P2/prog.c new file mode 100644 index 0000000..0575631 --- /dev/null +++ b/sem_6/HLIN611/TP_TCP_P2/prog.c @@ -0,0 +1,51 @@ +#include<stdlib.h>
+#include<stdio.h>
+#include<sys/socket.h>
+#include<netdb.h>
+#include<sys/types.h>
+#include<string.h>
+#include<arpa/inet.h>
+#include<errno.h>
+
+int main (int argc, char ** argv){
+ if (argc != 4){
+ printf("Nombre de paramètre incorrect : format : \n %s adresse port fichier",argv[0])
+ }
+ int Socket_envoi= socket(PF_INET,SOCK_STREAM,0);
+ FILE fichier = fopen(argv[3],"r");
+ struct sockaddr_in addresse;
+ printf("Fichier ouvert\n");
+ char buf;
+ if (inet_pton(AF_INET,argv[1],&(adresse.sin_addr))==-1){
+ perror("inet_pton()");
+ exit(errno);
+ }
+ adresse.sin_port = htons(atoi(argv[2]));
+ adresse.sin_family = AF_INET;
+ if(connect(Socket_envoi,(SOCKADDR *) &adresse, sizeof(adresse)) == -1)
+ {
+ perror("connect()");
+ exit(errno);
+ }
+ char tableau[1000];
+ int i =0;
+ if(send(Socket_envoi, argv[3], strlen(argv[3]), 0) < 0)
+ {
+ perror("send()");
+ exit(errno);
+ }
+ while (buf = getc(fichier)!= EOF){
+ tableau[i]=buf;
+ i++;
+ if ( i = 999){
+ if(send(Socket_envoi, tableau, strlen(tableau), 0) < 0)
+ {
+ perror("send()");
+ exit(errno);
+ }
+ i = 0;
+ }
+ }
+
+ return 0;
+}
diff --git a/sem_6/HLIN611/a.out b/sem_6/HLIN611/a.out Binary files differnew file mode 100644 index 0000000..94dba0e --- /dev/null +++ b/sem_6/HLIN611/a.out diff --git a/sem_6/HLIN611/td1.md b/sem_6/HLIN611/td1.md new file mode 100644 index 0000000..87b2f57 --- /dev/null +++ b/sem_6/HLIN611/td1.md @@ -0,0 +1,14 @@ +# TD 1 : + +Exercice 1 : +a) 33 554 432 bits pour 1 image, 335 544 320 bits pour 10. +b) A 55,6Kbits/s, +Soit 100 minutes +A 1Mbits/s : 5 minutes +A 10Mb/s : 33 s +A 100Mb/s : 3 s + + +``` + +```
\ No newline at end of file diff --git a/sem_6/HLIN611/tp1.c b/sem_6/HLIN611/tp1.c new file mode 100644 index 0000000..7ff5a2b --- /dev/null +++ b/sem_6/HLIN611/tp1.c @@ -0,0 +1,72 @@ +#include<stdlib.h> +#include<stdio.h> +#include<sys/socket.h> +#include<netdb.h> +#include<sys/types.h> +#include<string.h> +#include<arpa/inet.h> +#include <errno.h> + +int main (int argc, char ** argv){ + if (argc != 2){ + printf("Syntaxe : %s nom\n",argv[0]); + return 1; + } + struct addrinfo hints; + struct addrinfo *result, *rp; + int s; + char addrstr[64]; + char ip[64]; + char canonname[256]; + memset(&canonname, 0, 256*sizeof(char)); + memset(&ip, 0, 64*sizeof(char)); + memset(&addrstr,0,64*sizeof(char) ); + hints.ai_family=AF_UNSPEC; + hints.ai_socktype=0; + hints.ai_flags = AI_CANONNAME; + struct addrinfo * p ; + s= getaddrinfo(argv[1],NULL,&hints,&result); + if (s !=0) { + printf("error in getaddrinfo : %s\n", gai_strerror(s)); + return 1; + } + strcpy(canonname, result->ai_canonname); + printf("%s\n",canonname); + int error; + char hostname[NI_MAXHOST] = ""; + char oldhostname[NI_MAXHOST]="uesh"; + for (p = result; p != NULL; p = p->ai_next){ + + error = getnameinfo(p->ai_addr, p->ai_addrlen, hostname, NI_MAXHOST, NULL, 0, 0); + if (error != 0) + { + printf("error in getnameinfo: %s\n", gai_strerror(error)); + return 1; + } + if (strcmp(hostname,"")!=0 && strcmp(hostname,oldhostname)!=0){ + printf("hostname : %s\n", hostname); + strcpy(oldhostname,hostname); + } + void * ptr; + switch(p->ai_family){ + case AF_INET: + ptr = &((struct sockaddr_in * ) p->ai_addr)->sin_addr; + break; + case AF_INET6: + ptr = &((struct sockaddr_in6 * ) p->ai_addr)->sin6_addr; + break; + } + inet_ntop (p->ai_addr->sa_family,ptr, addrstr, 64 ); + char type[100]; + switch (p->ai_socktype){ + case (SOCK_STREAM): + strcpy(type,"STREAM"); + break; + case (SOCK_DGRAM): + strcpy(type,"DGRAM"); + break; + } + printf("IP : %s type : %s\n",addrstr,type); + } + return 0; +} |
