linux高性能服务器网络编程第二章

ip服务的特点:

无状态、不可靠、无连接

ipv4的结构:

4位版本号,IPV4为4

4位头部长度

8位TOS,三位代表优先权,四位代表最小延时、最大吞吐量、最高可靠性、最小费用

16位总长度(字节数),是指ip数据报的长度,以字节为单位,最大长度到65535字节,但由于MTU限制,到不了那么大;

16位标识,唯一的标识主机发送的每一个数据报,初始值由系统生成;

3位标志段,第一位保留,第二位禁止分片(不对数据分片,IP数据长超过MTU的情况下,IP模块丢弃数据报并返回一个ICMP差错报文),第三位表示更多分片,除了最后一片,其他的分片都要置为1

13位分片偏移量,指数据部分的偏移。实际偏移量是该值左移三乘8后得到的。由于这个原因,除了最后一个IP分片外,每个分片的长度都应该是8的整数倍。

8位生存时间(TTL),跳过一个路由TTL减1.当减为0时候被丢弃,并且由ICMP返回一个数据报

8位的协议,/etc/protocols中有定义,ICMP=1,TCP=6,UDP=17

16位头部校验和,CRC算法

32位源端IP地址

32位目的端IP地址

40字节保留,可以记录的有,路由、时间戳、松散源路由选择、严格源路由选择

使用tcpdump可以观察Ipv4结构

IP分片:

当总长度大于MTU时候需要进行IP分片;

IP路由:

IP模块的工作流程:

网络驱动程序->IP输入队列->处理IP头部->是否发生本机数据包->是->udp/tcp/ICMP

                                                                                                    ->否->计算下一跳路由->IP输出队列->网络驱动

                                                                                                                           ^

                                                                                                                        路由表(RIP/BGP)(route命令)

路由机制:

路由表结构:

Destination:目标网络或主机

Gateway:网关地址,

GenMask:网络掩码

Flags:U(路由项是活动的)/H(是一台主机)/G(目标是网关)/D(路由项重定义生成)/M(被重定向修改过)

Metric:路由距离

Ref:引用次数

Use:路由被使用的次数

Iface:路由项对应的输出网卡接口

1)查找路由表中和数据报中的完全一样的IP地址,找到就选用,找不到进行第二项

2)查找路由表和数据报中具有完全一样的网络ID的地址

3)选择默认的路由项,意味是网关

路由表的更新:

用route add 命令更新

BGP/ISP/OSPF发现路径并更新

IP转发:

linux下通过设置/proc/sys/net/ipv4/ip_forward 允许主机和路由一样拥有转发功能;

流程:

1)检查TTL,为0丢弃;

2)查看IP头部的严格路由选项,若是则检查是否是本机的某个IP地址,如不是,发送ICMP;

3)如有必要,向发送源发生ICMP重定向报文,以告诉他更合适的下一个路由器;

4)TTL值-1;

5)处理头部选项;

6)有必要,进行IP分片;

主机重定向实例:

IPV6头部结构:

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值