精华内容
下载资源
问答
  • IP协议首部详细分析

    千次阅读 2016-07-22 21:54:57
    IP协议首部详细解析

    IP协议是我们学习网络协议最开始,也是最基础的协议。那么今天我们主要介绍一下有关于IP协议头格式的基本状态。那么就让我们具体看以下有关于IP协议头格式和Sniiffer Portable的IP头的相关内容吧。IP(Internet Protocol,因特网协议)是OSI第三层——网络层协议,本节仅以IPv4版本为例进行介绍。IP协议也是一个无连接的协议,主要就是负责在主机间寻址,并为数据包设定路由,在交换数据前它并不建立会话。因为它不保证正确传递。另一方面,数据在被收到时,IP不需要收到确认,所以它是不可靠的。




    IP协议头格式

    数据在经过IP网络层时,也会对数据进行封装,也就有相应的IP协议包头了。在以太网帧中,IPv4包头紧跟着以太网帧头,同时以太网帧头中的协议类型值设置为十六进制的0800。


    ◆版本(Version)

    指定IP协议的版本号。因为目前仍主要使用IPv4版本,所以这里的值通常是 0x4 (注意封包使用的数字通常都是十六进位的)。占4位。


    ◆包头长度(Internet Header Length,IHL)

    指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选项,所以这个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5。占4位。由于它是一个4比特字段,因此首部最长为60个字节,但实际上目前最多仍为24个字节。


    ◆服务类型(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(拥塞)


    ◆包长度(Total Length,TL)

    IP协议头格式中指定IP包的总长,通常以byte做单位来表示该封包的总长度此数值包括标头和数据的总和。它以字节为单位,占16位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。


    由于该字段长16比特,所以IP数据报最长可达65535字节。尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分段。而且,主机也要求不能接收超过576字节的数据报。由于TCP把用户数据分成若干段,因此一般来说这个限制不会影响TCP。UDP的应用(如RIP、TFTP、BOOTP、DNS、SNMP等),都限制用户数据报长度为512字节,小于576字节。但是,事实上现在大多数的实现允许超过8192字节的IP数据报。


    总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为46个字节(将在本章后面介绍),但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。


    ◆标识(Identification)

    每一个IP封包都有一个16位的唯一识别码。当程序产生的数据要通过网络传送时都会被拆散成封包形式发送,当封包要进行重组的时候这个ID就是依据了。占16位。

    标识字段唯一地标识主机发送的每一份数据报。通常每发送一份消息它的值就会加1。RFC791认为标识字段应该由让IP发送数据报的上层来选择。假设有两个连续的IP数据报,其中一个是由TCP生成的,而另一个是由UDP生成的,那么它们可能具有相同的标识字段。尽管这也可以照常工作(由重组算法来处理),但是在大多数从伯克利派生出来的系统中,每发送一个IP数据报,IP层都要把一个内核变量的值加1,不管交给IP的数据来自哪一层。内核变量的初始值根据系统引导时的时间来设置。


    ◆标记(Flags)

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

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

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

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

    ◆分段偏移(Fragment Offset,FO)

    IP协议头格式规定当封包被分段之后,由于网路情况或其它因素影响其抵达顺序不会和当初切割顺序一至,所以当封包进行分段的时候会为各片段做好定位记录,以便在重组的时候就能够对号入座。值为多少个字节,如果封包并没有被分段,则FO值为“0"。 占13位。 

    生存时间(Time To Live,TTL)

    生存时间字段设置了数据报可以经过的最多路由器数,表示数据包在网络上生存多久。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP消息通知源主机。这样当封包在传递过程中由於某些原因而未能抵达目的地的时候就可以避免其一直充斥在网路上面。占8位。

    ◆协议(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整个首部进行重新计算。

    ◆源地址(Source Address,SA)

    发送IP数据包的IP地址。占32位。

    ◆目的地址(Destination Address)

    接收IP数据包的IP地址。也占32位。

    ◆选项(Options)+填充(Padding)

    这两个选项较少使用,只有某些特殊的封包需要特定的控制才会利用到。共32位。这些选项通常包括:

    ◆安全和处理限制:用于军事领域

    ◆记录路径:让每个路由器都记下它的IP地址

    ◆时间戳:让每个路由器都记下它的IP地址和时间

    ◆宽松的源站选路:为数据报指定一系列必须经过的IP地址

    ◆严格的源站选路:与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址。

    以上这些选项很少被使用,而且并非所有的主机和路由器都支持这些选项。选项字段一直都是以32位作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32位的整数倍(这是首部长度字段所要求的)。

    从以上IP协议头格式可以看出,IP协议包头大小也有两种:当没有“选项"这个字段时,为160位,20个字节;当有“选项"字段时为192位,24个字节。它与TCP协议包头大小是一样的。



    关于IP协议常见的问题:

    1.为什么IP不是可靠连接的协议

    IP层没有超时和重传机制,没有连接握手协议。


    2.IP数据报经过路由器都做了哪些改动

    IP没经过一个路由器,TTL数就会减一,如果最后TTL为0了,但是依然没有到达目的地,这个IP包将会被丢弃。

    这样做了目的是为了防止出现循环回路。并且最后一跳的路由器会发送一个ICMP不可达的数据包给源IP。


    3.关于分片的问题

    IP数据包的长度为16,也就是说最大为65535个字节。但是我们知道数据链路层规定MTU最大传输单元为1500个字节。

    当IP数据包的大小超过了1500,IP数据包必须要进行分片处理。这还只是初始发送端的分片,在网络中如果某个路由器的MTU小于1500,那么还需要在路由器

    端做分片,这就给IP包的完整接收照成了很大的不确定性(我们知道数据包达到终点不一定是按照顺序的),因为万一某一个分片丢失,可能会造成真个IP重传,当然前提是高层协议支持重传。对于TCP协议,不存在分片的问题,因为TCP报头的选项字段有MSS字段,规定一个TCP包最大可传输的字节数,一般是1500-20-20=1460字节。也就是说到达IP封包的时候最大可承载数据只有1460个字节,这样就可以避免分片的问题。但是对于UDP这一类的协议,分片操作还是交给IP完成,虽然这样可以增加载荷的效率,但是稳定性会受到很大的影响。



    展开全文
  • TCP/IP协议学习之IP协议首部格式

    千次阅读 2016-01-27 19:12:58
    注:本文系学习《TCP/IP协议卷一》一书的学习笔记,为了描述精准,部分句子使用书中原文,或稍有不同但含义一样,这些句子会加粗标志。 IP协议是TCP/IP协议族中最核心的协议,所有TCP,UDP,...IP协议首部格式: 图片

    注:本文系学习《TCP/IP协议卷一》一书的学习笔记,为了描述精准,部分句子使用书中原文,或稍有不同但含义一样,这些句子会加粗标志。


    IP协议是TCP/IP协议族中最核心的协议,所有TCP,UDP,ICMP,IGMP等协议的数据都以IP数据报格式传输。

    IP协议是一种不可靠,无连接的的协议,任何可靠性需求都需要上层协议(如TCP协议)控制。


    IP协议首部格式:


    图片来自书中。


    如图中标识,最高位在左边(0bit)最低位在右边(31bit),传输顺序为0~7bit,8~15bit,16~23bit,24~31bit,这种传输顺序称之为网络字节序。

    按照顺序首部各字段详细描述:

    4位版本:IP协议的版本号,当前Internet大部分都使用第四个版本,即IPv4。常用的还包括IPv6。

    4位首部长度:IP数据报首部的长度,通常IP首部都是20个字节。注意,首部长度是用4bit表示的,单位是32bit,4字节,故一般20字节的IP数据报首部中此处的值是5,5×4=32bytes。也可以知道,IP首部最长为15×4=60bytes。

    8位服务类型(TOS):现在大多数的TCP/IP实现都不支持TOS特性。

    16位总长度:整个IP数据报的总长度,单位是字节,可知IP数据报最长为2^16=65535,但大部分网络的链路层MTU(最大传输单元)没有这么大,一些上层协议或主机也不会接受这么大的,故超长IP数据报在传输时会被分片。

    16位标志:标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加 1。

    3位标志:待学习。

    13位片位移:待学习。

    8位生存时间:TTL(Time To Live),IP数据报最多经过多路由器,每经过一个路由TTL的值就会减一,以防止没用的数据报在网络中一直存在。当TTL的值为0时,数据报就会被路由丢弃,且路由会发送一个ICMP报文通知源主机。

    8位协议:根据此字段决定该数据报由上层那个协议使用,这个过程被称之为分用。

    16位首部校验和:校验数据报首部在传输过程中是否出错,若计算结果与预期不符,则丢弃该数据报,但不生成差错报文,由上层发现并决定是否重传。

    32位源IP地址:字面意思。

    32位目的IP地址:字面意思。

    选项:可选信息,可以记录路径,时间戳等,其长度必须是32bit的整数倍,若不足则用0填充(因为4位首部长度的单位就是32bit)。此选项很少使用,因为不是所有主机和路由都支持。


    通过wireshark实际抓包截图,可对照学习:



    展开全文
  • IP协议首部结构分析

    千次阅读 2013-05-22 09:31:59
    IP协议首部主要字段 IP数据报的格式如图1所示。普通的IP首部长为20个字节(不含选项字段)。 图1 数据报格式 IP目前的协议版本号是4,因此IP有时也称作IPv4。IP协议首部的具体格式内容: ◆首部长度(IHL):...

    http://network.51cto.com/art/201009/227966.htm


    IP协议首部主要字段

    IP数据报的格式如图1所示。普通的IP首部长为20个字节(不含选项字段)。

    图1 数据报格式

    图1 数据报格式

    IP目前的协议版本号是4,因此IP有时也称作IPv4。IP协议首部的具体格式内容:

    ◆首部长度(IHL):首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(不含选项字段)字段的值是5,首部长度为20字节。

    ◆服务类型(TOS):包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位(必须置0)。

    ◆总长度字段(Total Length):整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,可以知道IP数据报中数据内容的起始位置和长度。该字段长16比特,所以,IP数据报最长可达65535字节

    ◆标识字段(Identification)、标志字段(Flags)、片偏移量字段(Fragment Offset):用来控制数据报的分片和重组。其中,标识字段唯一标识主机发送的每一份数据报,通常每发送一份报文它的值就会加1。

    ◆生存时间字段TTL(Time to Live):数据报可以经过的最多路由设备数。

    ◆首部检验和字段(Header Checksum):根据IP首部计算的检验和码。它不对首部后面的数据进行计算。

    ◆源IP地址和目的IP地址:每一份IP数据报都包含源IP地址和目的IP地址,分别指定发送方和接收方。

    ◆选项(Options):选项是最后一个字段,是可变长的可选信息。


    http://en.wikipedia.org/wiki/IPv4_header#Header


    An IP packet consists of a header section and a data section.

    An IP packet has no data checksum or any other footer after the data section. Typically thelink layer encapsulates IP packets in frames with a CRC footer that detects most errors, and typically the end-to-end TCP layer checksum detects most other errors.[11]

    Header

    The IPv4 packet header consists of 14 fields, of which 13 are required. The 14th field is optional (red background in table) and aptly named: options. The fields in the header are packed with the most significant byte first (big endian), and for the diagram and discussion, the most significant bits are considered to come first (MSB 0 bit numbering). The most significant bit is numbered 0, so the version field is actually found in the four most significant bits of the first byte, for example.

    IPv4 Header Format
    OffsetsOctet0123
    OctetBit012345678910111213141516171819202122232425262728293031
    00VersionIHLDSCPECNTotal Length
    432IdentificationFlagsFragment Offset
    864Time To LiveProtocolHeader Checksum
    1296Source IP Address
    16128Destination IP Address
    20160Options (if IHL > 5)
    Version 
    The first header field in an IP packet is the four-bit version field. For IPv4, this has a value of 4 (hence the name IPv4).
    Internet Header Length (IHL) 
    The second field (4 bits) is the Internet Header Length (IHL), which is the number of 32-bit words in the header. Since an IPv4 header may contain a variable number of options, this field specifies the size of the header (this also coincides with the offset to the data). The minimum value for this field is 5 ( RFC 791), which is a length of 5×32 = 160 bits = 20 bytes. Being a 4-bit value, the maximum length is 15 words (15×32 bits) or 480 bits = 60 bytes.
    Differentiated Services Code Point (DSCP)
    Originally defined as the Type of service field, this field is now defined by RFC 2474 for Differentiated services (DiffServ). New technologies are emerging that require real-time data streaming and therefore make use of the DSCP field. An example is Voice over IP (VoIP), which is used for interactive data voice exchange.
    Explicit Congestion Notification (ECN) 
    This field is defined in RFC 3168 and allows end-to-end notification of network congestion without dropping packets. ECN is an optional feature that is only used when both endpoints support it and are willing to use it. It is only effective when supported by the underlying network.
    Total Length 
    This 16-bit field defines the entire packet (fragment) size, including header and data, in bytes. The minimum-length packet is 20 bytes (20-byte header + 0 bytes data) and the maximum is 65,535 bytes — the maximum value of a 16-bit word. The largest datagram that any host is required to be able to reassemble is 576 bytes, but most modern hosts handle much larger packets. Sometimes subnetworks impose further restrictions on the packet size, in which case datagrams must be fragmented. Fragmentation is handled in either the host or router in IPv4.
    Identification 
    This field is an identification field and is primarily used for uniquely identifying fragments of an original IP datagram. Some experimental work has suggested using the ID field for other purposes, such as for adding packet-tracing information to help trace datagrams with spoofed source addresses. [12]
    Flags 
    A three-bit field follows and is used to control or identify fragments. They are (in order, from high order to low order):
    • bit 0: Reserved; must be zero.[note 1]
    • bit 1: Don't Fragment (DF)
    • bit 2: More Fragments (MF)
    If the DF flag is set, and fragmentation is required to route the packet, then the packet is dropped. This can be used when sending packets to a host that does not have sufficient resources to handle fragmentation. It can also be used for Path MTU Discovery, either automatically by the host IP software, or manually using diagnostic tools such as ping or traceroute.
    For unfragmented packets, the MF flag is cleared. For fragmented packets, all fragments except the last have the MF flag set. The last fragment has a non-zero Fragment Offset field, differentiating it from an unfragmented packet.
    Fragment Offset 
    The fragment offset field, measured in units of eight-byte blocks, is 13 bits long and specifies the offset of a particular fragment relative to the beginning of the original unfragmented IP datagram. The first fragment has an offset of zero. This allows a maximum offset of (2 13 – 1) × 8 = 65,528 bytes, which would exceed the maximum IP packet length of 65,535 bytes with the header length included (65,528 + 20 = 65,548 bytes).
    Time To Live (TTL) 
    An eight-bit time to live field helps prevent datagrams from persisting (e.g. going in circles) on an internet. This field limits a datagram's lifetime. It is specified in seconds, but time intervals less than 1 second are rounded up to 1. In practice, the field has become a hop count—when the datagram arrives at a router, the router decrements the TTL field by one. When the TTL field hits zero, the router discards the packet and typically sends an ICMP Time Exceeded message to the sender.
    The program traceroute uses these ICMP Time Exceeded messages to print the routers used by packets to go from the source to the destination.
    Protocol 
    This field defines the protocol used in the data portion of the IP datagram. The Internet Assigned Numbers Authority maintains a list of IP protocol numbers which was originally defined in RFC 790.
    Header Checksum 
    The 16-bit checksum field is used for error-checking of the header. When a packet arrives at a router, the router calculates the checksum of the header and compares it to the checksum field. If the values do not match, the router discards the packet. Errors in the data field must be handled by the encapsulated protocol. Both UDP and TCP have checksum fields.
    When a packet arrives at a router, the router decreases the TTL field. Consequently, the router must calculate a new checksum. RFC 1071 defines the checksum calculation:
    The checksum field is the 16-bit one's complement of the one's complement sum of all 16-bit words in the header. For purposes of computing the checksum, the value of the checksum field is zero.
    For example, consider Hex 4500003044224000800600008c7c19acae241e2b (20 bytes IP header):
    Step 1) 4500 + 0030 + 4422 + 4000 + 8006 + 0000 + 8c7c + 19ac + ae24 + 1e2b = 2BBCF (16-bit sum)
    Step 2) 2 + BBCF = BBD1 = 1011101111010001 (1's complement 16-bit sum)
    Step 3) ~BBD1 = 0100010000101110 = 442E (1's complement of 1's complement 16-bit sum)
    To validate a header's checksum the same algorithm may be used – the checksum of a header which contains a correct checksum field is a word containing all zeros (value 0):
    2BBCF + 442E = 2FFFD. 2 + FFFD = FFFF. the 1'S of FFFF = 0.
    Source address
    This field is the IPv4 address of the sender of the packet. Note that this address may be changed in transit by a network address translation device.
    Destination address
    This field is the IPv4 address of the receiver of the packet. As with the source address, this may be changed in transit by a network address translation device.
    Options
    The options field is not often used. Note that the value in the IHL field must include enough extra 32-bit words to hold all the options (plus any padding needed to ensure that the header contains an integral number of 32-bit words). The list of options may be terminated with an EOL ( End of Options List, 0x00) option; this is only necessary if the end of the options would not otherwise coincide with the end of the header. The possible options that can be put in the header are as follows:
    FieldSize (bits)Description
    Copied1Set to 1 if the options need to be copied into all fragments of a fragmented packet.
    Option Class2A general options category. 0 is for "control" options, and 2 is for "debugging and measurement". 1, and 3 are reserved.
    Option Number5Specifies an option.
    Option Length8Indicates the size of the entire option (including this field). This field may not exist for simple options.
    Option DataVariableOption-specific data. This field may not exist for simple options.
    • Note: If the header length is greater than 5, i.e. it is from 6 to 15, it means that the options field is present and must be considered.
    • Note: Copied, Option Class, and Option Number are sometimes referred to as a single eight-bit field – theOption Type.
    The following two options are discouraged because they create security concerns: Loose Source and Record Route (LSRR) and Strict Source and Record Route (SSRR). Many routers block packets containing these options. [13]

    Data

    The data portion of the packet is not included in the packet checksum. Its contents are interpreted based on the value of the Protocol header field.

    In a typical IP implementation, standard protocols such as TCP and UDP are implemented in theOS kernel, for performance reasons. Other protocols such as ICMP may be partially implemented by the kernel, or implemented purely in user software. Protocols not implemented in-kernel, and not exposed by standard APIs such asBSD sockets, are typically implemented using a 'raw socket' API.

    Some of the common protocols for the data portion are listed below:

    Protocol NumberProtocol NameAbbreviation
    1Internet Control Message ProtocolICMP
    2Internet Group Management ProtocolIGMP
    6Transmission Control ProtocolTCP
    17User Datagram ProtocolUDP
    41IPv6 encapsulationENCAP
    89Open Shortest Path FirstOSPF
    132Stream Control Transmission ProtocolSCTP

    See List of IP protocol numbers for a complete list.


    用Wireshark抓包:


    展开全文
  • IP协议首部详解

    千次阅读 2020-02-24 15:43:15
    1、IP协议概述 IP是TCP/IP协议中最为核心的协议,所有的tcp、udp、icmp、igmp等都是以IP数据报格式传输的,但它提供的是不可靠、无连接的数据包传输服务。 不可靠表示它不能保证IP数据包能成功的到达目的地 无...

    1、IP协议概述

           IP是TCP/IP协议中最为核心的协议,所有的tcp、udp、icmp、igmp等都是以IP数据报格式传输的,但它提供的是不可靠、无连接的数据包传输服务。

    • 不可靠表示它不能保证IP数据包能成功的到达目的地
    • 无连接 表示ip并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立的。
      普通的IP首部长为20个字节,除非含有选项字段。

    2、IPv4首部结构

    (1)版本号:占4位,就是IP协议的版本,通信双方的IP协议版本必须要达到一致,IPv4的版本就是4。

    (2)首部长度:占四位,因为长度为四比特,所以首部长度的最大值为1111,15,又因为首部长度代表的单位长度为32个字(也就是4个字节),所以首部长度的最小值就是0101,当然,也确实如此,大部分的ip头部中首部字节都是0101.也就是5*4=20个字节,如果是最大值15的话,ip首部的最大值就是60个字节。所以,ipv4首部长度的最大值就是60。

    (3)服务类型(Type Of Service,TOS):3位优先权字段(现已被忽略)+4位TOS字段+1位保留字段(须为0)。4位TOS字段分别表示最小延时、最大吞吐量、最高可靠性、最小费用,其中最多有一个置为1。应用程序根据实际需要来设置 TOS值,如ssh和telnet这样的登录程序需要的是最小延时的服务,文件传输ftp需要的是最大吞吐量的服务。

    (4)总长度:指整个IP数据报的长度(即:IP数据报中首部和数据的总和的长度),占16位,单位为字节,故IP数据报的最大长度为65535字节(2的16次方)。由于MTU的限制,长度超过MTU的数据报都将被分片传输,所以实际传输的IP分片数据报的长度远远没有达到最大值。

    下来的3个字段则描述如何实现分片:

    (5)标识:唯一地标识主机发送的每一个数据报,其初始值是随机的,每发送一个数据报其值就加1。同一个数据报的所有分片都具有相同的标识值。

    (6)标志:位1保留,位2表禁止分片(DF),若设置了此位,IP模块将不对数据报进行分片,在此情况下若IP数据报超过MTU,IP模块将丢弃数据报并返回一个ICMP差错报文;位3标识分片(MF),表示后面还有若干个数据报,除了数据报的最后一个分片,其他分片都要把它设置为1。

    (7)片偏移:分片相对原始IP数据报数据部分的偏移。实际的偏移值为该值左移3位后得到的,所以除了最后一个IP数据报分片外,每个IP分片的数据部分的长度都必须是8的整数倍。

    (8)生成时间TTL:数据报到达目的地之前允许经过的路由器跳数。TTL值被发送端设置,常设置为64。数据报在转发过程中每经过一个路由该值就被路由器减1.当TTL值为0时,路由器就将该数据包丢弃,并向源端发送一个ICMP差错报文。TTL可以防止数据报陷入路由循环。

    (9)协议:区分IP协议上的上层协议。在Linux系统的/etc/protocols文件中定义了所有上层协议对应的协议字段,ICMP为1,TCP为6,UDP为17。

    (10)头部校验和: 由发送端填充接收端对其使用CRC算法校验,检查IP数据报头部在传输过程中是否损坏.。计算方式如下:

           在发送端的时候,将校验和全部设置为0,然后把数据报首段数据全部进行反码相加,得到的值为校验和,放入首部的校验和字段;然后在接收端的时候,将数据报首段数据和校验和一起全部反码相加,最后若是得到零,则保留,若不是零,则说明数据报在传输过程中发生了改变,则丢弃该数据报。

    (11)IP源地址:占32位,将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。转化的方法是:将每4个字节首尾互换,将2、3字节互换。

    (12)目的地址:也占32位,转换方法和来源IP地址一样。

    (13)选项:可变长的可选信息,最多包含40字节。选项字段很少被使用。可用的IP可选项有:
          a. 记录路由: 记录数据包途径的所有路由的IP,这样可以追踪数据包的传递路径
          b. 时间戳: 记录每个路由器数据报被转发的时间或者时间与IP地址对,这样就可以测量途径路由之间数据报的传输的时间
          c. 松散路由选择: 指定路由器的IP地址列表数据发送过程中必须经过所有的路由器
          d. 严格路由选择: 数据包只能经过被指定的IP地址列表的路由器
          e. 上层协议(如TCP/UDP)的头部信息

            在IP协议中,IP协议是面向非连接的,所谓的非连接就是在数据的传递过程中,不需要检测网络是否连通,所以是不可靠的数据报协议。IP协议主要用于在主机之间的寻址和选择数据包路由。

    3、IPv6首部结构

    与IPv4相比,IPv6的头部做了如下修改:

    (1)取消了首部长度,因为IPv6的首部长度是固定的40个字节。

    (2)取消了服务类型 ,因为流标号和优先级结合起来实现了服务类型的功能。

    (3)取消了总长度字段,改用为有效载荷长度,有效载荷长度就是后面的扩展首部加上数据报中的数据。

    (4)取消了标识,标志和片偏移,因为这些功能都包含在了扩展首部里面。

    (5)取消了协议字段,改用为下一个首部,功能不变,这样更容易理解。

    (6)取消了生存时间TTL,改用为最大跳转数,功能不变。

    (7)取消了首部效验和,这样加快了路由器对数据报的处理速度,在数据链路层中,当我们发现有差错的帧就会抛弃,在运输层中,在udp中,当发现有差错就会抛弃,在tcp中,当发现有差错就会重传,直到传送到目的进程为止。因此在网路层的检测就可以精简掉。

    (8)取消了选项字段,功能归并在了扩展首部上。

     

    参考链接:

    https://blog.csdn.net/qq_29344757/article/details/78570272

    https://blog.csdn.net/qq_42058590/article/details/82918678

    展开全文
  • IP 协议首部格式以及(ARP,RARP,ICMP,IGMP)

    千次阅读 2018-04-15 11:13:35
    IP协议首部格式 地址解析协议 ARP 逆向地址解析协议 RARP 网际控制报文协议 ICMP 网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit;最低位在右边,记为31 bit 版本: 占 4 位,指 IP ...
  • 4-ip协议首部分析一

    千次阅读 2018-04-23 16:18:27
      版本:占 4 bit,指IP协议的版本,目前的IP协议版本为IPv4和IPv6,通信的计算机双方使用的IP协议版本必须一致,目前使用广泛的是IPv4版本 对应到上一篇wireshark软件中IP数据包格式中的版本信息,如下图所示: ...
  • IP协议首部格式 地址解析协议 ARP 逆向地址解析协议 RARP 网际控制报文协议 ICMP 网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit;最低位在右边,记为31 bit 版本: 占 4...
  • 关于IP协议首部长度的计算

    千次阅读 2018-12-08 10:21:15
    看到《TCP/IP详解》IP协议中提到IP数据报首部长度是一个4比特字段,因此首部最长是60个字节。最小是20个字节。那么这个怎么算的呢? 先看下IP数据报报格式及首部中各个字段,如下图: 这里只看首部长度(报文长度)...
  • IP协议首部格式 地址解析协议 ARP 逆向地址解析协议 RARP 网际控制报文协议 ICMP 网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit;最低位在右边,记为31 bit ...
  • 1、IP协议首部格式(IP协议处余网络层) IP数据报首部图片格式: 最高位在左边,记为0 bit;最低位在右边,记为31 bit 头部代码结构如下 //定义IP首部 typedef struct _iphdr{ unsigned char h_lenv
  • IP协议首部格式 地址解析协议 ARP 逆向地址解析协议 RARP 网际控制报文协议 ICMP 网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit;最低位在右边,记为31 bit ...
  • 介绍了IP协议的概念和IP首部的内容,以及相关知识点,ICMP、ARP、port、DNS。
  • IP协议 & IP首部

    2018-11-11 20:20:58
    IPv4协议详解 [1]IPv4报文结构 [2]使用tcpdump观察IPv4头部结构 在同一台机器上,使用telnet 127.0.0.1登陆本机,并用tcpdump抓取这个过程中telnet客户端和telnet服务器程序之间交换的IP数据报,操作见下图所示...
  • IP协议头部详解

    2019-12-07 12:58:46
    虚拟互联网络 A怎么和C进行通信呢? 网络层解决的问题 虚拟互联网络简介 A和B之间可以通过虚拟互联网络进行通信 IP协议的作用 IP协议地址 IP数据报 ...IP协议首部详解 常见协议和位数 ...
  • 当应用程序用TCP传送数据时,数据被传送入协议栈中,然后逐一通过每一层直到被当作一串比特流送入网络 注: UDP数据TCP数据基本一致. 唯一不同的是UDP传给IP的信息单元称作UDP数据报 其中每一层对收到的数据都...
  • MAC首部 IP首部 TCP首部介绍

    千次阅读 2020-07-24 12:12:46
    了解数据传输过程中的MAC帧首部IP数据包首部,TCP首部。了解结构是基本,为了直观显示,本文采用抓包的方式逐层验证这些首部结构。同时,列出这些首部结构在系统中C语言结构体的实现。
  • IP首部格式

    2016-11-21 11:40:34
    IP首部格式
  • TCP/IP协议栈--IP首部选项字段的分析

    千次阅读 2014-10-07 13:00:20
    IP输入函数(ipintr)将在验证分组格式(检验和,长度等)之后,确定分组是否到达目的地之前,对选项进行处理。...标准IP首部之后最多可跟 40字节的选项。 1.选项格式 IP选项字段可能包含0个或多个单独选项。选
  • IP协议

    千次阅读 2019-08-18 13:43:20
    每个bit位代表4个字节,IP长度为 length * 4字节,4个bit位表示的最大数为15,因此,IP协议的最大首部长度是15 * 4字节 = 60字节 8位服务类型:3位优先权字段(应将弃用)、4位TOS字段、1位保留字段。4位TOS字段分别...
  • IP协议首部格式 地址解析协议 ARP 逆向地址解析协议 RARP 网际控制报文协议 ICMP 网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit;最低位在右边,记为31 bit 版本: 占 4...
  • 太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

    万次阅读 多人点赞 2020-05-07 09:30:15
    OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为...
  • IP首部

    千次阅读 多人点赞 2019-03-17 12:32:15
    IP 网际协议(Internet Protocol, IPIP数据报首部的格式。 首部最小20个字节,最大60个字节。最小时就是只有固定部分(每个单位32bit,也就是4个字节,共5行,就是20个字节),一个单位指的是一行。 ...
  • 90-IP 协议(基础)

    千次阅读 2017-05-16 16:04:20
    IP 协议是 TCP/IP 协议族中最核心的协议,TCP、UDP、ICMP 等众多协议需要依赖它工作。1. IP 首部1.1 IP 首部格式 图1 IP 首部 IP 首部相比 TCP 首部要简单的多。因为 TCP 是可靠协议,所以需要更多的字段。1.2 ...
  • IP协议是TCP/IP协议族中最核心的协议,它提供不可靠、无连接的数据报传输服务。所以理解IP协议对于我们学习网络至关重要。 IP首部 重要字段介绍: 4bit首部长度:以4字节为单位,决定了IP首部长度最大为15*4=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,573
精华内容 21,829
关键字:

ip协议首部