一块积木

系统是积木堆起来的,软件是积木堆起来的,世界也是积木堆起来的

用户操作
[即时聊天] [发私信] [加为好友]
积木ID:goodboy1881
176894次访问,排名447(1),好友4人,关注者14人。
goodboy1881的文章
原创 40 篇
翻译 4 篇
转载 40 篇
评论 93 篇
积木的公告

知其然,不知其所以然,不如不知。

最近动向

开始研究tomcat服务器。开始自己的J2EE历程

个人简介

学习口味甚杂, linux, solaris FreeBSD都有涉猎。 C++玩儿了4年,Java玩儿了一年。 其他网页脚本语言玩儿了两个月。 欢迎交流。

我的联系方式

邮件:goodboy1881(at)gmail.com

rss订阅

最近评论
obkof:这个系列的读书笔记写得太好了,我看书结合你的笔记,很好的理解tcp/ip的原理和重点,胜过上课老师的讲解,希望你以后还可以多写一些经典书籍的笔记^_^
chen231133:在这里我有一个问题一直不明白: 寻找默认路由之前会发送ARP请求不?它们二者之间是怎样一个过程?
------------------------------------------------
先回答后一个问题:源主机会搜索路由表来查找目标主机或者网络的表目,如果没有,就使用默认的表目,把数据报传给下一站路由器。只要确认目的地,才会发送ARP请求。
sky3010:我最近也开始学习TCP/IP详解这本书,借鉴一下你的笔记,不介意吧
linda003:(*^_^*)
inchling:做应用软件开发最好不要忽略数据库的学习,特别是大型数据库产品的知识,但数据库绝不仅仅是SQL语言。应用做到最后,数据和业务流程才是根本。
文章分类
收藏
    相册
    漂流日本
    其他
    文章插图
    一鸡回忆录
    给我留言
    给我留言
    推荐阅读
    Boost Getting Started 安装文档(翻译1.33版本)
    饼子堂
    一起在道上混的
    不亦快斋(RSS)
    废人废语(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 收藏

    新一篇: TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute | 旧一篇: TCP/IP详解学习笔记(2)-数据链路层

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息。数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息。

    1.IP协议

    IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。这是后话,暂且不提

    1.1.IP协议头

    如图所示

    ip协议报头

    挨个解释它是教科书的活计,我感兴趣的只是那八位的TTL字段,还记得这个字段是做什么的么?这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64,Tracerouter这个工具就是用这个原理工作的,tranceroute的-m选项要求最大值是255,也就是因为这个TTL在IP协议里面只有8bit。

    现在的ip版本号是4,所以也称作IPv4。现在还有IPv6,而且运用也越来越广泛了。

    1.2.IP路由选择

    当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢?

    最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。

    稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包

    1. 如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。
    2. 搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机
    3. 搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助。如果找到路由器,则将该包发向路由器。
    4. 搜索路由表,如果匹配同子网路由器失败,则匹配同网号(第一章有讲解)路由器,如果找到路由器,则将该包发向路由器。
    5. 搜索陆游表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包
    6. 如果都失败了,就丢掉这个包。

    这再一次证明了,ip包是不可靠的。因为它不保证送达。

    1.3.子网寻址

    IP地址的定义是网络号+主机号。但是现在所有的主机都要求子网编址,也就是说,把主机号在细分成子网号+主机号。最终一个IP地址就成为 网络号码+子网号+主机号。例如一个B类地址:210.30.109.134。一般情况下,这个IP地址的红色部分就是网络号,而蓝色部分就是子网号,绿色部分就是主机号。至于有多少位代表子网号这个问题上,这没有一个硬性的规定,取而代之的则是子网掩码,校园网相信大多数人都用过,在校园网的设定里面有一个255.255.255.0的东西,这就是子网掩码。子网掩码是由32bit的二进制数字序列,形式为是一连串的1和一连串的0,例如:255.255.255.0(二进制就是11111111.11111111.11111111.00000000)对于刚才的那个B类地址,因为210.30是网络号,那么后面的109.134就是子网号和主机号的组合,又因为子网掩码只有后八bit为0,所以主机号就是IP地址的后八个bit,就是134,而剩下的就是子网号码--109。

    2. ARP协议

    还记得数据链路层的以太网的协议中,每一个数据包都有一个MAC地址头么?我们知道每一块以太网卡都有一个MAC地址,这个地址是唯一的,那么IP包是如何知道这个MAC地址的?这就是ARP协议的工作。

    ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机,而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。

    一个典型的arp缓存信息如下,在任意一个系统里面用“arp -a”命令:

    Interface: 192.168.11.3 --- 0x2
      Internet Address      Physical Address      Type
      192.168.11.1          00-0d-0b-43-a0-2f     dynamic
      192.168.11.2          00-01-4a-03-5b-ea     dynamic

     

     
    都会得到这样的结果。

    这样的高速缓存是有时限的,一般是20分钟(伯克利系统的衍生系统)。

    3.RARP协议(略)

    发表于 @ 2006年04月19日 02:41:00|评论(loading...)|编辑

    新一篇: TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute | 旧一篇: TCP/IP详解学习笔记(2)-数据链路层

    评论

    #yangshuai1981 发表于2006-04-20 12:00:00  IP: 210.169.202.*
    TrackBack来自《》

    TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议
    #风波 发表于2006-11-12 12:25:00  IP: 59.52.186.*
    稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。


    在这里我有一个问题一直不明白: 寻找默认路由之前会发送ARP请求不?它们二者之间是怎样一个过程?
    #chen231133 发表于2008-07-04 21:48:15  IP: 218.85.43.*
    在这里我有一个问题一直不明白: 寻找默认路由之前会发送ARP请求不?它们二者之间是怎样一个过程?
    ------------------------------------------------
    先回答后一个问题:源主机会搜索路由表来查找目标主机或者网络的表目,如果没有,就使用默认的表目,把数据报传给下一站路由器。只要确认目的地,才会发送ARP请求。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 积木