怎样学习TCP/IP之婴儿篇

初识TCP/IP:
1、要把抽象的网络协议形象化才能更好的理解。
2、最好是先理解具体的网络协议是起什么作用,然后再学习它的工作过程。

网络协议的设计符合人与人之间的沟通和交流的方式。

对于计算机网络初学者来说,知道“为什么这么做”比“知道怎么做”更重要,真没必要那么深入地学习网络协议的细节,你只需要理解常见协议(例如HTTP、FTP、DHCP、DNS、ARP等常见协议)的工作过程,你理解了这些协议,理解其他的协议就是依葫芦画瓢。

例如邮寄信件的过程:

收信人地址”=数据包里IP头部中的“目的ip地址”,“寄信人地址”=数据包里IP头部中的“源ip地址”。

     "收件人姓名"   =数据包里TCP协议头部中的 "目的端口号""寄信人姓名" =数据包里TCP协议头部中的  "源端口号"

但在程序世界中怎么知道发送给那个应用呢?

例如我们指定QQ端口号是8000,那么只要你的电脑接收的数据包里目的端口号是8000,那这个数据包就是传输给QQ的。

由此还可以引申出数据包结构中的其他字段的作用:

1)、TCP校验, 校验数据是否被篡改。

例子中信息的载体是信纸和信封,计算机网络中信息的载体是各种类型的数据包。传递信息有要求,那就衍生出协议,邮寄信件,有平信,有挂号信,计算机网络里信息传输有(HTTP、FTP、DHCP、DNS、ARP),针对不同的场景使用不同的协议, 有些场景需要多种协议同时配合使用。

为什么需要网络协议呢?

信封、邮票和信纸对于我们来说是传递信息的额外花销, 同理在计算机网络里额外的花销体就是TCP/IP的各种协议数据包的头部(除去应用层数据之外的其他信息)。

计算机网络是如何把数据包传输到目的地的?(DNS, 网关,各种路由协议

例如我们的电脑在生成数据包时是怎么知道对方电脑的ip地址的,(由此引入DNS)?我们的信件是最开始是通过邮局帮我们邮寄的,那么我们的电脑的数据包应该由谁来帮我们传输呢?(由此引入网关),网关又是如何帮我们把数据包传输到目的地的?(由此引入各种路由协议)。所以,想要学习网络协议,就要先把一些基本的协议的作用和工作过程搞清楚

我们通过TCP协议在两台电脑建立网络连接之前要先发数据包进行沟通,沟通后再建立连接,然后才是信息的传输。而UDP协议就类似于我们的校园广播,广播内容已经通过广播站播放出去了,你能不能听到,那就与广播站无关了,

怎样才能更好地理解常见的网络协议?学习网络协议就是要先学习它的工作过程,理解协议设计的例子如下:

       DHCP协议大概是这样讲的:启用了DHCP协议的电脑启动后便会发送广播数据包网络中寻找DHCP服务器,如果网络中有DHCP服务器,这台DHCP服务器便会发送广播数据包与你的电脑进行响应。

这个过程很简单,就是我想要获取ip地址,然后你给我提供一个。想象一下如果你是DHCP协议的设计者,你会考虑到在ip获取和分配过程中会有哪些特殊情况呢?

    1、如果在你启动电脑的过程中网络中的dhcp服务器刚好宕机了,这时怎么办?让你的电脑一直徒劳地发送寻找DHCP服务器的广播包吗?还是在发现没有DHCP服务器与你响应后就再也不发了?还是每隔一段时间就再发送一次寻找DHCP服务器的广播包?

2、如果DHCP服务器的可用ip地址刚好已经分配完了,那又怎么处理?

3、如果网络中同时有两台以上的DHCP服务器,那又该怎么处理?

4、对于已经分配出去的ip地址就这么一直保持分配出去的状态吗?还是要回收?如果要回收?是我去问你还要不要使用这个ip地址?还是我设定一个回收的时间?只要你在这个时间段内你没有再次联系我重新获取这个ip地址我就把它回收?等等

所以我们当初给它设计各种协议的时候就要尽可能地为它想到这些协议所要应对的场景。例如,你可以先学习ARP协议的工作过程,然后再百度搜索ARP攻击是怎么回事?就是利用ARP协议设计的不严谨,伪造ARP数据包篡改网络里其他电脑的ARP缓存列表。ARP协议采用广播发送协议数据包,这就导致里网络里的每一台电脑都会收到ARP的协议数据包,而ARP协议规定即使你的电脑没有发出arp请求,只要有ARP回应包到达你的主机,你就要对这些协议包进行处理,并将回应包中的mac和ip对应关系放入自己的arp缓存。如果ARP回应包里面的网关IP与ARP对应关系是正确的,这个问题不大,但如果有人在网络中伪造了错误的网关IP与ARP对应关系并广播到网络里,那就出问题了,你可能也意识到你上不了网是因为网关IP对应的ARP对应关系出错,但是没有办法,因为你的电脑上运行的ARP协议规定,你的电脑必须要接受这个错误的对应关系,这就是网络协议设计的不严谨,设计和实现ARP协议的时候没有想到居然会有人在网络中伪造ARP回应包并广播到网络中。

如果你看《TCP/IP详解》这套书觉得很吃力,那就建议暂时不要看了,强烈建议你先看 《计算机网络自顶向下方法与Internet特色》 这本书,这本书对常见的网络协议的工作过程进行了分析,可读性很强,看起来比《TCP/IP详解》轻松多了,了解了常见协议的工作过程你就可以动手做实验来验证这个协议的工作过程了,建议先使用模拟器来做实验,像 cisco packet tracer 就很好用,它有个模拟功能可以像看动画一样看到网络数据包是如何在网络拓扑结构中传输和交互的,对了解协议的工作过程非常有用,还有抓取数据包的功能,可以抓去指定协议的数据包进行查看。
使用真实设备通过在电脑上安装抓包工具进行抓包也可以,只不过没有模拟器上看得那么直观,对于初学者还是建议先以模拟器做实验为主,因为你可以很直观地观察你所设计的网络的运行情况,更容易把心放在学习网络协议的工作过程上。












  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值