当前位置: 首页 > news >正文

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协议结构体定义:

#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()

http://www.lryc.cn/news/307545.html

相关文章:

  • 内部控制提纲
  • 江科大stm32 定时器 TIM输出比较--学习笔记
  • VHDL-2008语言支持
  • linux系统git的安装和配置
  • oracle11g数据库 冷备份与冷恢复
  • 考研数据结构算法机试训练1
  • SAP PO接口行项目json缺少中括号[]问题
  • STM32_DS18B20_1_芯片简介及初始化配置
  • 每天一个数据分析题(一百六十四)
  • 单词倒排——c语言解法
  • Python + Selenium —— 网页元素定位之class name定位!
  • matlab simulink变压器温度仿真
  • 设计模式七:责任链模式
  • Git,GitHub与GitLab分别是什么?有什么关系和区别?
  • 【Spring连载】使用Spring Data访问 MongoDB----Template API 查询Documents
  • git describe
  • React Switch用法及手写Switch实现
  • PowerShell执行策略:确保脚本安全执行的关键
  • LeetCode 热题 100 | 图论(上)
  • 跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture
  • 多个值时 if [ -z 报错 binary operator expected
  • 如何使用ChatGPT创建一份优质简历
  • k8s(6)
  • 自动驾驶框架:自动驾驶汽车定位-感知-规划-决策-控制概述,按照我的架构图理解:决策决定的是速度,规划决定的是路径(架构理解推荐)
  • Gemma
  • 淘宝关键词搜索API、搜索商品接口、商品价格监控
  • vue实现水印功能
  • 记录一下我的Ruby On Rails的systemd服务脚本
  • 【计算机网络】传输层——TCP和UDP详解
  • stm32和嵌入式linux可以同步学习吗?