TCP/IP-常用网络协议自定义结构体

1、TCP/IP模型:

2、TCP/IP- 各层级网络协议(从下往上):

1)数据链路层:

ARP: 地址解析协议,用IP地址获取MAC地址的协议,通过ip的地址获取mac地

RARP: 逆地址解析协议, // zhangzx:反过来的,通过mac的地址获取ip地址

2)网络层:

IP:网际协议

ICMP:控制报文协议, ping

3)传输层:

TCP: 面向连接的可靠传输协议

UDP: 无连接的传输协议

4)应用层:

HTTP:

FTP:

TELNET:

自定义协议:

3、网络中传输的数据包:

1.ping //zhangzx:经常使用ping命令,就是icmp协议

数据包:mac层协议,ICMP协议

2.www.sohu.com

数据包:mac层协议,IP层协议,TCP层协议,HTTP协议

3.qt聊天室

数据包:mac层协议,IP层协议,TCP层协议,私聊消息结构体

4、以太网、ip、tcp、udp、icmp协议结构体定义:

cpp 复制代码
#pragma once

#pragma pack(1)

typedef struct ether_header {
	unsigned char ether_dhost[6];   //目的MAC地址
	unsigned char ether_shost[6];   //源MAC地址
	unsigned short ether_type;     //协议类型
}ETHHEADER, *PETHHEADER;


typedef struct ipv4_header {
	unsigned char ver_ihl;          //版本 (4 bits) + 首部长度 (4 bits)
	unsigned char tos;             //服务类型
	unsigned short tlen;            //数据报总长度
	unsigned short identification;    //标识
	unsigned short flags_fo;        //标志 (3 bits) + 片偏移 (13 bits)
	unsigned char ttl;             //生存时间
	unsigned char proto;           //协议
	unsigned short crc;            //首部校验和
	unsigned int sourceIP;              //源IP地址
	unsigned int destIP;              //目的IP地址
}IPHEADER, *PIPHEADER;

typedef struct tcp_header {
	unsigned short SourPort;       //源端口号  
	unsigned short DestPort;       //目的端口号
	unsigned int SeqNo;       //序号
	unsigned int AckNo;       //确认序号
	unsigned char HLen;          //首部长度(保留位)
	unsigned char Flag;           //标识(保留位)
	unsigned short Window;       //窗口大小
	unsigned short ChkSum;       //校验和
	unsigned short UrgPtr;        //紧急指针
}TCPHEADER, *PTCPHEADER;

typedef struct udp_header {
	unsigned short sport;          //源端口号
	unsigned short dport;          //目的端口号
	unsigned short len;            //数据报长度
	unsigned short crc;            //校验和
}UDPHEADER, *PUDPHEADER;

typedef struct icmp_heard
{
	unsigned char icmp_type; //type of message(报文类型)   
	unsigned char icmp_code; //type sub code(报文类型子码)   
	unsigned short icmp_cksum; //校验和
	unsigned short icmp_id;    //标识,发送和回收的得一致
	unsigned short icmp_seq;
	unsigned char icmp_data[1];  //数据, 1个字节其实是个占位符
}ICMPHEADER, *PICMPHEADER;

#pragma pack()
相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
wuyk5553 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
XUEYUAN52123 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
QYRdata3 天前
年均增速24.2%!机器人数据湖未来六年增长动能强劲
网络·机器人·服务发现
CHENKONG_CK3 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
chshang19923 天前
工业路由器是什么?浅谈5G工业网络中的IR602
网络·物联网·5g·智能路由器
萧瑟余晖3 天前
Netty 核心组件与 Reactor 模型详解
网络·架构
ITxiaobing20233 天前
IP 定位服务选型指南:从准确率到工程落地的技术考察
linux·服务器·网络
wuyk5553 天前
【Socket 进阶之路】第 9 章 Linux 网络服务量产稳定性优化|心跳保活、TIME_WAIT、SO_LINGER、内存池、断线重连、完整异常防护框架
linux·服务器·开发语言·网络·物联网
z落落3 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp