Linux高性能服务器编程——ch2笔记

第2章 IP 协议详解

2.1 IP服务的特点

无状态:IP通信双方不同步传输数据的状态信息。IP数据报相互独立,缺点是无法处理乱序和重复的IP数据报。上层协议如果是面向连接的协议(TCP),能够自己处理乱序和重复的报文段。IP数据报头部的标识字段是被用来处理IP分片和重组的,不是指接收顺序。优点是简单高效。UDP和HTTP也是无状态的。
无连接:IP通信双方都不长久地维持对方的任何信息。
不可靠:IP协议不能保证IP数据报准确地到达接收端。通知上层协议发送失败,但不重传,使用IP的上层协议需要自己实现数据确认、超时重传。

2.2 IPv4头部结构

Linux高性能服务器编程——ch2笔记_第1张图片
同一个数据报的所有分片都具有相同的标识值。
实际偏移值:13位分片偏移*8,除最后一个分片外,每个分片数据部分长度必须是8的整数倍。
数据报转发过程中,每经过1个路由,TTL减1。

2.3 IP分片

IP数据报超过MTU时,将被分片传输。发生在发送端或中转路由器上,最终在目标机器上组装。
数据报标识、标志、片偏移。
Linux高性能服务器编程——ch2笔记_第2张图片
以太网帧的MTU是1500字节。

2.4 IP路由

Linux高性能服务器编程——ch2笔记_第3张图片
接收到IP数据报首先对IP头部进行CRC校验。
源站选路选项:松散源路由选择或严格源路由选择。
IP路由机制(给定目标IP地址,如何匹配路由表)按顺序:
1)完全匹配IP地址,就使用该路由项;
2)具有相同网路ID的网络IP地址(如网关地址),就使用该路由项;(网路ID:连续255部分,主机ID:连续0部分)
3)默认路由项,下一跳路由是网关。
静态路由更新方式:route命令。
动态路由更新方式:BGP协议、RIP协议、OSPF协议。

2.5 IP转发

主机和路由器都能进行IP转发。

2.6 重定向

ICMP 重定向报文也能用于更新路由表。
Linux高性能服务器编程——ch2笔记_第4张图片

2.7 IPv6头部结构

解决v4地址不够用问题,并做了改进。
IPv6头部由40字节的固定头部和可变长的扩展头部组成。
零压缩法只能用一次。
IPv6协议并不是IPv4协议的简单扩展,而是完全独立的协议。用以太网帧封装IPv6数据报和IPv4数据报具有不同的类型值。第1章提到,IPv4数据报的以太网帧封装类型值是0x800, 而IPv6数据报的以太网帧封装类型值是 0x86dd。

你可能感兴趣的:(Linux服务器编程,服务器,linux,笔记)