TCP包头
每发一个包,不论大小协议头会占用一定的空间 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包头的更多相关文章
- 以太网/ IPV4/IPV6包头,TCP包头格式回顾
问题:以太网数据包,承载的数据内容大小46~1500字节,是如何来的? 以太网数据包结构 以太网协议规定最小链路层数据包(帧)为64字节,其中以太网首部+尾部共计18字节(源/目的MAC12字节:上 ...
- [转]使用wireshark分析TCP/IP协议中TCP包头的格式
本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输协议,两个进程互发数 ...
- Linux网络编程--wireshark分析TCP包头的格式
摘要: 本文简介了TCP面向连接理论知识,具体讲述了TCP报文各个字段含义.并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输 ...
- TCP/IP协议栈概述及各层包头分析
TCP/IP协议栈中各层包头的分析 Protocol列表示的是该数据包最高层对应的协议,Length列表示该包的长度(包括从底层的协议到最高层的协议,其中包头一般是,链路层14字节,IP20字节,TC ...
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...
- wireshark抓包工具简介以及tcp三次握手的一些含义
wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...
- TCP/IP协议与UDP协议的区别
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接.一个TCP连接必须要经过三次“对话”才能建立起来, ...
- TCP协议与UDP协议的区别
TCP协议与UDP协议的区别(转) 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
- TCP、UDP协议间的区别(转)
一.TCP/IP协议是一个协议簇.里面包括很多协议的.UDP只是其中的一个.之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了. TCP/IP协议集包括应用层,传输层 ...
随机推荐
- SVN 显示灰色减号代表什么意思
灰色减号(ignored):意思就是忽略的意思,不对其进行版本控制,忽略对其进行的任何操作
- 导出excel小结(C#,.NET,Wpf)
range.NumberFormatLocal = "@"; //设置单元格格式为文本 range.NumberFormatLocal = "@&quo ...
- web.xml中load-on-startup的作用(转)
web.xml中load-on-startup的作用 如下一段配置,熟悉DWR的再熟悉不过了:<servlet> <servlet-name>dwr-invoker< ...
- jquery响应回车事件
简单地记下jquery实现回车事件,代码如下: 全局: $(function(){document.onkeydown = function(e){ var ev = document.all ...
- UTF8存储与显示
存储肯定是二进制存储,同一个字符(汉子)在不同的字符集下有对应的值,一个字符集相当于一个密码表,键名为字符,键值为二进制数(可表示为十进制,十六进制) UTF8是一个unicode字符集的编码规则,也 ...
- 深入理解ob_flush/flush
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑… 其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情.. ob_* ...
- c可变参数函数
C函数要在程序中用到以下这些宏: <pre lang="c" escaped="true">void va_start( va_list arg_p ...
- phonegap修改软件名称和图标
修改app 图标 打开AndroidManifest.xml文件 修改application 节点 <application android:allowBackup="true&quo ...
- rsync同步时报“auth failed on module”错误的可能原因
关于这个auth失败的问题,有以下可能的情况: 1.密码输入错误: 请再次确认你登录用户的密码无误 2.secrets file格式错误: secrets file的文件格式是 upload ...
- python开发中常见的小坑
(1)可变参数类型作为函数参数默认值,函数参数默认值的设置在Python中只会被执行一次,也就是定义该函数的时候. 解决办法,设置为None,然后判断 (2)Python中的变量名解析遵循所谓的LEG ...