网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。

网络通信中最重要的就是网络通信协议。当今网络协议有很多,局域网中最常用的有三个网络协议:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP协议。应根据需要来选择合适的网络协议。

  • 第一,会从身边经常见到的事情出发,用讲故事的方式来讲解各种协议,然后慢慢扩大到不熟悉的领域。例如,每个人都会使用查看I地址的命令,我们就从这个命令开始,展开讲解一些相关概念。每个人都在大学宿舍组过简单的网络来打游戏,我们就从宿舍网络涉及的最简单的网络概念开始讲,然后说到办公室网络,再说到日常常用的与上网、购物、视频下载等活动相关的网络协议,最后才说到最陌生的数据中心。说到这里的时候,很多概念已经在前面的“宿舍”和“办公室”的例子中都出现过,因此更容易接受和理解。
  • 第二,讲解网络协议时会更加贴近使用场景,将各个层次的关系串连起来,而非孤立地讲解某个概念。
  • 常见的计算机网络课程往往会按照网络分层,一层一层地讲,却很少讲层与层之间的关系。例如,我们在学习路由协议的时候,在真实场景中,这么多的算法和二层是什么关系呢?和四层又是什么关系呢?再比如,我们在真实的网络通信中访问一个网站、进行一次支付,那么在TCP三次握手的时候,IP层在干什么? MAC层在干什么?这些内容本书都会逐一讲解。
  • 第三,在讲解完各个层次的协议之后,会讲述如何在当前热门领域(比如云计算、容器和微服务)中使用这些协议。
  • 通过学习本书,读者一方面可以了解这些网络协议的真实应用场景,另一方面也可以通过上手使用云计算、容器、微服务来进一步加深对于网络协议的理解。

由于文章篇幅太长,无法全部展示出来,需要完整版的朋友添加小助理即可获取

内容章节

第1章通信协议概述.

1.1为什么要学习网络协议

相信大家都听过通天塔的故事,上帝为了阻止人类联合起来,让人类说不同的语言,人类没法沟通,达不成“协议”,通天塔的计划就失败了。

1.2网络分层的真实含义

由于长时间从事计算机网络相关的工作,我发现计算机网络有一个显著的特点,就是这是一个不仅需要背诵,而且特别需要将原理烂熟于胸的学科。很多问题看起来懂了,但是就怕细问,一问就发现你懂得没有那么透彻。

1.3ifconfig:熟悉又陌生的命令行

当面试者听到这个问题的时候,常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题?

1.4 DHCP与PXE:IP地址是怎么来的,又是怎么没的

上一节,我们讲了IP地址的一些基本概念。如果需要和其他机器通信,就需要一个通信地址,我们需要给网卡配置一个IP地址。

第2章︰从二层到三层

2.1从物理层到MAC层:如何在宿舍里自己组网玩联机游戏

上一章我们见证了IP地址的诞生,或者说是整个操作系统的诞生。一旦机器有了I地址,就可以在网络环境里和其他的机器展开沟通了。

2.2交换机与VLAN:办公室太复杂,我要回学校

上一节,我们在宿舍里组建了一个本地的局域网,大家可以愉快地一起玩游戏了。宿舍是一个非常简单的场景。本节让我们切换到一个稍微复杂一点的场景——办公室。

2.3ICMP与ping:投石问路的侦察兵

无论是在宿舍,还是在办公室,或者运维一个数据中心,我们常常会遇到网络不通的问题。那台机器明明就在那里,你甚至都可以通过机器的终端连上去看。它看着好好的,可是就是连不上网,究竟是哪里出了问题呢?

2.4世界这么大,我想出网关:欧洲十国游与玄奘西行

前几节主要讲了宿舍里和办公室里用到的网络协议。你已经有了一些基础,是时候去外网逛逛了!

2.5路由协议:“西出网关无故人”“敢问路在何方”

俗话说得好,在家千日好,出门一日难。包一旦出了网关,就像玄奘西行—样踏上了江湖漂泊的路。

上一节我们描述的是一个相对简单的情形。跑出了网关之后,只有一条路可以走。但是,网络世界复杂得多,一旦出了网关,会面临很多路由器,有很多条道路可以选。如何选择一个最便捷的道路去求取真经呢?这里面还有很多门道可以讲。

第3章最重要的传输层

3.1UDP:虽然简单但是可以定制化

讲完层以后,接下来我们开始讲传输层。在1.1节中已经讲过,传输层里比较重要的两个协议,一个是TCP,一个是UDP。对不从事底层开发或者应用开发的人来讲,最常用的就是这两个协议。面试时,这两个协议经常会被放在一起问,因而在本书中也会将两者结合起来讲。

3.2TCP(上):虽然复杂,使用起来却轻松

3.2Tcp (上):虽然复杂,使用起来却轻松

3.1节讲了UDP,UDP包中基本上包括了传输层必需的端口字段,就像我们小时候一样简单,相信“网”之初,性本善,不丢包,不乱序。

3.3TCP(下):西行必定多妖孽,恒心智慧消磨难

我们前面说到玄奘西行,要出网关。既然出了网关,那就要在公网上传输数据,公网往往是不可靠的,因此需要很多机制去保证传输的可靠性,这时就需要各种重要的策略来坚定西行的恒心,还需要大量的算法来作为西行的智慧储备。

3.4 socket:Talk is cheap, show me the code

前面讲完了TCP和UDP,还没有上手实践过,这一节就讲一讲基于TCP和UDP的socket(套接字)编程。

第4章最常用的应用层

4.1HTTP:看个新闻原来这么麻烦

前面讲述完传输层,接下来开始讲应用层的协议。就从最常用的HTTP开始讲起。

HTTP几乎是每个人上网用的第一个协议,同时也是很容易被忽略的协议。

既然本节要讲看新闻,咱们就先登录某新闻网站http://www. 决命.com。

4.2HTTPS:点外卖的过程原来这么复杂

用HTTP看个新闻没有问题,但是换到更加严肃的场景中,就存在很多的安全风险。例如你要下单做一次支付,如果还是使用普通的HTTP,那你很可能就会被黑客盯上。

4.3流媒体协议:如何在直播里看到帅哥美女

最近直播比较火,很多人都喜欢看直播,一个直播系统里面都有哪些组成部分,都使用了什么协议呢?

无论是直播还是点播,其实都是对视频数据的传输。一提到视频,大家都爱看,但是一提到视频技术,大家都头疼,因为名词实在是太多了。

4.4P2P协议:下载电影,分布式协议速度快

如果你想下载一个电影,一般会通过什么方式呢?

当然,最简单的方式就是通过HTTP进行下载。但是相信你有过这样的体验,通过浏览器下载的时候,只要文件稍微大点,下载的速度就奇慢无比。

第5章陌生的数据中心

5.1 DNS:网络世界的地址簿

前面我们讲了平时常见的看新闻、支付、直播、下载等场景,现在网站的数量非常多,常用的网站就有二三十个,如果全部通过I地址进行访问,恐怕很难记住。因此,我们需要一个地址簿,根据网站名称就可以查看具体的地址。

例如,“西湖边的‘外婆家’”就是名称,通过地址簿,我们可以查看它到底位于哪条路,门牌号是多少号。

5.2HTTPDNS:网络世界的地址簿也会指错路

上一节我们知道了DNS的两项功能,第一项功能是根据网站名称查到具体的IP地址,另一项功能是针对多个地址做负载均衡,而且可以在多个地址中选择一个距离近的地址访问。

5.3CDN:你去小卖部取过快递吗

5.4数据中心:我是开发商,自己拿地盖别墅

无论是看新闻、下订单、看视频,还是下载文件,最终的访问目的地都是数据中心。我们前面学了这么多与网络协议相关的知识,你是不是很好奇数据中心究竟长什么样呢?

5.5VPN:朝中有人好做官

前面我们讲到了数据中心,数据中心里面很复杂。有的公司有多个数据中心,需要将多个数据中心连接起来,或将办公室和数据中心连接起来,此时该怎么办呢?

5.6移动网络:去巴塞罗那,手机也上不了“脸书”

前面讲的都是电脑上网的场景,那使用手机上网有什么不同呢?

 

第6章是云计算中的网络

6.1云中网络:自己拿地成本高,购买公寓更灵活

在5.4 节中,我们知道了数据中心里面堆着一大片一大片的机器,相互之间用网络连接。如果机器数量非常多,那么维护起来还是挺麻烦的,有好多不灵活的地方,比如以下几点。

6.2软件定义网络:共享基础设施的小区物业管理办法

上一节我们了解了使用原生的VLAN和Linux网桥的方式来进行云平台的管理,但是这种方式在灵活性、隔离性方面都略显不足,而且整个网络缺少统一的视图、统一的管理。

6.3云中网络之安全:虽然不是土豪,也需要基本保障

上一节我们看到,做一个小区物业维护一个大家共享的环境,还是挺不容易的。如果大家都是自觉遵守规则的住户还好,如果遇上不自觉的住户就会很麻烦。

6.4云中网络之QoS:室友疯狂下电影,我该怎么办

6.5云中网络之隔离GRE、VXLAN:虽然住一个小区,也要保护隐私

对于云平台中的隔离问题,前面用的策略-直都是VLAN,但是我们也说过这种策略的问题:VLAN只有12位,4096个。虽然当时设计时看起来够用,但是现在已经绝对不够用了,那么该怎么办呢?

第7章容器技术中的网络

7.1容器网络:来去自由的日子,不买公寓去合租

7.2容器网络之Flannel:每人一亩三分地

7.3容器网络之Calico:为了高效说出善意的谎言

7.2节我们讲了Flannel如何解决容器跨主机互通的问题,这个解决方式其实和虚拟机的网络互通模式是差不多的,都是通过隧道进行的。但是Flannel有一个非常好的模式,就是给不同的物理机设置不同的网段,这一点和虚拟机的Overlay模式完全不一样。在虚拟机的场景下,整个网段在所有的物理机之间都是可以“飘来飘去”的。网段不同,就给了我们做路由策略的可能。

7.4 RPC概述:远在天边,近在眼前

前面我们讲了容器网络如何实现跨主机互通,以及微服务之间的相互调用。

第8章有微服务相关协议

8.1基于XML的SOAP:不要说NBA,请说美国职业篮球联赛

7.4节我们讲了RPC 的经典模型和设计要点,并以早期的ONC RPC为例,详述了具体的实现。

8.2基于JSON的RESTful接口协议:我不关心过程,请给我结果

8.1节我们讲了基于XML的SOAP,SOAP中S的意思是Simple,但是好像一点儿都不简单啊!

你会发现,对于SOAP来讲,无论XML中调用的是什么函数,多是通过HTTP 的POST方法发送的。但是之前学习HTTP时,我们知道HTTP除了POST,还有PUT、DELETE、GET等方法,这些也可以是一个个动作,而且基本满足增删查改的需求——增POST、删DELETE、查GET、改PUT。

8.3二进制类RPC协议:还是叫NBA吧,总说全称多费劲

前面讲了两个常用文本类的RPC协议,陌生人之间的沟通,用NBA、CBA这样的缩略语,会使协议约定非常不方便。

8.4跨语言类RPC协议:交流之前,双方先交换一下专业术语表

到目前为止,我们已经讲解了4种RPC协议,分别是ONC RPC、基于XML的SOAP、基于JSON的RESTful和Hessian2。

第9章网络协议知识串讲

9.1知识串讲:用“双11”的故事串起网络协议的碎片知识(上)

基本的网络知识都讲完了,还记得最初举的那个“双11”下单的例子吗?本章会详细地讲解这个过程,用这个过程将我们讲过的网络协议知识连贯起来。

9.2知识串讲:用“双11”的故事串起网络协议的碎片知识(中)

上一节我们讲到,手机App经过了一个复杂的过程,终于拿到了电商网站的SLB的IP地址,是不是该下单了?

9.3知识串讲:用“双11”的故事串起网络协议的碎片知识(下)

上—节我们封装了一个长长的网络包,“大炮”准备完毕,开始发送。

9.4搭建一个网络实验环境:授人以鱼不如授人以渔.

网络是一门实验性很强的学科,就像我经常说的一样:一看觉得懂,一问就打鼓,一用就糊涂。在本书写作过程中,我自己也深深体会到了。这个时候,我常常会拿一个现实的环境上手操作一下,抓个包看看,这样心里就会有定论。

因为这本书内容实在是太多了!没有办法给大家全部展示出来了,需要获取的小伙伴可以直接点赞+关注后添加小助理即可免费获取以上笔记