nmap –traceroute -v 121.15.207.254 -Pn
===========================================================
每一层数据是由上一层数据+本层首部信息组成的,其中每一层的数据 ,称为本层的协议数据单元 ,即PDU.
应用层数据在传输层添加TCP报头后得到的PDU被称为 Segment(数据段 ),图示为TCP段
传输层的数据(TCP段)传给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包); 图示为IP数据包
网络层数据报(IP数据包)被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧),图示为以太网帧。
最后,帧被转换为比特,通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
以太网首部
IP数据包格式
1) 版本号 4位:表示IP协议的版本号,如目前广泛使用的是IPv4,还有其他版本的IP协议,如IPv6。通信两端协议必须一致。一般的值为0100(IPv4),0110(IPv6)。
2) 首部长度:占 4 位,可表示的最大十进制数值是 15。请注意,这个字段所表示数的单位是32位字 ( 1 个32位字长是4 字节),因此,当 IP 的首部长度为 1111 时 (即十进制的 15),首部长度就达到 60字节。当 IP 分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在 4字节的整数倍开始,这样在实现 IP协议时较为方便。首部长度限制为 60字节的缺点是有时可能不够用。这样做的目的是希望用户尽量减少开销。最常用的首部长度就是 20 字节 (即首部长度为 0101),这时不使用任何选项。
3) 服务: 占 8 位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务 DS (DifferentiatedServices)。只有在使用区分服务时,这个字段才起作用。
4) 总长度:总长度指首都及数据之和的长度,单位为字节。因为总长度字段为 16位,所以数据报的最大长度为 216-1=65 535字节。 在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,即最大传送单元 MTU (Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度 (即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
5) 标识符: 占 16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1,并将此值赋给标识字段。但这个“标识”并不是序号,因为 IP是无连接的服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
6) 标志:占3 位,但目前只有2位有意义。 标志字段中的最低位记为 MF (More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片
中的最后一个。标志字段中间的一位记为 DF(Don't Fragment),意思是“不能分片”。只有当 DF=0时才允许分片。
7)片偏移:占 13位。较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以 8个字节为偏移单位。这就是说,每个分片的长度一定是 8字节 (64位)的整数倍。\
8)生存时间:占 8位,生存时间字段常用的英文缩写是TTL (Time To Live),其表明数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜围子,因而白白消耗网络资源。最初的设计是以秒作为 TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于 1 秒,就把TTL值减 1。当 TTL值为 0时,就丢弃这个数据报。
9) 协议:占 8 位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
比较常用的协议号:
1 ICMP 2 IGMP 6 TCP 17 UDP 88 IGRP 89 OSPF
10) 首部检验和:占 16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,都要重新计算一下首都检验和 (一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
11) IP源地址: 32位IP地址
12) IP目的地址: 32位IP地址
TCP报文数据格式
1)TCP源端口(Source Port):16位的源端口包含初始化通信的端口号。源端口和IP地址的作用是标识报文的返回地址。
2)TCP目的端口(Destination Port):16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。
3)序列号(Sequence Number):TCP连线发送方向接收方的封包顺序号。
4)确认序号(Acknowledge Number):接收方回发的应答顺序号。
5)头长度(Header Length):表示TCP头的双四字节数,如果转化为字节个数需要乘以4。
6)URG:是否使用紧急指针,0为不使用,1为使用。
7)ACK:请求/应答状态。0为请求,1为应答。
8)PSH:以最快的速度传输数据。
9)RST:连线复位,首先断开连接,然后重建。
10)SYN:同步连线序号,用来建立连线。
11)FIN:结束连线。如果FIN为0是结束连线请求,FIN为1表示结束连线。
12)窗口大小(Window):目的机使用16位的域告诉源主机,它想收到的每个TCP数据段大小。
13)校验和(Check Sum):这个校验和和IP的校验和有所不同,不仅对头数据进行校验还对封包内容校验。
14)紧急指针(Urgent Pointer):当URG为1的时候才有效。TCP的紧急方式是发送紧急数据的一种方式。
UDP报文数据格式
1)源端口(Source Port):16位的源端口域包含初始化通信的端口号。源端口和IP地址的作用是标识报文的返回地址。
2)目的端口(Destination Port):6位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。
3)封包长度(Length):UDP头和数据的总长度。
4)校验和(Check Sum):和TCP和校验和一样,不仅对头数据进行校验,还对包的内容进行校验。
http报文数据格式
ARP报头结构
硬件类型 |
协议类型 |
|
硬件地址长度 |
协议长度 |
操作类型 |
发送方的硬件地址(0-3字节) |
||
源物理地址(4-5字节) |
源IP地址(0-1字节) |
|
源IP地址(2-3字节) |
目标硬件地址(0-1字节) |
|
目标硬件地址(2-5字节) |
||
目标IP地址(0-3字节) |
||
1)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;
2)协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);
3)硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
4)操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
5)发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;
6)发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;
7)发送方IP(0-1字节):源主机硬件地址的前2个字节;
8)发送方IP(2-3字节):源主机硬件地址的后2个字节;
9)目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;
10)目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;
11)目的IP(0-3字节):目的主机的IP地址。
ARP的工作原理如下:
1.首先,每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。
2.当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
3.网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
4.源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
–
–
–
评论前必须登录!
注册