En tant que système d'exploitation open source, la pile de protocoles réseau de Linux joue un rôle essentiel, responsable du traitement de la transmission des données réseau, du routage, de la gestion des connexions et d'autres fonctions. Cet article présentera certains protocoles réseau courants et leurs fonctions dans la pile de protocoles Linux, et joindra des exemples de code spécifiques.
TCP (Transmission Control Protocol) est un protocole de transmission fiable, orienté connexion et basé sur un flux d'octets. Il fournit une vérification de l'intégrité des données, un contrôle de flux, un contrôle de congestion et d'autres fonctions pour garantir une transmission fiable des données.
Ce qui suit est un exemple simple d'utilisation du protocole TCP pour la communication client-serveur :
// TCP client #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <string.h> int main() { int sockfd; struct sockaddr_in server_addr; char buffer[1024]; sockfd = socket(AF_INET, SOCK_STREAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); send(sockfd, "Hello, server!", strlen("Hello, server!"), 0); recv(sockfd, buffer, sizeof(buffer), 0); printf("%s ", buffer); close(sockfd); return 0; }
// TCP server #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <string.h> int main() { int sockfd, client_sock; struct sockaddr_in server_addr, client_addr; char buffer[1024]; sockfd = socket(AF_INET, SOCK_STREAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); listen(sockfd, 5); int addr_len = sizeof(client_addr); client_sock = accept(sockfd, (struct sockaddr*)&client_addr, &addr_len); recv(client_sock, buffer, sizeof(buffer), 0); printf("%s ", buffer); send(client_sock, "Hello, client!", strlen("Hello, client!"), 0); close(client_sock); close(sockfd); return 0; }
UDP (User Datagram Protocol) est un protocole de transmission sans connexion et peu fiable. La fiabilité et la séquence des données sont. non garantis et conviennent à certains scénarios avec des exigences élevées en temps réel.
Ce qui suit est un exemple simple d'utilisation du protocole UDP pour la communication client-serveur :
// UDP client #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <string.h> int main() { int sockfd; struct sockaddr_in server_addr; char buffer[1024]; sockfd = socket(AF_INET, SOCK_DGRAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); sendto(sockfd, "Hello, server!", strlen("Hello, server!"), 0, (struct sockaddr*)&server_addr, sizeof(server_addr)); recv(sockfd, buffer, sizeof(buffer), 0); printf("%s ", buffer); close(sockfd); return 0; }
// UDP server #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <string.h> int main() { int sockfd; struct sockaddr_in server_addr, client_addr; char buffer[1024]; sockfd = socket(AF_INET, SOCK_DGRAM, 0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(8080); server_addr.sin_addr.s_addr = htonl(INADDR_ANY); bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)); int addr_len = sizeof(client_addr); recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr*)&client_addr, &addr_len); printf("%s ", buffer); sendto(sockfd, "Hello, client!", strlen("Hello, client!"), 0, (struct sockaddr*)&client_addr, addr_len); close(sockfd); return 0; }
En plus des protocoles TCP et UDP, la pile de protocoles Linux prend également en charge les protocoles réseau tels que le protocole IP, le protocole ICMP, le protocole ARP, etc. , qui forment ensemble Il fournit un système de communication réseau complet et fournit de riches fonctions de communication réseau pour les applications. En apprenant et en comprenant ces protocoles réseau, nous pouvons mieux utiliser le système d'exploitation Linux pour la programmation réseau et créer des applications réseau efficaces et fiables.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!