语法:这段内容要符合一定的规则和格式
语义:这段内容要代表某种意义
顺序:先干什么后干什么
操作系统启动的时候就会被DHCP协议配置IP地址,以及默认的网关IP地址)
当在浏览器输入一个URL的时候,打开地址簿去寻找(可以使用一般的地址簿协议DNS,也可以使用另一种更加精确的HTTPDNS)最终会查找到对应的IP地址
知道了目标地址,浏览器就要开始打包他的请求,对于普通的浏览请求往往会使用HTTP协议,对于购物的请求往往会进行加密传输就会使用HTTPS协议
DNS、HTTP、HTTPS 所在的层我们称为应用层,经过应用层封装以后浏览器会将应用层的包交给下一层(传输层)去处理,通过socket编程去实现,传输层有两种协议,一种是面向连接的TCP,另一种是无连接的UDP。
TCP协议有两个端口:浏览器监听的端口,电商服务器的端口(源端口和目的端口),操作系统通过端口来判断,他得到的包应该交给哪个进程
传输层传输完成之后,浏览器交给网路层(IP协议里面又原IP地址和目的IP地址),这时操作系统知道了目标IP地址,就要开始寻找他了
操作系统通过ARP协议判断谁是目标IP,然后加上MAC头
于是操作系统将IP包交给了下一层MAC层,然后网卡就把包发送过去,这个包是有MAC地址的,所以能过顺利到达网关(如果不是在本地的话)
网关收到包,会判断下一步怎么走,网关往往是一个路由器,每个路由器都有一个路由表(到哪个IP应该怎么走)
路由器有点像玄奘西行路过的一个个国家的一个个城关。每个城关都连着两个国家,每个国家相当于一个局域网,在每个国家内部,都可以使用本地的地址 MAC 进行通信。
每当通过路由器时,都要拿出IP头,查找路由表。
路由器之间也会沟通,通过一些路由协议,常用的有OSPF和BGP。
直到最后一个路由器:路由器对该局域网用ARP协议大吼一声,目标服务器就会回复一个mac地址,然后通过这个MAC地址就可以找到目标服务器,然后把包发送给他。
目标服务器发现 MAC 地址对上了,取下 MAC 头来,发送给操作系统的网络层。发现 IP 也对上了,就取下 IP 头。IP 头里会写上一层封装的是 TCP 协议,然后将其交给传输层,即 TCP 层。在这一层里,对于收到的每个包,都会有一个回复的包说明收到了(报平安)。如果过一段时间浏览器还是没有收到这个平安,发送端的 TCP 层会重新发送这个包,还是上面的过程,直到有一天收到平安到达的回复。这个重试绝非你的浏览器重新将下单这个动作重新请求一次
对于浏览器来讲,就发送了一次下单请求,TCP 层不断自己闷头重试。除非 TCP 这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。
当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站的进程正在监听这个端口号,假设一个 Tomcat,将这个包发给电商网站。
电商网站的进程得到 HTTP 请求的内容,知道了要买东西,买多少。
如何告诉相关的进程呢?往往通过 RPC 调用,即远程过程调用的方式来实现。远程过程调用就是当告诉管理订单进程的时候,接待员不用关心中间的网络互连问题,会由 RPC 框架统一处理。RPC 框架有很多种,有基于 HTTP 协议放在 HTTP 的报文里面的,有直接封装在 TCP 报文里面的。
当接待员发现相应的部门都处理完毕,就回复一个 HTTPS 的包,告知下单成功。这个 HTTPS 的包,会像来的时候一样,经过千难万险到达你的个人电脑,最终进入浏览器,显示支付成功。
原文:https://www.cnblogs.com/mots/p/14815151.html