Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249827
  • 博文数量: 51
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 575
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-22 13:49
文章分类
文章存档

2009年(1)

2008年(13)

2007年(7)

2006年(30)

我的朋友

分类:

2006-10-02 01:48:16

================================================================================

*       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) |
0

上一篇:1 链路层

下一篇:3 ICMP协议及应用

给主人留下些什么吧!~~