Sebagai sistem pengendalian sumber terbuka, susunan protokol rangkaian Linux memainkan peranan penting, bertanggungjawab untuk memproses penghantaran data rangkaian, penghalaan, pengurusan sambungan dan fungsi lain. Artikel ini akan memperkenalkan beberapa protokol rangkaian biasa dan fungsinya dalam tindanan protokol Linux, dan melampirkan contoh kod tertentu.
TCP (Transmission Control Protocol) ialah protokol penghantaran berasaskan aliran bait yang berorientasikan sambungan, boleh dipercayai. Ia menyediakan pengesahan integriti data, kawalan aliran, kawalan kesesakan dan fungsi lain untuk memastikan penghantaran data yang boleh dipercayai.
Berikut ialah contoh mudah menggunakan protokol TCP untuk komunikasi pelanggan-pelayan:
// 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) ialah protokol penghantaran tanpa sambungan dan tidak boleh dipercayai tidak dijamin, dan ia sesuai untuk sesetengah senario dengan keperluan masa nyata yang tinggi.
Berikut ialah contoh mudah menggunakan protokol UDP untuk komunikasi pelanggan-pelayan:
// 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; }
Selain protokol TCP dan UDP, susunan protokol Linux juga menyokong protokol rangkaian seperti protokol IP, protokol ICMP, protokol ARP, dll. , yang bersama-sama membentuk Ia menyediakan sistem komunikasi rangkaian yang lengkap dan menyediakan fungsi komunikasi rangkaian yang kaya untuk aplikasi. Dengan mempelajari dan memahami protokol rangkaian ini, kami boleh menggunakan sistem pengendalian Linux dengan lebih baik untuk pengaturcaraan rangkaian dan membina aplikasi rangkaian yang cekap dan boleh dipercayai.
Atas ialah kandungan terperinci Pengenalan kepada protokol rangkaian biasa dan fungsi dalam susunan protokol Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!