网络协议是每个程序员入门的必修课,但是完全掌握网络协议知识并进行实际应用却并非易事。在本书中,作者将结合自己从业多年的“泣血”经验,以通俗易懂、更加贴近日常生活的方式,从底层到上层对最基础、最常用、最重要的网络协议进行解析,并将深入分析网络协议在云计算、容器和微服务等领域的应用和实践。本书将帮助入门级程序员深入、直观地理解网络协议基础概念和原理,构建一个完整、精准的网络协议知识框架;也会帮助有一定工作经验的程序员填补知识漏洞、打通知识体系。
网络协议知识点太多,学完记不住 大部分读者应该都学过计算机网络课程,学的时候感觉得并不难,尤其这 课没有公式,更像是文科的东西 学了一大堆东西, 背了一大堆东西,但是最终应付完考试之后,都“还给了老师”。
所以本手册使用了“趣谈”这种方式,它可以解决从“入门到放弃”的问题,把晦涩的知识把一些有趣的故事通过比喻的方式结合起来,这样更容易帮助读者系统 、深入地了解网络技术的知识点和大致的知识 操作流程
因为笔记的内容实在太多,下面就以截图展示部分内容了
第一章通信协议概述
1.1为什么要学习网络协议
相信大家都听过通天塔的故事,上帝为了阻止人类联合起来,让人类说不同的语言,人类没法沟通,达不成“协议”,通天塔的计划就失败了。
1.2网络分层的真实含义
由于长时间从事计算机网络相关的工作,我发现计算机网络有一个显著的特点,就是这是一个不仅需要背诵,而且特别需要将原理烂熟于胸的学科。很多问题看起来懂了,但是就怕细问,一问就发现你懂得没有那么透彻。
1.3 ifconfig :熟悉又陌生的命令行
当面试者听到这个问题的时候,常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题?
1.4 DHCP 与 PXE:IP 地址是怎么来的,又是怎么没的
上一节,我们讲了IP地址的一些基本概念。如果需要和其他机器通信,就需要一个通信地址,我们需要给网卡配置一个IP地址。
第2章从二层到三层.
2.1从物理层到MAC层:如何在宿舍里自己组网玩联机游戏,本节有3个重点需要记住:
- MAC层是用来解决多路访问的“堵车”问题的。
- ARP是通过“吼”的方式来寻找目标MAC地址的,“吼”完之后会记住一段时间,这个叫作缓存。
- 交换机是有MAC地址学习能力的,学会了它就能知道谁在哪里,不用广播了。
2.2交换机与VLAN:办公室太复杂,我要回学校,本节总结如下:
- ·当交换机的数目越来越多时,会遭遇环路问题,让广播包迷路。这时就需要使用STP通过“比武论剑”的方式,将有环路的图变成没有环路的树,从而解决环路问题。
- ·交换机数目过多会导致隔离问题。可以通过VLAN形成虚拟局域网,从而解决广播问题和安全问题。
2.3ICMP与ping:投石问路的侦察兵,本节内容总结如下:
- ·ICMP 相当于网络世界的侦察兵。本节讲解了两种类型的ICMP报文,一种是主动探查的查询报文,一种异常报告的差错报文。
- ping使用查询报文,Traceroute使用差错报文。
2.4世界这么大,我想出关:欧洲十国游与玄奘西行,本节总结如下:
- ·如果离开局域网,就需要经过网关。
- ·路由器是一个三层设备,里面有如何寻找下一跳的规则。
- ·经过路由器之后MAC头要变,如果I地址不变,相当于不换护照的“欧洲十国游”,如果IP地址改变,相当于换护照的“玄奘西行”。
2.5路由协议:“西出网关无故人""敢问路在何方”,本节总结如下:
- 路由分静态路由和动态路由,静态路由可以配置复杂的策略路由,控制转发策略。
- 动态路由有两种主流协议,距离矢量路由协议和链路状态路由协议。分别对应BGP和OSPF 这两个实现。
因为笔记的内容实在太多,下面就以截图展示部分内容了。
第3章最重要的传输层
3.1UDP:虽然简单但是可以定制化
讲完层以后,接下来我们开始讲传输层。在1.1节中已经讲过,传输层里比较重要的两个协议,一个是TCP,一个是UDP。对不少从事底层开发或者应用开发的人来讲,最常用的就是这两个协议。面试时,这两个协议经常会被放在一起问,因而在本书中也会将两者结合起来讲。
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.1 HTTP:看个新闻原来这么麻烦,本节总结如下:
- HTTP很常用,也很复杂,重点记住GET、POST、PUT、DELETE这几个方法,以及重要的首部字段。
- HTTP2.0通过头压缩、分帧、二进制编码、多路复用等技术提升性能。
- QUIC协议通过基于UDP自定义的连接、重传、多路复用、流量控制等机制进一步提升性能。
4.2 HTTPS:点外卖的过程原来这么复杂,本节总结如下:
- 加密分对称加密和非对称加密。对称加密效率高,但是解决不了密钥传输问题;非对称加密可以解决这个问题,但是效率低。
- 非对称加密需要通过证书和权威机构来验证公钥的合法性。
- HTTPS是综合了对称加密和非对称加密的HTTP。既保证传输安全,也保证传输效率。
4.3流媒体协议:如何在直播里看到帅哥美女,本节总结如下:
- 编码两大流派达成了一致,都是通过关于时间、空间的各种算法来压缩数据的。
- 压缩好的数据,为了方便传输会组成一系列NALU,按照帧和片依次排列。
- 排列好的NALU在网络传输时,要按照RTMP包的格式进行包装,RTMP包会拆分成块进行传输。
- 推送到流媒体服务器的视频流经过转码和分发,可以被客户端通过RTMP拉取,然后组合为NALU,解码成视频格式进行播放。
4.4 P2P协议:下载电影,分布式协议速度快,本节总结如下:
- 下载一个文件可以使用HTTP或FTP,这两种协议都使用集中下载的方式,而P2P则换了一种思路,采取去中心化下载的方式。
- P2P也有两种下载方式,一种是依赖于tracker服务器,即元数据集中,文件数据分散;另一种基于分布式哈希算法,将元数据和文件数据全部分散。
第5章陌生的数据中心
5.1 DNS:网络世界的地址簿
前面我们讲了平时常见的看新闻、支付、直播、下载等场景,现在网站的数量非常多,常用的网站就有二三十个,如果全部通过I地址进行访问,恐怕很难记住。因此,我们需要一个地址簿,根据网站名称就可以查看具体的地址。
例如,“西湖边的‘外婆家’”就是名称,通过地址簿,我们可以查看它到底位于哪条路,门牌号是多少号。
5.2HTTPDNS:网络世界的地址簿也会指错路
上一节我们知道了DNS的两项功能,第一项功能是根据网站名称查到具体的IP地址,另一项功能是针对多个地址做负载均衡,而且可以在多个地址中选择一个距离近的地址访问。
5.3CDN:你去小卖部取过快递吗
5.4数据中心:我是开发商,自己拿地盖别墅
无论是看新闻、下订单、看视频,还是下载文件,最终的目的地都是数据中心。我们前面学了这么多与网络协议相关的知识,你是不是很好奇数据中心究竟长什么样呢?
5.5VPN:朝中有人好做官
前面我们讲到了数据中心,数据中心里面很复杂。有的公司有多个数据中心,需要将多个数据中心连接起来,或将办公室和数据中心连接起来,此时该怎么办呢?
5.6移动网络:去巴塞罗那,手机也上不了“脸书”
前面讲的都是电脑上网的场景,那使用手机上网有什么不同呢?
第6章云计算中的网络
6.1 云中网络:自己拿地成本高,购买公寓更灵活
6.2 软件定义网络 共享基础设施的小区物业管理办法
6.3 云中网络之安全:虽然不是土豪,也需要基本保障
6.4 云中网络之 QoS :室友疯狂下电影,我该怎么办
6.5 云中网络之隔雷 GRE VXLAN :虽然住一个小区,也要保护隐私
第7章容器技术中的网络
第8章有微服务相关协议
第9章网络协议知识串讲
写在最后
网络协议既是基础,又绕不过去,可能你会觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了。但是服务数量一多 ,吞吐量一大,我们关心的不再仅仅是某个Java应用,而是要提升整个集群的性能,这时网络问题就会出现。不得不说我们做技术的如果基础打好了,在最新的技术出来以后,只要经过短时间的学习,就很容易上手,就能在新技术的滚滚浪潮中保持快速学习的能力。
因为这本书内容实在是太多了!没有办法给大家全部展示出来了,
标签:数据中心,Github,20,标星,网络协议,网络,UDP,地址,路由 From: https://blog.51cto.com/u_16173760/6840422