网络协议学习记录——一个下单请求的通信过程

传输路线
客户端    服务端

应用层     应用层
 ↓       ↑
传输层     传输层
 ↓       ↑
网络层     网络层
 ↓       ↑
链路层  →  链路层

例如:
  你想去某个商城网站购买东西,通过url访问https://www.shop.com,这个域名只是一个名字,浏览器并不知道具体是什么地方,所以这里需要用到地址簿协议DNS或者HTTPDNS去查询该域名的IP地址203.195.254.111,这个ip地址也可以说是互联网的”门牌号“。
  
  知道了详细的地址后,浏览器就会打包请求,一般会用HTTP协议,如果是像购物这种需要使用加密的HTTPS协议,然后里面就是你的请求内容,我要买一台手机,价格5000元。这里说的HTTP,HTTPS,DNS协议就是应用层的一些处理了。

在这里插入图片描述
  接下来就是到了传输层了,应用层将包交给它的下一层传输层处理,这个交接过程是用socket编程实现的,传输层有2个协议,UDP无连接协议和TCP面向连接协议,这里用到的TCP,因为面向连接就是保证包能到达目标地址,如果没到达会一直重传,一直到达为止。
 
  传输层会把包继续封装,内容分别是浏览器监听的端口,和服务器的端口。操作系统会根据端口号判断,将得到的包交给在正在监听这个端口进程处理。
在这里插入图片描述
  传输层封装后,继续交给网络层,这里用到的协议是IP协议,网络层会把本地的IP地址和目标服务器IP地址和这个包封装起来。
在这里插入图片描述
  接下来就是ip地址的问题了,操作系统知道ip地址后要如何找到目标机器,ip地址有本地与外地之分,可以从门牌号看出来,如果是要去外地的话,就得先到网关,就像你要去国外,要先过海关。
  
  操作系统启动的时候DHCP协议会配置ip地址和默认网关,假设默认网关是192.168.1.1.
  
  操作系统知道了目标在外地了,就得把ip地址发给网关,但是要怎么哪一台机器是网关?这时就得大声的问,谁是192.168.1.1?网关就会回答,我是!我在村头。这个村头就是MAC地址,这个大声问就是ARP协议。这个比喻真的很形象哈哈哈,很清晰。
  
  所以,ip层接下来就是交给MAC层了,然后再由网卡根据MAC地址把包发给网关。
  在这里插入图片描述
  网关相当于一个路由器,一个路由器连接着一个个国家(通信区域),每个国家自己内部,能通过他们自己本地的MAC进行通信。
  
  接下来就像是西天取经一样了,你来到网关,然后问它你要去的地方怎么走(拿着你的目标ip地址去问),网关就会告诉你下一个网关的MAC地址要怎么去到,接着你得拿这现在这个网关的MAC地址来到下一个网关才能通过,然后一直走直到你走到目标ip的那个区域的网关。
  
  这里有一个小思考题:为什么不直接用通过路由表得到的ip访问下一个网关呢?为什么还要通过mac地址呢?
  答:首先DHCP是动态分配ip地址,所以每次接入的时候,ip地址会变化,mac地址对应着每一台物理机全球唯一的。
  补充答案:例如你要去广州万达广场24楼1598号办公室找小王,ip就相当于广州万达广场24楼1598号,mac地址就相当于小王的身份证号。
  如果你拿着ip问这个地址是在哪里,就会有人告诉你,然后来到1598号还是没找到小王,这时你就可以大喊身份证xxxxxx是谁的,这时小王听到了就会回应你,但是你如果在上海拿着身份证号去问这个人在哪里,你估计很难找到,因为小王在广州。
  
  网关会在目标区域内问谁是目标IP啊?接着目标服务器会回复一个MAC地址,通过网关后,网络包就可以更加这个MAC地址找到目标服务器了。
  
  目标服务器拿到网络包后,检查MAC地址,对上了,开始解包取下MAC头,然后发给操作系统网络层,检查IP,也对上了,继续解包取下IP头,IP头里会写着上一层是TCP协议,于是交接给传输层。
  
  在传输层接收到包后,会返回一个收到网络包的信息给客户端,相当于报个平安,您的快递已经送达,只限于报平安,不是业务逻辑的处理结果,这里还没到达应用层。
  
  如果过了一段时间,没有收到报平安的信息,TCP就会重新发送这个包,知道收到平安信息为止,是TCP自己重发,不是你重新点击下单提交。
  
  解TCP包的时候,TCP头部里面有之前说的封装好的服务端的目标端口号,通过端口号找到正在监听该端口号的进程,假设是nginx,将这个包发给nginx(接待员)。
  
  接到HTTP请求后,要买一台手机,价格5000元,接待员就会安排专门管理订单的进程订单内容是什么,库存管理的进程库存要扣多少件,支付的进程要支付多少钱。
  
  一般支付进程都是通过远程过程调用的,也就是由RPC调用帮我们完成。
  
  当所有进程处理好之后就回复一个HTTPS包,说下单成功了!接着这个包裹着下单成功通知的包就会和来的时候一样,经过重重难关回到你的个人电脑,然后在浏览器给你显示支付成功。
  
  本博客是阅读刘超老师的《趣谈网络协议》后,记录的,有兴趣的话可以去看看,写的真的很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值