分析一次请求数据在OSI模型里的走向

前言

在之前的项目开发过程中,遇到部署项目之外的服务器问题就头大,为什么从我的地址呼不到目标地址,之前都是根据IP地址的 "前三位" 做个大致的区分,而且还要提交网络开通申请。

那么今天,我们就来对这服务器与服务器之间的交互做做研究

要知道服务器之间怎么沟通,首先就要对服务器交流的介质以及大前提做个了解

我们先简单了解下OSI七层模型 

OIS七层模型TCP/IP四层模型对应网络协议OSI对应网络协议TCP/IP
应用层应用层HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 
表示层数据的表示、安全、压缩(格式:GIF,ASCII,JPEG等)
会话层RPC,SQL(建立、管理、终止会话)
传输层传输层TCP/IP,UDP(定义传输数据的协议端口号,以及流控和差错校验,数据包一旦离开网卡即进入网络传输层 
网络层网络层ICMP IGMP IP(IPV4 IPV6)ARP,RARP,(进行逻辑地址寻址,实现不同网络之间的路径选择)ARP,RARP
数据链路层网络接口层ARP,RARP(地址解析协议/逆向地址解析协议,) 
物理层

 

上面描述了计算机于通信系统中互联的标准体系,计算机要进行通信,那么我怎么知道你是你呢!!换句话说,怎么唯一的标识一个计算机呢?没错,ip地址+mac地址。

IP地址

IP地址是互联网为其上的网络和每台主机分配的逻辑地址,用来屏蔽物理地址的差异IP地址是互联网协议地址,又称网际协议地址,是IP协议提供的一种统一的地址格式。格式为32位二进制数,通常使用点分十进制表示,例:192.168.0.1。

MAC地址

MAC地址是media access contronl address的缩写,直译为媒体存取控制地址,也成为以太网地址,局域网地址,MAC位址或物理地址。是网络设备生产上烧录在网卡上的一串序列码。格式为48位二进制数,通常使用 "-" 分十六进制表示 ,例:00-16-EA-AE-3C-40, 前三个字节00-16-EA代表网络制造商的标号,后三个字节由生产商分配,代表某个产品的系列号。只要不更改自己的MAC地址,那么MAC地址在世界上就是唯一的。

举个通俗的例子,我们想看某部电影了,那么当我们通过应用层的协议,比如HTTP协议,产生一个HttpServletRequest请求准备发往目标地址,短短一句话其实已经把物理层到网络层走完了!

其实服务器搭建完后,物理层,数据链路层就是连通的。

物理层,双绞线 ,电缆连接电子设备,在设备之间通过电信号(高低电平)传输,解析后就是我们经常说的比特流。

那么物理链路层主要任务有哪些呢?

1.向网络层提供服务接口,将当前机器网络层接收到的数据包转送到目标机器的网络层。【物理链路层从网络层获取数据包,将获取到的数据包封装成帧(拆分比特流成帧)以便传输,每个帧包含帧头,有效载荷,帧尾】

2.差错控制,处理传输错误。

3.流量控制(限制发送方)。调节数据流,确保接收方接收速度过慢时不会被快速的发送方淹没。

那么当我们看电影的请求经过客户端(浏览器)揉捏成一个request,我们知道HttpServletRequest是HTTP协议的组成部分,HTTP在应用层,到了传输层一般使用的是TCP虚拟连接,接下来是怎么样的呢,看过其他人解释这里是这么说的,应用层将请求包上HTTP协议头,传到传输层给其套上TCP协议头,然后到数据链路层经过arp...

说的没错,但是我感觉少了一步,首先应用层封装好HTTP报文,然后要通过数据链路层拼上以太网的协议头,包括本服务器的MAC地址。之后我们到了网络层,此时判断目标地址是域名,则到本服务器hosts文件中寻找对应的IP, 如果没有就会去路由器的缓存中寻找,然后到运营商的缓存,根DNS服务器中去寻找,找到后依次在各个层级做缓存。这个时候我们拿到了目标地址的IP,那么网络源节点和目标节点之间并不是只有一条路可选的,通信子网为源节点和目标节点提供了多条传输路径的可能性。当一个节点收到数据包后,要确定向下一个节点的路径,就是路由选择。寻址,路由选择,连接的保持、建立和中止都是网络层负责的。

言归正传,在网络层经过路由,寻址后,我们找到了目标IP的网关,那么怎么定位到目标服务器呢?ARP协议就排上用场了,ARP协议里保存了IP地址到MAC地址的映射表,此时判断目标IP与当前网关是否位于同一个子网,如果是,就从映射表中寻找目标IP的MAC地址,如果ARP的关联表中没有目标服务器的MAC地址,那么此时就会进行广播,目标服务器收到广播就会把自己的MAC地址返回了。

如果不是位于同一个子网,就发给网关,网关继续前往下一个节点,直到碰到认识目标服务器的子网节点。经过ARP协议获取到目标服务器的MAC地址。

此时数据包中包含HTTP协议,IP协议,同时源服务器的IP、MAC地址以及目标服务器的IP、MAC地址也都有了。

然后我们到了传输层,这里提供端到端的数据交互,面向连接的TCP协议以及面向无连接的UDP协议,这里我们选的是可靠的TCP协议。

终于我们的浏览器端与目标服务器完美的相遇了,进行激动的3次握手后,目标服务器收到了我们想要看电影的请求。爽快的将数据流返回给我们。

电影看完,收拾好纸巾,嗯??对了,一定是电影太煽情都感动哭了才用的纸巾。

电影看完后,此时我们的浏览器正和目标服务器进行深情告别,又握了4次手。连接关闭。

 

先写到这里,后续再完善补充。

以上便是我本次看电影时臆想出来请求位于OSI7层模型的数据走向,如果有不正确的地方还请大神指出。

 

                                                                                      天行健,君子以自强不息。博学而约取,厚积而薄发。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值