每发一个包,不论大小协议头会占用一定的空间 TCP头20字节,IP头20字节,MAC头14字节,共54字节

//Mac头部,总长度14字节 
typedef struct _eth_hdr 
    unsigned char dstmac[6]; //目标mac地址 
    unsigned char srcmac[6]; //源mac地址 
    unsigned short eth_type; //以太网类型 
}eth_hdr; 
//IP头部,总长度20字节 
typedef struct _ip_hdr 
    #if LITTLE_ENDIAN 
    unsigned char ihl:4;     //首部长度 
    unsigned char version:4, //版本  
    #else 
    unsigned char version:4, //版本 
    unsigned char ihl:4;     //首部长度 
    #endif 
    unsigned char tos;       //服务类型 
    unsigned short tot_len;  //总长度 
    unsigned short id;       //标志 
    unsigned short frag_off; //分片偏移 
    unsigned char ttl;       //生存时间 
    unsigned char protocol;  //协议 
    unsigned short chk_sum;  //检验和 
    struct in_addr srcaddr;  //源IP地址 
    struct in_addr dstaddr;  //目的IP地址 
}ip_hdr; 
//TCP头部,总长度20字节 
typedef struct _tcp_hdr 
    unsigned short src_port;    //源端口号 
    unsigned short dst_port;    //目的端口号 
    unsigned int seq_no;        //序列号 
    unsigned int ack_no;        //确认号 
    #if LITTLE_ENDIAN 
    unsigned char reserved_1:4; //保留6位中的4位首部长度 
    unsigned char thl:4;        //tcp头部长度 
    unsigned char flag:6;       //6位标志 
    unsigned char reseverd_2:2; //保留6位中的2位 
    #else 
    unsigned char thl:4;        //tcp头部长度 
    unsigned char reserved_1:4; //保留6位中的4位首部长度 
    unsigned char reseverd_2:2; //保留6位中的2位 
    unsigned char flag:6;       //6位标志  
    #endif 
    unsigned short wnd_size;    //16位窗口大小 
    unsigned short chk_sum;     //16位TCP检验和 
    unsigned short urgt_p;      //16为紧急指针 
}tcp_hdr;

TCP包头的更多相关文章

  1. 以太网/ IPV4/IPV6包头,TCP包头格式回顾

    问题:以太网数据包,承载的数据内容大小46~1500字节,是如何来的? 以太网数据包结构  以太网协议规定最小链路层数据包(帧)为64字节,其中以太网首部+尾部共计18字节(源/目的MAC12字节:上 ...

  2. [转]使用wireshark分析TCP/IP协议中TCP包头的格式

    本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输协议,两个进程互发数 ...

  3. Linux网络编程--wireshark分析TCP包头的格式

    摘要:     本文简介了TCP面向连接理论知识,具体讲述了TCP报文各个字段含义.并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述     TCP是面向连接的可靠传输 ...

  4. TCP/IP协议栈概述及各层包头分析

    TCP/IP协议栈中各层包头的分析 Protocol列表示的是该数据包最高层对应的协议,Length列表示该包的长度(包括从底层的协议到最高层的协议,其中包头一般是,链路层14字节,IP20字节,TC ...

  5. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...

  6. wireshark抓包工具简介以及tcp三次握手的一些含义

    wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...

  7. TCP/IP协议与UDP协议的区别

    TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接.一个TCP连接必须要经过三次“对话”才能建立起来, ...

  8. TCP协议与UDP协议的区别

    TCP协议与UDP协议的区别(转) 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  9. TCP、UDP协议间的区别(转)

    一.TCP/IP协议是一个协议簇.里面包括很多协议的.UDP只是其中的一个.之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了. TCP/IP协议集包括应用层,传输层 ...

随机推荐

  1. 二维线性表 list实现

    class Coordinate{ private int x; private int y; } List<Coordinate> list=new ArrayList<Coord ...

  2. 推荐 10 款最好的 Python IDE

    简述 Python 非常易学,强大的编程语言.Python 包括高效高级的数据结构,提供简单且高效的面向对象编程. Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE ...

  3. 瞎折腾之 Lucene.Net + MVC 搜索功能(上)

    前言 首先,关于Lucene.Net 的文章已经很多了.我这次决定写出来只是为了练练手,虽然在别人看来没什么用,但是自己确实是手动实践了一把.我个人觉得还是有意义的.爱折腾.敢于实践.才能有所收获,才 ...

  4. ASP.NET 4的Demo实践:URL路由改进支持

    从.NET框架3.5 SP1开始,微软推出了ASP.NET路由支持,从而实现了特定资源的URL与其对应的Web服务器上的物理文件之间的彻底解耦.借助于ASP.NET路由支持,开发人员可以定义一组路由规 ...

  5. HTML元素margin、padding的默认值

    HTML元素margin.padding的默认值 element margin(单位像素) padding html 0 0 body 8 0 div 0 0 h1 21 0 h2 19 0 19 0 ...

  6. (转载)DataTable使用技巧总结

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结.         一.Da ...

  7. 菜鸟学习笔记3——jQuery 选择器

    jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") ...

  8. I.MX6 AT24Cxx eeprom Linux i2c-gpio

    /************************************************************************** * I.MX6 AT24Cxx eeprom L ...

  9. 在Datatables中加入错误提示功能

    经常用Datatables的童鞋一定碰到过当采用服务端请求的时候,一旦后台出现异常,Datatables的会一直卡在那里,中间的正在处理的提示一直停留着. 为了能给用户更好的体验,需要对Datatab ...

  10. 【英语】Bingo口语笔记(36) - ʌn的发音

    同样音标 读音相同 找最有把握的一个词