下面这些TCP/IP数据包是我在进行Socket及Wipcap网络编程过程中曾经用到过的数据包结构体, 这些东西平时看起来不起眼,真正用到的时候就会觉得非常有用......

以太帧头格式结构体,共14个字节:

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

IPv4报头格式结构体,共20个字节:

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;            //首部校验和
u_char ip_src[4];              //源IP地址
u_char ip_dst[4];              //目的IP地址
    }IPHEADER,*PIPHEADER;

IPv6报头格式结构体,共40个字节:

typedef struct ipv6_header {
u_char ver_tf;                //版本号(4 bit)
u_char traffic;                //优先级(8 bit)
u_short label;                //流标识(20 bit)
u_char length[2];             //报文长度(16 bit)
u_char next_header;           //下一头部(8 bit)
u_char limits;                //跳数限制(8 bit)
u_char Srcv6[16];            //源IPv6地址(128 bit)
u_char Destv6[16];           //目的IPv6地址(128 bit)
}IPv6_HEADER,*PIPv6_HEADER;

TCP报头格式结构体,共20个字节:

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

UDP报头格式结构体,共8个字节:

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

TCP/IP各种数据包结构体的更多相关文章

  1. TCP/IP协议数据包文件PCAP分析器

    一.设计原理 1.PCAP文件构成 参考http://blog.csdn.net/gulu_gulu_jp/article/details/50494909 PCAP文件由一个PCAP文件头和多个PC ...

  2. 【VS开发】【DSP开发】TCP和UDP数据包结构

    TCP (Transport Control Protocol)传输控制协议: 1.TCP数据包的分组格式: A,源端口:标识源端应用进程. B, 目的端口:标识目的端应用进程. C, 序号:在SYN ...

  3. TCP/IP数据包结构具体解释

    [关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构, ...

  4. TCP/IP数据包结构详解

    一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析.如:网络监控,故障排查等…… IP包是不安全的,但是 ...

  5. 【转载】TCP数据包结构

    最近在研究TCP协议,找了点资料,感觉很经典,所以转载过来. 如果本文中图片不能观看,请链接原始地址:http://xinxiangsui2018.blog.163.com/blog/static/1 ...

  6. [转]SOCKET通信中TCP、UDP数据包大小的确定

    TCP.UDP数据包大小的确定 UDP和TCP协议利用端口号实现多项应用同时发送和接收数据.数据通过源端口发送出去,通过目标端口接收.有的网络应用只能使用预留或注册的静态端口:而另外一些网络应用则可以 ...

  7. [转]TCP、UDP数据包大小的确定

       TCP.UDP数据包大小的确定   http://blog.163.com/jianlizhao%40126/blog/static/1732511632013410101827640/   U ...

  8. TCP、UDP数据包大小的限制(UDP数据包一次发送多大为好)——数据帧的物理特性决定的,每层都有一个自己的数据头,层层递减

    1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...

  9. TCP、UDP数据包大小的限制

    版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa 原创文章,转载请标明出处. https://blog.csdn.net/caoshangpa/article/de ...

随机推荐

  1. CTP 下单返回错误: 没有报单权限 和字段错误需要注意的问题

    没有报单权限一般被认为期货公司没有开权限, 但是更多的问题是没有填写 BrokerId, InvestorId 下单字段错误注意一个容易忽略的地方: a. order 应该全部设为0, b. orde ...

  2. Maven私服搭建(Nexus Repository Manager 3)

    下载和安装 下载地址:https://help.sonatype.com/repomanager3/download 注意:Nexus Repository Manager 3是一个Java服务器应用 ...

  3. 小试JVM工具

    一.前言 工欲善其事必先利其器,jdk自带了很多工具,利用好这些工具能够帮我们获取想要的数据(运行日志.异常堆栈.GC日志.线程快照.堆转储快照等),从而快速的分析数据.定位问题. 二.jps:虚拟机 ...

  4. Android近场通信---NFC基础(四)(转)

    转自http://blog.csdn.net/think_soft/article/details/8184539 从Intent中获取信息 如果因为NFC的Intent而启动一个Activity,那 ...

  5. Codeforces 1132D(二分模拟)

    要点 二分显然,关键在于怎么判断 题解方法:开k个队列代表每个时间有哪些电脑会挂掉,这部分O(n)预处理一下,之后扫一遍时间,每个时间点贪心选取最靠前的会挂的电脑未雨绸缪给它充电,然后看看充电以后要不 ...

  6. DTO和ViewModel的区别

    Data Transfer Object 数据传输对象 ViewModel 视图实体(我们在新建MVC项目是会发现Model文件夹下会有一些ViewModel实体) 简单的理解一下两者之间的区别,举个 ...

  7. babel-loader7和babel8版本的问题

    根据官网https://www.npmjs.com/package/babel-loader要对应版本 一.babel7.X版本 1.要安装的包  第1套包:npm i babel-core babe ...

  8. (转)Linux下清理Cache方法

    频繁的文件访问会导致系统的Cache使用量大增, 系统运行缓慢. 1 首先用free 命令查看内存的使用:$ free -m             total       used       fr ...

  9. Linux下的I/O复用

    读书笔记 I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要. Linux下实现I/O复用的系统调用主要有select, poll, epoll. select: 用户通过3个参数 ...

  10. Azure 项目构建 – 构建直播教学系统之媒体服务篇

    本课程主要介绍如何在 Azure 平台上快速构建和部署基于 Azure 媒体服务的点播和直播教学系统, 实践讲解如何使用 Azure 门户创建媒体服务, 配置视频流进行传输,连接 CDN 加速等. 具 ...