五分セルフ・プログラミング:最後に、コンピュータ・ネットワークは、学ぶためにどのようにすべきですか?!

元の文

著者:黄斜め

復刻版は、資料の冒頭にソースと作者を明記してください。

マインドマッピング

ここに画像を挿入説明

簡単な紹介

私は学校のデータ構造は、私が勉強したかについて話しました最後のものは、その後、その後、読み、ビデオを見て、ベースアルゴリズムの問​​題は統合ん磨くことです。

非コバンPubMedの党として、すべての後に、このコースはまだ比較的簡単ですが、私は小さな白いすぐに学ぶことができ、非常に滑らかで、この学習ルートを感じました。

だから、私は他の基本的なコンピュータコースのいくつかの修復を学ぶのと同じように行って、学校を卒業したときに、最初のコンピュータネットワークです。

このコースに重要です、それはインタビューの内容を尋ねることはほとんど必要があるため、どのようなTCP / IPスリーウェイハンドシェイクは、4回を振って、TCPとUDPの違いは、質問の束に直面しているHTTPプロトコル、プログラマは非常に一般的な面接の質問ですあなたも深いはず。

コンピュータネットワーク内の複雑な概念は古い規則に従って、私たちは第一の端部におけるコンピュータネットワークを見て、はるかにそれよりもGeshaです。

導入Baiduの百科事典、コンピュータネットワークは、通信回線、ネットワーク・オペレーティング・システムを介して接続された個々の機能、複数のコンピュータおよび周辺機器を有する、別の場所を参照して、通信プロトコルでネットワーク管理およびネットワーク管理ソフトウェアを座標、リソースの共有や情報転送するコンピュータシステム。

簡単な言葉で、理解するのがより容易なのいくつかを紹介するために、データ構造、ウィキペディア上のコンピュータネットワークを導入するために比較すると、コンピュータネットワークは、通信回線、ネットワーク相互接続や情報の伝達を介してコンピュータに接続されています。

なぜ研究コンピュータネットワーク

この日および年齢では、ネットワークは、単に生き残るために方法はありません、そしてネットワークから、我々が学んだ知識をプログラミングすることはサポートのみスタンドアローンという操作なしプログラミング言語、すべての後に、話に意味がないでしょう残しました。

あなたはJavaなどの言語を学んでいるとき、学習者のプログラムとして、あなたは、いくつかの基本的な文法、オブジェクト指向の基礎、コレクションの使用、さらにはマルチスレッド、IOストリームと例外処理を学び、この可能性がありますコンピュータネットワークの重要性のときには、多くの場合、意識的な、とにかく、私は通常、無駄なが存在しないコンピュータネットワークを学習し、唯一のCRUDの仕事、伝送ネットワークを必要としないコードを書くことはできません。

ワンス・アポン・ア・タイム私が考えていたが、その後、私はこれらの事のコンピュータネットワークインフラの状況が存在しない場合には、そのようなBIOとNIO、でもネットワークプログラミングフレームワークネッティーとしてTomcat、Java技術でnginxのとの接触だけでなく、ネットワークプログラミング、との接触に入って来ました間違いなくあなたが生活の中で思ってしまいます。

最早我开始意识到自己计算机网络基础薄弱时,还是我在学习docker容器方面的知识时,接触到了docker的网络原理,比如docker的网络模式有桥接和host两种,然而我当时基本上看不懂这是什么东西。

类似地,我在学习OpenStack的时候,也完全看不懂里面的网络组件是做什么用的。

就算你不学习网络编程、虚拟化和容器调度,你也得学学平时家里的ip地址、DNS和子网掩码怎么配置吧,没认真学习计算机网络之前,我对这些东西甚至都是一脸懵逼的。

不懂计算机网络的我,想要学编程,真的太难了!

如何学习计算机网络

第一次接触

本科的时候,我们本有一门选修课就是计算机网络,但是当时我没有选它(现在觉得选了可能也听不大懂,但是多少有点印象)

读研的时候,开始狂补计算机基础,当时为自己选了第一本书《计算机网络(谢希仁)》作为入门教材,现在想想当时真是年幼无知,自己完全可以去某乎看一下推荐书单的。

这本书作为一本大学通用教材,年代之久远,内容之枯燥,都是在这么多计算机网络书籍里排的上号的,我已经快忘记当时是怎么把这本书啃完的了。

虽然这本书还没有到大部头的级别,但是里面的内容真的对新手不怎么友好,通篇的都是概念的堆叠和并不容易理解的概念介绍。

教科书,大家都懂的,大部分都已经脱离时代,虽然计算机网络这几年的变化不大,但是它里面的一些教学方法确实是和时代脱节了。

我只记得这本书,当初看完一周就忘光了,后面不管是笔试面试,还是重新复习的时候,基本上也想不起来当初都学了啥,真是一本神奇的好书。

入门学习阶段

吃过了教材的亏之后,我终于学会了上某乎找书单了,当时除了购买了一堆Java书籍之外,还特地买了一本《TCP/IP卷一》以及《图解HTTP》准备开始第二轮对于计算机网络的死磕。

当时也投了一些简历,准备了一些面试,刷过一些面试题,其中面到计算机网络的概率很大,于是我每天都会花一些时间来看着两本书。

不知道是不是我理解能力有问题,当我看《TCP/IP详解卷一》这本备受推崇的计算机网络书籍时,我竟然有一种再看当初那本教材的感觉,这本大部头,貌似也是在讲一堆复杂的概念,并且用一些不好懂的讲解去解释这些概念。

当时我的自信心就有点受挫了,难道计算机网络真就这么难么,为什么这本书我仍然看不懂?

现在看来,计算机网络确实是一门纯理论的课程,除了一些网络抓包和用开发者工具查看网络请求之外,基本上没有什么需要实践的内容,现在很多书从网络抓包入手讲解计算机网络,其实也是一种不错的新型学习方法。

一本书适不适合一个人,真的是因人而异,特别是这种专业技术书籍,不同水平的人看效果差距也会很多,所以网上的一些书单,你可以参考,但不要盲目推崇,等你自己看懂了再说它好也不迟。

于是我第二次进军计算机网络也失败了,看完了《TCP/IP卷一》之后,我用了一个月的时间又忘掉了它。

强化学习阶段

俗话说,事不过三,两次选书都让我铩羽而归,我的内心是崩溃的,虽然面试的时候还可以靠着背一些常见的计算机网络面试题蒙混过关,但是真遇到较复杂的问题时,我也只能是望洋兴叹,根本说不出个所以然。

学好计算机网络的关键是理解它,我在网上又搜索了一大堆的内容,看到一本名为《计算机网络:自顶向下》的书籍,也受到一些推崇,原因是这本书从应用层讲起,一直往下讲到物理层,似乎更符合人脑的学习和思考方式。

我买书一向勤快,当时我在百度实习,于是这本书成了我日常实习时必看的书目。

因为组里的项目在做容器和私有云,在不懂网计算机网络的情况下去看这俩,简直是找死,更何况里面还涉及了存储、调度、微服务等技术。

这本书确实给了我全新的观感,此书在开头就说,将以全新的方式介绍计算机网络,先讲应用层,再依次介绍传输层、网络层、链路层和物理层。

自顶向下和自顶向下的区别在哪呢?
根据自顶向下的思路,我们最先接触的是应用层,也就是常见的HTTP、DNS、FTP、POP等协议,这层协议我们平时都在用,书中讲的也比较接地气,于是我对应用层的介绍也接受的很快。

按照这个思路,书中继续讲传输层,也就是我们常见的TCP和UDP,应用层使用域名或者是IP+port的方式定位机器,而传输层(这里指TCP)把应用层的数据切片,有序传输,并且保证可靠。

也就是说,TCP报文把应用层报文包裹了起来。接下来,就到了网络层了,网络层通过IP进行路由,目的就是找到对应的终端机器,所以网络层的数据报要包裹传输层的数据报。

接着往下,网络层虽然解决了路由问题,但是局域网内的网络交换是通过mac地址进行寻址的,于是数据链路层发挥作用,因为它就是通过mac地址来定位目标机器的,于是数据链路层的数据报要包裹网络层的数据报。

再到最后物理层,数据传输的本质还是0和1的电信号,自然要通过物理介质进行传输,当然,物理介质除了常见的网线、光纤,还有电磁波(应用于无线局域网)

上面对整个计算机网络的脉络做了一下梳理,所以,整体看来,按照自顶向下的思路去学习计算机网络,对于新手来说更加友好一些。

还差得远呢

看完了《计算机网络:自顶向下》虽然已经大概了解了整个网络的结构和脉络,但是对于很多实现的细节还是一知半解,比如HTTP和TCP报文的结构,还有一些比较不易理解的概念,比如路由算法、IP广播和多播、NAT技术、***技术等等,不理解这些,总觉得还是欠缺了不少东西。

到后来,开始尝试面试一些大厂,更加发现了自己的差距还很大,比如百度、头条、腾讯这类公司,特别是腾讯,对于计算机网络的考察是特别严格的。

比如三次握手,四次挥手这种常见问题,一般还会延伸考察,比如为什么要三次握手、四次挥手,没有第三次握手或者没有第四次挥手会怎么样。

別の例では、それは、あなたがそのようなスライディングウィンドウ、再送タイムアウト、グループ化された確認原則として信頼性の高い伝達機構を、確実にするためにTCPを理解する必要があり、この時間は信頼性の高い伝送を確保する方法で、TCPプロトコルの役割が何であるかですが、また、あなたは明確に話すことができるようにする必要があります。

別の例として、研究への一般的な方法があり、ドメイン名への明確なアクセスあなたとバックプロセスからの結果を得るには、可能な限り、最初のDNS解決など多くのことを言うのに十分なものを非常に多くの未解決の問題を、経験しているようにすることですその後、TCP 3ウェイハンドシェイク、およびIPデータグラムをルーティングネットワークを導入し、また、LANデータリンク層、および物理層の役割はさらに約トークにもたらすことができます。

このインタビューは、自分のピットに残されることはありません場合は一言で言えば、より多くのあなたは、より詳細なマスター、これらの問題は、より多くの機会A.まあ、より詳細に全体のプロセスについてのたびに私の話です。

ところで、コンピュータネットワークを学ぶための方法には、ヘルプ私にとって非常に重要な学習資源があり、それは劉新先生の本を「コード農民は、裏返し」され、その後、私はまた、時折、インターネット上でご覧ください。

劉新公共の教師はただの資料番号を書き始め、後に一部のコンピュータネットワークのために、この本に組み立て品、本書が提示する、より複雑なコンピュータネットワークの概念のいくつかを説明しながら、物語の方法を使用して、コンピュータネットワークの知識の多くは、などNAT、ネットワークトンネル、など***。

が、この本は、コンピュータネットワーク上の多くではありませんが、コンピュータネットワークの概念の理解を深めて助けを行います。

マインドマッピング

学ぶためにどのようにあるべきマインドマッピングのコンピュータネットワークを使用するためにあなたを伝える最後にそんなに書くと、この記事をまとめました。

あなたが技術教育の学生であれば、あなたは非コバン学生ならば、私は、コンピュータネットワークを心配する必要はありません信じることを学び、学ぶためにこの考え方によると、私はそれはまだ可能だと思います。

画像

推奨リソース

図書

「コンピュータネットワーク:トップダウン」
、「TCP / TPは示して、」
「HTTP」を制御します

概要

Javaのエンジニアは信じて、コンピュータネットワークの基盤で、Javaのネットワークプログラミングを理解しなければならないとして、コンピュータネットワークについて学習した後、我々はここで停止し、ご質問がある場合、私はまた探求する私を見つけるために、公開番号に行くことができますその後の学習ネットワークプログラミングはその後、打ち上げへのJavaネットワークプログラミングについての記事がありますので、ご期待、役立ちます。

おすすめ

転載: blog.51cto.com/14006572/2471818