网络协议初始

当你在浏览器上输入一个URL,回车之后发生了什么?
首先它会根据地址簿协议DNS 或者更精准的 HTTPDNS去查找,最终得到一个IP地址,即你要访问的服务器的地址。
知道目标地址,浏览器就开始打包它的请求。对于普通的请求,通常使用HTTP协议,但对于那些需要加密传输的请求,会使用 HTTPS协议。
**DNS、HTTP、 HTTPS所在的层我们称为应用层。**经过应用层封装后,浏览器会将封装后的包交给传输层,这一过程是通过socket编程实现。

传输层有两种协议:无连接的UDP 协议;有连接的TCP协议。TCP协议会保证这个包能够到达目的地,如果如果不能到达,就会重复发送,直至到达。TCP协议里会有两个端口,一个是浏览器监听的端口,一个是目标服务器的监听端口。(操作系统通常通过端口来判断收到的包给哪个进程)

浏览器会把传输层封装后的包交给操作系统的网络层。网络层的协议是IP协议,里面会再封装上目的IP和源IP。之后操作系统会将这个包发往目的地。

注:操作系统启动的时候,就会被DHCP协议配置IP地址,以及默认的网关地址。

操作系统通过ARP协议向外泛洪(问谁是网关呀?),找到网关得MAC地址。于是操作系统再封装一层MAC(客户端电脑以及网关的MAC)。网卡再将包发出去,网关接收到。

网关往往是一个路由器,它维护着一个路由表。路由器维护着一个局域网,局域网内部都可以使用MAC进行通信,但如果需要跨越网关,就需要用IP进行通信。网关通过路由协议(OSPF 、BGP)维护着自己与相邻网关关系的一张路由表。

最终到达服务器所在的网关,这个网关吼一声谁是目标IP,目标服务器会回复一个自己的MAC,这个包被这个网关换上目标MAC,于是就到达目标服务器。

目标服务器发现MAC对上了,就取下MAC头,发送给网络层,发现IP也对上了,就取下IP头然后交给TCP层,在这一层里,对于收到的每个包,都会有一个回复的包说明收到了,仅仅是TCP层的一个说明而已。这个回复包沿着来时的路径返回客户端。过一段时间还没收到客户端的回复,就会重发。

当网络包平安到达TCP层后,根据TCP层中目标端口号,找到目标进程。

注:电商网站的进程得到 HTTP 请求的内容,知道了要买东西,买多少。往往一个电商网站最初接待请求的这个 Tomcat 只是个接待员,负责统筹处理这个请求,而不是所有的事情都自己做。例如,这个接待员要告诉专门管理订单的进程,登记要买某个商品,买多少,要告诉管理库存的进程,库存要减少多少,要告诉支付的进程,应该付多少钱,等等。
如何告诉相关的进程呢?往往通过 RPC 调用,即远程过程调用的方式来实现。远程过程调用就是当告诉管理订单进程的时候,接待员不用关心中间的网络互连问题,会由 RPC 框架统一处理。RPC 框架有很多种,有基于 HTTP 协议放在 HTTP 的报文里面的,有直接封装在 TCP 报文里面的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值