我们用户在浏览器下单的过程中,只需要简单的在浏览器输入IP地址,然后进行购物。但是计算机底层却使用了很多协议进行连接通信的。
我们在浏览器输"https://www.kaola.com",这只是一个url,浏览器只知道这是"https://www.kaola.com",但是并不知道具体的地点,这个时候,它就会打开地址簿去查找。这里的地址簿协议包括:DNS协议、HTTPDNS协议。
无论通过哪种协议,都会找到对应的具体ip地址:223.252.199.68.
知道了目标IP地址后,浏览器就开始打包其请求。普通浏览器请求使用HTTP协议,需要加密的请求,如:购物,则使用HTTPS协议。
HTTP协议如下
POST、URL、HTTP 1.1 正文:json格式、正文长度:1234 |
具体内容:购物的内容 |
------------------DNS、HTTP、HTTPS所在的这层我们称之为应用层
应用层OK后,我们利用socket,把包发给下一层:传输层。
这里主要有两种协议:
TCP协议——面向连接的协议:会一直尝试发包,直至收到回复;
UDP协议——无连接的协议。
TCP协议包括两个端口:本地端口、目标端口
浏览器端口:12345 电商端口:443 |
传输层OK后,浏览器会将包传递给操作系统的网络层:
IP协议
IP协议里面包括两个地址:本地地址、目标地址
本地电脑IP:192.168.1.4、电商服务器IP:223.252.199.68 |
知道了IP后,下一步就需要找到目标IP所在的机器。很明显该机器不在本地。
如果在本地的话,需要通过ARP协议,也就是所谓的“吼”!
如果不在本地的话,就需要网关,一步一步找到目标服务器:当操作系统启动过程中,本地电脑就被DHCP协议配置IP地址以及默认的网关192.168.1.1。
首先第一步:寻找本地的网关——ARP协议
MAC头
本地电脑MAC:192.168.1.14的MAC;网关的MAC:192.168.1.1的MAC |
将包发送给了MAC层,因为包里面有网关的MAC地址。
网关往往是一个路由器,通过路由器列表可以知道将要去那个IP,然后讲过不同的局域网,这个时候需要通过OSPF和BGP协议来进行通信,即路由协议。
当到达最后一个局域网,即目标服务器所在的局域网,这个时候是知道目标服务器的IP地址。然后目标服务器会一步一步的将MAC头、IP头拆下来,是否正确,最后将TCP层交给传输层。这一层会进行所有回复,但是并不是浏览器的请求的回复。
如下图所示:
电商网站得到了HTTP请求后,tomcat只是统筹这个请求,具体的事情并不是自己做,而是派发给对应的部门去做这些事情,
这时候RPC调用,即远程调用来实现,如果发现成功,则回复一个HTTPS的包,如来的时候一样,到达浏览器。