IP协议详解

        IP协议是TCP/IP协议族的核心协议,也是socket网络编程的基础之一。IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。

1、IPv4头部结构

        IPv4的头部结构,其长度通常为20字节,除非含有可变长的选项部分。

        4位版本号(version)指定IP协议的版本。对于IPv4来说,其值是4。

        4位头部长度标识该IP头部有多少个32bit字节。因为4位最大能表示15,所以IP头部最长是60字节。

        8位服务类型(Type Of Service,TOS)包括一个3位的优先权字段,4位的TOS字段和1位保留字段(必须置0)。4位的TOS字段分别表示:最小延时,最大吞吐量,最高可靠性和最小费用。其中最多有一个能置为1,应用程序应该根据实际需要来设置它。比如像ssh和telnet这样的登录程序需要的是最小延迟的服务,而文件传输程序ftp则需要最大吞吐量的服务。

        16位总长度是指整个IP数据报的长度,以字节为单位,因此IP数据报的最大长度为65535(2的16次方-1)字节。但是由于MTU的限制,长度超过MTU的数据报都将被分片传输,所以实际传输的IP数据报的长度都远远没有达到最大值。

        16位标识唯一地标识主机发送的每一个数据报。其初始值由系统随机生成;每发送一个数据报,其值就加1。该值在数据报分片时被复制到每个分片中,因此同一个数据报的所有分片都具有相同的标识值。

        3位标志字段的第一位保留。第二位表示“禁止分片”。如果设置了这个位,IP模块将不对数据报进行分片。在这种情况下,如果IP数据报长度超过MTU的话,IP模块将丢弃该数据报并返回一个ICMP差错报文。第三位表示“更多分片”。除了数据报的最后一个分片外,其他分片都要把它置1。

        13位分片偏移是分片相对原始IP数据报开始处的偏移。实际的偏移值是该值左移3位(乘8)后得到的。

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

        8位协议用来区分上层协议。/etc/protocols文件定义了所有上层协议对应的Protocol字段的数值。其中,ICMP是1,TCP是6,UDP是17。

        16位头部校验和由发送端填充,接收端对其使用CRC算法以检验IP数据报头部在传输过程中是否损坏。

        32位的源端IP地址和目的端IP地址用来标识数据报的发送端和接收端。一般情况下,这两个地址在整个数据报的传递过程中保持不变,而不论它中间经过多少个中转路由器。

        IPv4最后一个选项字段是可变长的可选信息。这部分最多包含40字节,因为IP头部最长是60字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值