网络分层流转---从浏览器请求到服务端响应究竟经历了什么?

网络分层流转—从浏览器请求到服务端响应究竟经历了什么?

网络编程之 Socket 编程 一文看懂 承接上文,我想继续聊聊数据是如何在网络中传输的,我在北京去请求一个部署在上海的服务,我是怎么找到他的呢?数据时怎么在这之间流转的呢?心中多少对此有些疑惑,总有模棱两可的感觉,所有本篇文章想解开这篇战争迷雾。

先来点真实的,网络为什么要分层?

在设计上讲,分层其实就是分块,就是将打的问题分级分解为小的问题,各层各级各司其职,做好自己那一块的小事情,从而完成一个复杂问题。所以为什么?为了拆解复杂问题

既然,分了这些层,那么对于 TCP/IP 网络模型,一个网络请求是必然是要经历层与层之间的传递

在这里插入图片描述

其实对于数据的传输,从 HTTP -> TCP -> IP ->MAC 其实就是一个套 “头” 的过程,这个 “头” 其中最重要的信息就是标识你是谁,你要去哪

在这里插入图片描述

首先是我们发送一个请求出去前会做什么?如何准备数据?如上图。

对于一个普通的 HTTP 请求来说,基本的数据会放到 HTTP body 中,协议内容放到 header 中,这是第一步的应用层

下一步会经过传输层的处理,对我们要发送的数据添加 TCP 头,TCP 头中包含源端口号(也就是请求发起方的端口号),以及目的端口号(请求服务的端口号)。

这之后达到网络层 IP 协议的处理,这里会添加 IP 头,其中包含源 IP 地址和目标 IP 地址。

然后 数据链路层 处理 MAC 地址,添加 MAC 头,其中包含源 MAC 地址和目标 MAC 地址(目标 MAC 地址是会变的,一开始不知道最终目标的 MAC 地址时可能是网关的 MAC 地址)

最后进入物理层通过网线进行数据传输,这其中可能会经过网关,路由器进行中转寻址定位。一路过关斩将直到找到目标服务器的地址。

而服务器在收到请求后,也会一层层去查看(说是一层层,对于程序来说这个查看也就是在数据结构中移动下指针而已),校验是否是需要自己处理的,MAC 地址对不对,IP 地址对不对,要请求的是我的那个端口的服务,都 OK 会交给应用层服务进行处理,然后重复上面的过程将结果包起来返回给客户端浏览器。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dying 搁浅

两杯酒,一杯敬你余生多欢喜。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值