TCP/IP协议族详解:概述与分层结构

需积分: 9 2 下载量 190 浏览量 更新于2024-08-01 收藏 13.03MB PDF 举报
"TCP/IP详解_卷一_协议.pdf" TCP/IP详解卷一主要探讨了TCP/IP协议族的基础知识,这是互联网通信的核心。TCP/IP协议族允许不同操作系统和硬件平台的计算机进行有效通信,这一特性使其从最初的军事研究项目演变为全球最大的网络——互联网。 1.1 引言 TCP/IP起源于1960年代末,由美国政府资助的分组交换网络研究项目。随着时间的发展,它已成为计算机网络互联的主流方式,尤其在90年代以后,互联网的普及率大幅增长,涵盖了全球超过100万台计算机。TCP/IP作为一个开放系统,其定义和实现都是公开的,这使得任何人都能获取并使用这些协议,促进了互联网的快速扩张。 1.2 分层 TCP/IP协议族采用分层架构,以确保通信的高效性和灵活性。通常分为四层: 1) 链路层:负责数据链路层或网络接口层的功能,包括操作系统中的设备驱动程序和网络接口卡。它们处理与物理传输媒介(如电缆)的交互,确保数据能在网络媒介上正确传输。 2) 网络层:又称为互联网层,主要处理分组在网络中的路由选择。在这个层次,IP协议是核心,负责数据包的路由;ICMP(互联网控制报文协议)用于网络诊断和错误报告;IGMP(互联网组管理协议)用于多播成员管理。 3) 运输层:为应用层提供端到端的通信服务。TCP(传输控制协议)提供可靠的、面向连接的服务,确保数据完整传输,包括数据分段、确认、重传和拥塞控制。UDP(用户数据报协议)则是无连接的,提供简单、快速但不可靠的数据传输,适合对实时性要求较高的应用。 4) 应用层:是TCP/IP协议栈的最高层,包含了各种具体的应用协议,如HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等,直接与用户交互。 每一层都承担着特定的任务,通过这些任务的组合,TCP/IP协议族实现了跨越全球的复杂网络通信。后续章节将更深入地探讨每一层的具体协议和功能,以及它们如何协同工作,以支持互联网上的各种服务和应用。

#include <jansson.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_ECU 10 typedef struct { char ddd[16]; } ECU; typedef struct { char zhushini[16]; char qusi[16]; } Nishizhu; typedef struct { char sourceaddress[5]; char target_ip[16]; char local_ip[16]; char target_port[6]; ECU ecu[MAX_ECU]; Nishizhu nishizhu; } TCPSetting; typedef struct { TCPSetting tcp_setting; } Config; int main() { // 初始化结构体 Config config; memset(&config, 0, sizeof(Config)); strcpy(config.tcp_setting.sourceaddress, "abcd"); strcpy(config.tcp_setting.target_ip, "192.168.1.100"); strcpy(config.tcp_setting.local_ip, "192.168.1.200"); strcpy(config.tcp_setting.target_port, "12345"); strcpy(config.tcp_setting.ecu[0].ddd, "ecu1"); strcpy(config.tcp_setting.ecu[1].ddd, "ecu2"); strcpy(config.tcp_setting.nishizhu.zhushini, "zhushini"); strcpy(config.tcp_setting.nishizhu.qusi, "qusi"); // 将结构体转成json json_t *root = json_object(); json_t *tcp_setting = json_object(); json_object_set_new(root, "tcp_setting", tcp_setting); json_object_set_new(tcp_setting, "sourceaddress", json_string(config.tcp_setting.sourceaddress)); json_object_set_new(tcp_setting, "target_ip", json_string(config.tcp_setting.target_ip)); json_object_set_new(tcp_setting, "local_ip", json_string(config.tcp_setting.local_ip)); json_object_set_new(tcp_setting, "target_port", json_string(config.tcp_setting.target_port)); json_t *ecu = json_array(); for (int i = 0; i < MAX_ECU; ++i) { json_t *ecu_obj = json_object(); json_object_set_new(ecu_obj, "ddd", json_string(config.tcp_setting.ecu[i].ddd)); json_array_append_new(ecu, ecu_obj); } json_object_set_new(tcp_setting, "ecu", ecu); json_t *nishizhu = json_object(); json_object_set_new(nishizhu, "zhushini", json_string(config.tcp_setting.nishizhu.zhushini)); json_object_set_new(nishizhu, "qusi", json_string(config.tcp_setting.nishizhu.qusi)); json_object_set_new(tcp_setting, "nishizhu", nishizhu); // 保存成json文件 FILE *fp = fopen("config.json", "w"); if (fp == NULL) { printf("Failed to open file\n"); exit(1); } json_dumpf(root, fp, JSON_INDENT(4)); fclose(fp); // 释放内存 json_decref(root); return 0; } 运行上面的代码 保持的json文件中不包含ecu参数的内容

2023-06-11 上传

net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1net.ipv4.tcp_syn

2023-03-17 上传