[2017年整理]TCP-IP数据包结构详解

上传人:豆浆 文档编号:910574 上传时间:2017-05-21 格式:DOCX 页数:3 大小:40.47KB
返回 下载 相关 举报
[2017年整理]TCP-IP数据包结构详解_第1页
第1页 / 共3页
[2017年整理]TCP-IP数据包结构详解_第2页
第2页 / 共3页
[2017年整理]TCP-IP数据包结构详解_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《[2017年整理]TCP-IP数据包结构详解》由会员分享,可在线阅读,更多相关《[2017年整理]TCP-IP数据包结构详解(3页珍藏版)》请在金锄头文库上搜索。

1、一般来说,网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作,但是一些特殊的情况下,就需要深入的理解网络数据包的结构,以及协议分析。如:网络监控,故障排查等IP 包是不安全的,但是它是互联网的基础,在各方面都有广泛的应用。由 IP 协议衍生的协议族有 10 数种(据我所知) ,以后还会出现更多的基于 IP 的协议先从实际出发吧!一般我们在谈上网速度的时候,专业上用带宽来描述,其实无论说网速或者带宽都是不准确的,呵呵。比如:1 兆,512K有些在学校的学生,也许会有疑问,明明我的业务是 1M,为什么下载速度到 100K 就飙不上去了?512K 的为什么 50 多 K 就封顶了?这

2、里所说的 1M 是指 1Mbps = 1 Million Bits Per Second,也就是 1M 比特每秒,即一秒钟传输 1048576 个二进制位。我们知道一个字节是 8 个二进制位。好,又来问题了。即便这样子,1M=10487568=1310721024=128K。那也应该有 128K 啊,为什么下载速度还是很少到 120K,110K 都谢天谢地了。看完本文,你的帐就对了IP 数据包结构:如图,一个刻度表示 1 个二进制位(比特) 。1-1.版本 4 位,表示版本号,目前最广泛的是 4=B1000,即常说的 IPv4;相信 IPv6 以后会广泛应用,它能给世界上每个纽扣都分配一个 I

3、P 地址。1-2.头长 4 位,数据包头部长度。它表示数据包头部包括多少个 32 位长整型,也就是多少个 4 字节的数据。无选项则为 5(红色部分) 。1-3.服务类型,包括 8 个二进制位,每个位的意义如下:过程字段:3 位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常) 7(网络控制)延迟字段:1 位,取值: 0(正常) 、1(期特低的延迟) 流量字段:1 位,取值: 0(正常) 、1(期特高的流量)可靠性字段:1 位,取值: 0(正常) 、1(期特高的可靠性)成本字段:1 位,取值: 0(正常) 、1(期特最小成本)保留字段:1 位 ,未使用1-4.包裹总长 16 位,

4、当前数据包的总长度,单位是字节。当然最大只能是 65535,及64KB。2-1.重组标识 16 位,发送主机赋予的标识,以便接收方进行分片重组。2-2.标志 3 位,他们各自的意义如下:保留段位(2):1 位,未使用不分段位(1):1 位,取值:0 (允许数据报分段) 、1(数据报不能分段)更多段位(0):1 位,取值:0 (数据包后面没有包,该包为最后的包) 、1(数据包后面有更多的包)2-3.段偏移量 13 位,与更多段位组合,帮助接收方组合分段的报文,以字节为单位。3-1.生存时间 8 位,经常 ping 命令看到的 TTL(Time To Live)就是这个,每经过一个路由器,该值就减

5、一,到零丢弃。3-2.协议代码 8 位,表明使用该包裹的上层协议,如 TCP=6,ICMP=1,UDP=17 等。3-3.头检验和 16 位,是 IPv4 数据包头部的校验和。4-1.源始地址,32 位 4 字节,我们常看到的 IP 是将每个字节用点( .)分开,如此而已。5-1.目的地址,32 位,同上。6-1.可选选项,主要是给一些特殊的情况使用,往往安全路由会当作攻击而过滤掉,普联(TP_LINK)的 TL-ER5110 路由就能这么做。7-1.用户数据。TCP 数据包结构:1-1.源始端口 16 位,范围当然是 0-65535 啦。1-2.目的端口,同上。2-1.数据序号 32 位,T

6、CP 为发送的每个字节都编一个号码,这里存储当前数据包数据第一个字节的序号。3-1.确认序号 32 位,为了安全,TCP 告诉接受者希望他下次接到数据包的第一个字节的序号。4-1.偏移 4 位,类似 IP,表明数据距包头有多少个 32 位。4-2.保留 6 位,未使用,应置零。4-3.紧急比特 URG当 URG1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据 )。4-3.确认比特 ACK只有当 ACK1 时确认号字段才有效。当 ACK0 时,确认号无效。参考 TCP 三次握手4-4.复位比特 RST(Reset) 当 RST1 时,表明 TCP 连

7、接中出现严重差错(如由于主机崩溃或其他原因) ,必须释放连接,然后再重新建立运输连接。参考 TCP 三次握手4-5.同步比特 SYN同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。参考TCP 三次握手4-6.终止比特 FIN(FINal)用来释放一个连接。当 FIN1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。4-7.窗口字段 16 位,窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。5-1.包校验和 16 位,包括首部和数据这两部分。在计算检验和时,要在

8、 TCP 报文段的前面加上 12 字节的伪首部。5-2.紧急指针 16 位,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。6-1.可选选项 24 位,类似 IP,是可选选项。6-2.填充 8 位,使选项凑足 32 位。7-1.用户数据 可以看出,每个 IP 包至少要 20 字节的头部长度,这些与下载内容无关,加上目前多数传输,包括 http 协议(就是 IE 直接下载) ,都是基于TCP 协议的,所以 IP 包裹还要从用户数据中扣除 20 字节的 TCP 包头,这里已经是 40 字节,加上其他程序的连接,状态确认等等包裹,因而算出来要比理论值要小。另外网络环境(包括稳定因素和传输节点的转发率)也是影响下载速度的重要原因

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号