IP
我们之前讲的TCP/IP五层协议中的另一位主角就在这里了,IP协议相对来说也是我们需要掌握得深一点的一个协议.这里我们主要了解一下IP报头的各个字段的意思:
4位版本号(version)
指定IP协议的版本,对于IPv4来说,就是4。
之前几年由于某些原因,一些比较重要的企业都是要升级成IPv6的.
IPv4的长度就是4个字节,32个比特位,对于现在的设备来说已经有点相形见绌了,升级到48比特之后就显得绰绰有余了!!
4位头部长度(header length)
IP头部的长度是多少个32bit,也就是 length * 4 的字节
数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
8位服务类型(Type Of Service)
3位优先权字段(已经弃用),4位TOS字段,和1位保留
字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
16位总长度(total length)
IP数据报整体占多少个字节。
16位标识(id)
唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
3位标志字段
第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。
13位分片偏移(framegament offset)
是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
8位协议
表示上层协议的类型。
16位头部校验和
使用CRC进行校验,来鉴别头部是否损坏。
32位源地址和32位目标地址
表示发送端和接收端。
选项字段(不定长,最多40字节)
里面会有些小玩意.