怎样学好计算机网络?
网友解答: 计算机网络的数据传输,是由N个离散的数据单元(IP包)组成的,再去回忆关于TCP连接的概念,TCP的面向连接,而数据单元IP包却是离散的,而TCP也是由IP包来承载的,那意味
计算机网络的数据传输,是由N个离散的数据单元(IP包)组成的,再去回忆关于TCP连接的概念,TCP的面向连接,而数据单元IP包却是离散的,而TCP也是由IP包来承载的,那意味着TCP报文也是离散的,既然是离散的,又谈何连接呢?
TCP连接是一种逻辑概念
通信双方通过离散的IP包交互,分享了彼此的序列号、缓存大小等参数,彼此就可以认为和对方是连接的。
而在这个逻辑连接上传输数据,自然需要对方确认,否则如何知道离散的IP包是否到达对方?
而如果迟迟收不到对方的确认,也不能傻傻地等不是吗?需要将数据再重传,可以重传多次,一直到收到对方的确认,这样即使网络有短暂的故障,可以通过多次重传予以克服。而如果重传了多次还是没有收到对方的确认,那只有放弃了,告诉用户发生的一切。
这是我看完TCP/IP协议的一点总结,这块是计算机网络的核心,比路由协议更重要,所以要花很多时间研究这些最核心的技术。
而在研究这些基础内容时,需要用抓包工具将网络上离散的数据单元捕获下来,研究数据单元的时序、数据单元的格式、研究数据单元是由谁触发产生的,是TCP/IP系统进程、还是用户进程,对这些细节的越深入,脑海里就会勾勒出一个分层的场景:
用户进程(高层)、TCP/IP系统进程(中层)、硬件网卡(底层)。
有了分层的概念,就会自然地去想象,数据单元从高层-- 中层--底层 下沉的过程。
以及数据单元从底层 --- 中层 ---高层上浮的过程。
下沉、上浮的过程牵扯到很多细节,这需要看TCP/IP协议。
说了一堆,核心思想是,想学好计算机网络,首先要有热情,研究TCP/IP协议,做实验,抓包解析,然后再去看书,再实验,抓包分析…这个过程是一个周期性的迭代过程,需要时间的积累。
知乎上经常看到是网工还是码农有钱途的争论,其实没有什么好争的,在我眼中,无论是网工还是码农都是编程,码农编程好理解,网工怎么编程呢?网工需要将还没有初始化的程序,赋值并使进程开始正常工作,所以也需要有编程的思维模式,这样才能更好地让进程工作;而码农如果不精通网络,不了解系统瓶颈的限制,程序也无法优化到最佳,所以网工和码农需要互相学习,最终殊途同归。
谈谈我从软件工程师学习到的一个知识点,记得是一个排错的场合,一个 GRE tunnel with IPsec Protection 有些问题,隧道两端假定为A、B,可以互相Ping通,我的看法是 ping 包是加密的,因为使用隧道两端的A、B 的IP地址进行加密,我同事说No,ping 包不加密,只有通过隧道的流量才加密,而ping 包并没有经过隧道,所以不加密,我豁然开朗,然也…
很久以来想写一篇如何学好计算机网络的文章,今天准备先写一点,计算机网络包含很多知识点,而要学好则需要一点一滴的积累,慢慢地发现自己懂了许多,同时会发现自己不懂的东西更多,但不要灰心,坚持下去,有一天你融会贯通了,会发现不懂的东西越来越少。
同时在学习的过程中,知道网络设备的配置是一种编程,给程序赋值使之工作,那么要给自己提几个问题,某些赋值可以让程序正常工作,那反之呢?如果不正常的赋值是不是意味着程序可能会死机、崩溃、异常、不工作? 换句话说,如果程序发生上述异常,是不是意味着有可能赋值不正确?这样一旦发生网络故障时,由于平时学习过程中已经想到了这些异常,那么排错的时间就会大大减少。
刚才在防火墙上看到这样的缺省配置:
tcp-map tcpmap
no check-retransmission
no checksum-verification
exceed-mss allow
queue-limit 0 timeout 4
reserved-bits allow
syn-data allow
synack-data drop
invalid-ack drop
seq-past-window drop
tcp-options range 6 7 clear
tcp-options range 9 255
clear tcp-options
selective-ack allow
tcp-options timestamp allow
tcp-options window-scale allow
ttl-evasion-protection
urgent-flag clear
window-variation allow-connection !
我的问题是,如果一个BGP session 途径这台防火墙,而BGP Peer 建立session时需要认证对方,请问这个BGP session 可以建立起来吗? (假定ACL为BGP开放)
很显然不会,为何?
因为这条配置:
tcp-options range 9 255 clear
还记得BGP 认证使用TCP option 号是多少吗?我以前的文章多次提到,19/29,所以会被防火墙清除option 19/29,这样双方无法认证对方,最终BGP session 无法建立。
当然这条配置还有一些限制TCP的特征,限于时间就不一一展开了,平时多养成一个习惯,看到配置可以联想到很多相关的内容,有一些思想准备,会提高排错的效率。
共勉!
网友解答:谢谢邀请!
计算机网络的相关知识还是比较多的,要想学好计算机网络的相关知识要有一个系统的学习计划,这个学习计划包括两个大的部分,一部分是基础的计算机网络知识,另一部分是实验操作,具体内容包括以下部分:
第一部分:计算机网络体系结构。计算机网络体系结构包括通信模型、协议和网络设备,其中OSI参考模型是学习计算机网络的第一步,通过网络模型来了解计算机网络通信的基本流程,建立一个基本的数据通信概念。
第二部分:计算机数据传输。这部分内容是计算机网络进行数据通信的基础部分,包括传输媒体、信号编码技术、数字通信技术、数据链路控制、复用以及扩频技术等内容。这部分内容的学习会对计算机网络的通信过程有一个系统的了解,这部分内容要重点学习数字信号和模拟信号的转换、异步传输和同步传输以及差错检测和纠正,另外还包括频分复用、同步时分复用等内容。这部分内容还包括大名鼎鼎的扩频技术,扩频技术的发明者是一名好莱坞女影星Hedy Lamarr在1940年发明的,当时她只有26岁,难能可贵的是她并没有通过扩频技术的专利而获利。
第三部分:广域网和局域网。这部分内容包括电路交换和分组交换、异步传输方式、拥塞控制以及高速局域网和无线网。这部分内容还是具有一定难度的,包括分组交换原理、ATM逻辑连接、最小代价法、拥塞控制以及三层交换机等内容。
第四部分:网际协议和运输协议。这部分内容包括网际互联的基本原理、路由选择协议、TCP拥塞控制等内容。
另外,计算机网络还包括网络安全以及各种网络服务的内容。计算机网络看似简单但是内容却比较有深度,在学习的过程中还需要结合大量的实验才能理解不同协议的工作原理。
我从事网络开发工作多年,也参与过交换机的研发,我会陆续在酷米写一些关于计算机网络方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有计算机网络方面的内容,也可以咨询我。
谢谢!