================================================================================
* IP网际协议:
负责数据报从源地址传给目的地址,提供的是非可靠、无连接的传送服务,所有可靠性和包装需要通过上层协议如TCP来提供。
* IP首部格式:
每32 bits一组,共5组(20个字节)
第一组:
Version(4 bits)--HeadLength(4 bits)--TOS(8 bits)--TotalLength(16 bits)
IPv4/IPv6 一般为5(按32位计算) IP包总长(<65535 bytes)
TOS字段包括: 优先级(3位,现代已经忽略)--0(未用)--TOS值
TOS值1位置1,3位置0,分别表示:
0x10(最小时延) 0x08(最大吞吐量) 0x04(最高可靠性) 0x02(最小费用)
现在大多数应用程序都不支持TOS特性。
第二组:
标识(16 bits)--标志(3 bits)--片偏移(13 bits)
第三组:
TTL(8 bits)--Protocol(8 bits)--Head Sum (16 bits)
32/64 TCP/UDP/ICMP
首部校验和的算法:首部校验和位置零,20个字节全部取反码,每16位一组求和。
计算校验和的技术见RFC 1071,接收方计算结果如果不是全1,则认为传输出错。
第四组:源IP地址;
第五组:目的IP地址。
* IP路由选择: 通过路由表。
路由类型: 目标主机 > 目标网络 > 默认下一个路由 (转发数据的优先级)
在IP数据报传输中,32位的IP地址始终不变,而链路层的数据封装格式和48位的以太网地址由链路层协议确定,每站路由都可能会发生改变,其中封装格式有以太网/SLIP/PPP等(见链路层相关笔记),以太网地址为下一个路由的以太网地址。
* A类地址、B类地址、C类地址的概念。子网的划分。
子网地址 = IP地址
子网掩码
广播地址 = 子网地址 !子网掩码
* 查看接口IP地址、子网掩码、广播地址、MTU的命令:netstat、ifconfig等。
================================================================================
* ARP地址解析协议:
用于在32位的IP地址与对应的硬件地址(以太网地址)之间建立映射。内核(如以太网驱动程序)必须知道硬件地址才能发送数据。
* 发送IP数据报前,先广播发送一个ARP请求的数据帧,以获得ARP应答,应答包含目的IP地址及其硬件地址。
* 点对点链路只需要知道两端的IP地址,不涉及硬件地址,不需要ARP;
* ARP的帧格式(42字节,其中前14个字节为以太网数据帧的首部):
以太网目的地址(6字节)--以太网源地址(6字节)--帧类型(2字节)--硬件地址类型(2字节)--协议类型(2字节)--硬件地址长度(1字节)
--协议地址长度(1字节)--操作类型(2字节)--发送端以太网地址(6字节)--发送端IP地址(4字节)--目的以太网地址(6字节)--目的IP地址(4字节)
硬件地址类型:为1表示为以太网地址;
协议类型: 为0x8000表示为IP协议(和以太网数据帧的首部帧类型相同定义)
硬件地址长度:以太网地址的值为6;
协议地址长度:IP地址为4;
操作类型: 1: ARP请求;2: ARP应答;3: RARP请求;4: RARP应答。
发送端、目的以太网地址与以太网帧的首部12个字节相同,而目的以太网地址在发出ARP请求时所有位置1,表示为广播地址。
* ARP代理(proxy ARP):
通过路由应答不同网络上的ARP请求,把路由的以太网地址发送给源主机。源主机端认为该路由的以太网地址就是所求地址,从而开始向该路由器发送IP数据报。
* 免费ARP(gratuitous ARP):
发送自己IP地址的ARP请求。用于确定是否和别的主机产生IP冲突,或者用于更新网络上其他主机的相应的ARP高速缓存。
* ARP相关命令:
$ arp -a 查看ARP高速缓存;
$ arp -d 在ARP高速缓存中删除指定项;
$ arp -s 在ARP高速缓存中增减指定项。
* tcpdump命令所监听到的ARP查询和应答一例:
11:44:33.865795 arp who-has 219.221.206.62 tell ubuntu
11:44:33.866219 arp reply 219.221.206.62 is-at 00:09:97:07:d6:06 (oui Unknown)
第一行发出广播,查询IP地址219.206.62的以太网地址,并要求返回给主机ubuntu
第二行收到应答。
附: 水木社区关于ARP的讨论的一个小结。
发信人: cheyo (cheyo), 信区: Networking
标 题: Re: 请教ARP:当目标主机与源主机不在同一网段时
发信站: 水木社区 (Tue Jan 10 00:25:13 2006), 转信
嗯。改了一下下:
在底层网络中,两台主机之间的通信需要知道源主机与目标主机的Mac地址。ARP缓存
表记录了本网段中IP地址与Mac地址的映射关系。
当源主机与目标主机处在同一网段时,源主机首先查询本机的ARP缓存表,如果在该
表中可以查询到目标主机的Mac地址,则直接发送数据,否则源主机向同一网段的所有节
点发送广播,同一网段的所有主机都会接收到该广播,但只有目标主机会响应并告知源主
机其Mac地址。于是源主机把目标主机的IP与Mac地址记录到ARP缓存表中,并通过该Mac地
址发送数据。
如果源主机与目标主机不在同一网段,则源主机在本机路由表中查询源主机到达目标
网络需要通过哪一个网关,然后与"源主机与目标主机处在同一网段"类似的,源主机先取
得该网关的Mac地址,然后本地主机将数据帧提交给网关。之后,由网关判断下一跳的主机
地址或者网络地址。
================================================================================
* RARP 用于无盘系统/工作站在引导时获取IP地址。分组格式和ARP一致。
阅读(1865) | 评论(0) | 转发(0) |