网络安全之协议首部

以太网协议首部

eth


IP协议首部

◆服务类型(Type of Service,TOS)

定义IP封包在传送过程中要求的服务类型,共由8个bit组成其中每个bit的组合分别代表不同的意思。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。具体如下:

◆000..... (Routine): 过程字段,占3位。设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制)

◆...0....(Delay):延迟字段 ,占1位,取值:0(正常)、1(期特低的延迟)

◆....0...(Throughput):流量字段,占1位。取值:0(正常)、1(期特高的流量)

◆.....0..(Reliability) :可靠性字段,占1位。取值:0(正常)、1(期特高的可靠性)

◆…..0.(ECN-Capable Transport):显式拥塞指示传输字段,占1位。由源端设置,以显示源端节点的传输协议是支持ECN(Explicit Cogestion Notifica tion,显式拥塞指示)的。取值:0(不支持ECN)、1(支持ECN)

◆.......0(Congestion Experienced):拥塞预警字段,占1位。取值:0(正常,不拥塞)、1(拥塞)

◆标记(Flags)

这是当封包在传输过程中进行最佳组合时使用的3个bit的识别记号。占3位。

◆0(Reserved Fragment):保留分段。当此值为0的时候表示目前未被使用。

◆.0.(Don't Fragment):不分段。当此值为0的时候表示封包可以被分段,如果为1则不能被分割。 

◆..0( More Fragment):更多分段。当上一个值为0时,此值为0就示该封包是最後一个封包,如果为1则表示其後还有被分割的封包。

◆协议(Protocol,PROT)

指该封包所使用的网络协议类型,如ICMP、DNS等。占8位。各协议对应的值如表1所示。

表1 协议号

协议号

协议

协议号

协议

00

IP

22

XNS-IDP

01

ICMP

27

RDP

02

IGMP

29

ISO-TP4

03

GGP

36

XTP

04

IP-ENCAP

37

DDP

05

ST

39

IDPR-CMTP

06

TCP

73

RSPF

08

EGP

81

VMTP

12

PUP

89

OSPFIGP

17

UDP

94

IPIP

20

HMP

98

ENCAP

◆头校验和(Header checksum)

指IPv4数据报包头的校验和。这个数值用来检错用的,用以确保封包被正确无误的接收到。当封包开始进行传送后,接收端主机会利用这个检验值会来检验余下的封包,如果一切无误就会发出确认信息表示接收正常。与UDP和TCP协议包头中的校验和作用是一样的。占16位。

首部检验和字段是根据IP首部计算的检验和码,不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP协议在它们各自的首部中均含有同时覆盖首部和数据检验和码。

IP协议头格式规定了:计算一份数据报的IP检验和,首先把检验和字段置为0。然后,对首部中每个16位进行二进制反码求和(整个首部看成是由一串16位的字组成),结果存在检验和字段中。当接收端收到一份IP数据报后,同样对首部中每个16 位进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全1(即检验和错误),那么IP就丢弃收到的数据报。但是不生成差错消息,由上层去发现丢失的数据报并进行重传。

ICMP、IGMP、UDP和TCP都采用相同的检验和算法,尽管TCP和UDP除了本身的首部和数据外,在IP首部中还包含不同的字段。由于路由器经常只修改TTL字段(减1),因此当路由器转发一份消息时可以增加它的检验和,而不需要对IP整个首部进行重新计算。

TCP协议首部

tcp

6个标志位: 


URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据。


ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。 


PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。 


RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误。 


SYN 置1时用来发起一个连接。 


FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。


    


其中URG不能和PSH标志位同时使用。


URG为紧急数据标志,如果URG为1,表示本数据包中包含紧急数据。此时紧急数据指针表示的值有效,它表示在紧急数据之后的第一个字节的偏移值(即紧急数据的总长度)。


ACK为确认标志位。如果ACK为1,表示数据包中的确认号有效。


PSH位,表示强迫数据传输。


RST标志位用来复位一条连接。当RST=1时,表示出现严重错误,必须释放连接,然后再重新建立。


SYN标志位用来建立连接,如果SYN=1而ACK=0,表明它是一个连接请求;如果SYN=1且ACK=1,则表示同意建立一个连接。


FIN为1时,表示数据已经发送完毕,希望释放连接。


    


不合法的标志位组合。


1、所有标志位都为0。


2、SYN和FIN同时被置1。


3、SYN和RST同时被置1。


4、FIN和RST同时被置1。


5、FIN位被置1,但ACK位没有被置1。


6、PSH位被置1,但ACK位没有被置1。


7、URG位被置1,但ACK位没有被置1。


  



UDP协议首部

udp

DNS首部


标识(2字节):可以看作是DNS报文的ID,对于相关联的请求报文和应答报文,这个字段是相同的,由此可以区分DNS应答报文是哪个请求报文的响应。

 标志(2字节):这部分非常重要,需要逐比特分析。再借个图:
 
 
    QR(1比特):查询/响应的标志位,1为响应,0为查询。
 
    opcode(4比特):定义查询或响应的类型(若为0则表示是标准的,若为1则是反向的,若为2则是服务器状态请求)。
    AA(1比特):授权回答的标志位。该位在响应报文中有效,1表示名字服务器是权限服务器(关于权限服务器以后再讨论)
    TC(1比特):截断标志位。1表示响应已超过512字节并已被截断(依稀好像记得哪里提过这个截断和UDP有关,先记着)
    RD(1比特):该位为1表示客户端希望得到递归回答(递归以后再讨论)
    RA(1比特):只能在响应报文中置为1,表示可以得到递归响应。
    zero(3比特):不说也知道都是0了,保留字段。
   rcode(4比特):返回码,表示响应的差错状态,通常为0和3,各取值含义如下:
0          无差错
1          格式差错
2          问题在域名服务器上
3          域参照问题
4          查询类型不支持
5          在管理上被禁止
6          -- 15 保留



ARP首部


ICMP首部


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值