summaryrefslogtreecommitdiff
path: root/sem_6/HLIN611
diff options
context:
space:
mode:
Diffstat (limited to 'sem_6/HLIN611')
-rw-r--r--sem_6/HLIN611/.gitkeep0
-rw-r--r--sem_6/HLIN611/Chap_4/TD29
-rw-r--r--sem_6/HLIN611/TCP/a.outbin0 -> 9149 bytes
-rw-r--r--sem_6/HLIN611/TCP/prog.c61
-rw-r--r--sem_6/HLIN611/TD/TCP.txt19
-rw-r--r--sem_6/HLIN611/TP_TCP_P2/prog.c51
-rw-r--r--sem_6/HLIN611/a.outbin0 -> 9053 bytes
-rw-r--r--sem_6/HLIN611/td1.md14
-rw-r--r--sem_6/HLIN611/tp1.c72
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
new file mode 100644
index 0000000..6d92efd
--- /dev/null
+++ b/sem_6/HLIN611/TCP/a.out
Binary files differ
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
new file mode 100644
index 0000000..94dba0e
--- /dev/null
+++ b/sem_6/HLIN611/a.out
Binary files differ
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;
+}