刘超《趣谈网络协议》第一讲|为什么要学习网络协议的学习笔记
计算机语言作为程序员控制一台计算机工作的协议,具备了协议的三要素。
1、语法,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。
2、语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没有意义。
3、顺序,就是先干啥,后干啥。例如,可以先加上某个数值,然后再减去某个数值。
互联网世界的运行过程:
1、在浏览器中输入地址:https://www.kaola.com(URL,不知道地址)
通过地址簿查找协议 DNS 或者更精准的HTTPDNS查找
2、得到IP地址:106.114.138.24。(互联网的门牌号)
开始打包请求,普通:HTTP协议,购物的加密传输:HTTPS
DNS、HTTP、HTTPS 所在的层我们称为应用层。封装之后浏览器将应用层的包传递下去。
3、传输层:a.无连接的协议UDP b.面向连接的协议TCP(支付使用TCP)
面向连接:TCP 会保证这个包能够到达目的地。如果不能到达,就会重新发送,直至到达。
TCP 协议里面会有两个端口,一个是浏览器监听的端口,一个是电商的服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程。
4、网络层:IP协议,在 IP 协议里面会有源 IP 地址,即浏览器所在机器的 IP 地址和目标 IP 地址,也即电商网站所在服务器的 IP 地址。
根据目标IP判断是本地还是外地。
电商网站为外地,则去网关(类似于去国外的海关),操作系统启动时,DHCP协议就配置IP地址以及默认的网关IP地址192.168.1.1
5、MAC层:ARP协议(吼一声)告知IP地址给网关,网关分配MAC地址
6、网关:网关收到包之后,会根据自己的知识,判断下一步应该怎么走。网关往往是一个路由器,到某个 IP 地址应该怎么走,这个叫作路由表。
路由器有点像玄奘西行路过的一个个国家的一个个城关。每个城关都连着两个国家,每个国家相当于一个局域网,在每个国家内部,都可以使用本地的地址 MAC 进行通信。
一旦跨越城关,就需要拿出 IP 头来,里面写着贫僧来自东土大唐(就是源 IP 地址),欲往西天拜佛求经(指的是目标 IP 地址)。路过宝地,借宿一晚,明日启行,请问接下来该怎么走啊?
城关往往是知道这些“知识”的,因为城关和临近的城关也会经常沟通。到哪里应该怎么走,这种沟通的协议称为路由协议,常用的有OSPF和BGP。当网络包知道了下一步去哪个城关,有会通过MAC地址再去下一个城关,直到最后一个城关。
到达后,目标服务器会回复一个MAC地址,网络包会通过这个地址找到目标服务器,取下MAC取下MAC头来,发送给操作系统的网络层。在IP头里写上一层封装的TCP协议,交给传输层即TCP层。
然后,会沿着来的方向回复一个信息(报平安),如果过了一段时间还没收到,TCP层会重新发送这个包,直到收到回复的信息。
这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP 层不断自己闷头重试。除非 TCP 这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。
7、当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个 Tomcat,将这个包发给电商网站。
电商网站的进程得到HTTP请求的内容,知道了要买东西,Tomact会负责统筹处理这个请求,然后通过RPC调用(即远程过程调用的方式来实现)。
当接待员发现相应的部门都处理完毕,就回复一个 HTTPS 的包,告知下单成功。这个 HTTPS 的包,会像来的时候一样,经过千难万险到达你的个人电脑,最终进入浏览器,显示支付成功。
整体框架图: