初识网络协议和网络分层

初识协议概念

语言是一种工具,只有具有相同语言的人,才能在彼此之间进行交流。同理,协议就像一种规则,只有基于相同规则的事物,才能进行彼此之间的通信。今天所说的网络协议,亦不过如此。

协议有三要素:

  • 语法:内容要符合规则和形式
  • 语义:内容能够代表某种意义
  • 顺序:先做什么,再做什么,这个顺序要有规范

下面就是一个符合三要素的例子

HTTP/1.1 200 OK
Date: Tue, 27 Mar 2010 17:50:26 GMT
Content-Type: text/html;charset=UTF-8
Content-Language: zh-CN
<!DOCTYPE html>
<html/>
<head/>
<base href="" />
<meta charset="utf-8"/> 
<title></title>

初识请求流程

首先我们先来看通过浏览器发送一次请求,需要经过的流程。在这个流程之中,我们就能大概了解一次请求所涉及的网络协议。
请求流程:

  1. 当我们在浏览器输入一个URL,并发起请求时候,浏览器首先会去DNS(地址协议本)或者HTTPDNS中去寻找其真正的IP地址。拿到真正的IP地址,就会开始去打包它的请求。这个请求会涉及到HTTP和HTTPS(加密)协议。DNS和HTTP协议所在的层就称为应用层
  2. 经过了应用层之后,接下来来到传输层,传输层主要有两种协议:TCP/UDP。TCP是面向连接的,会保证这个包发送到目的地,这个是比较稳定的。UDP是无连接的,效率快,但是不稳定。TCP协议会监听两个端口,一个是浏览器端口,一个是服务端端口。知道IP地址你只能知道是哪台机器,但是你的请求需要发送给对应的进程。这个就是端口号的作用了。
  3. 经过传输层封装后,浏览器就会把包交给操作系统的网络层,网络层的协议是IP协议,这个协议里面会包含机器的IP地址和目标的IP地址。
  4. 操作系统知道了目标的IP地址,这个时候就要去寻找对应这个IP的机器了,操作系统会判断这个IP是本地的还是外地的,如果是外地的那就需要走网关。操作系统在启动时候就会被DHCP协议配置IP地址,默认的网关IP地址是192.168.1.1。操作系统会把目标IP发送给网关,如何发呢?就需要ARP协议,通过APR协议,网关会把自己的本地地址告诉操作系统,这个本地地址就是MAC地址。
  5. 经过第4步之后,操作系统就将IP包给到下一层,也就是MAC层。网卡会将包发出去,这个包里面包含IP和MAC地址,所以能够到达网关。
  6. 网关收到这个IP包后,就会找到对应的目标IP,其实网关就是相当于一个路由器,路由表上就记录着这个IP地址该怎么走,这里又会涉及到路由协议,常用的OSPF和BGP。至于这里这个网关怎么找到对应的IP呢?网关会把IP拆分,判断下一跳渠道哪个路由器,最后一个路由器知道这个网络包要去到哪个地方,会叫一声,谁是目标IP,这个时候对应的目标IP就会回复一个MAC地址。网络包发送到这个MAC地址,然后就会发送给这个目标机器了。
  7. 目标机器发现MAC地址对上了,会把MAC头取下来,发送给操作系统的网络层,网络层发现IP对上了,就会把IP头取下来,假设这次请求是TCP协议,那么网络层就会在IP头写上封装的是TCP协议,并发送到传输层。在传输层,对于收到的每个包,都会回复这个包收到了,这个回复会沿着来的方向,发生给浏览器。网络包平安到达TCP层,TCP头中就有目标的端口号,通过这个端口号就能够找到对应的进程。
  8. 网络包如果在传送的过程中丢失了,这个发送端的TCP层会不断重新发送请求,直到收到回复为止。

上述就是一个大概的请求过程,这其中涉及到多种网络协议,还有应用层、传输层、网络层、MAC层。
这里可能有人分不清MAC地址和IP地址,形象的比喻下MAC地址就好比一个人的身份证,是独一无二的。但是通过身份证你是找不到这个人的,所以你需要知道这个人的现居地址,也就是IP地址。

网络分层的意义

复杂的程序都要分层处理,不仅是为了解耦,还是为了让每个模块更好的专注于它该完成的任务,也利于维护。著名的MVC模式,就是把程序拆分controller、service和dao三层,这样维护起来就很容易。
网络分层也是如此,不同层各司其职,但是彼此之间又相互协助。借用一个形象的比喻,网络分层之间的协助就好比:总经理说话,经理补充几句,主管补充几句,员工再补充几句。
传输层在工作的时候,比如TCP的三次握手,都需要IP层和MAC层协助,来把消息发送出去。因此对于网络分层来说,可以没有上层,但是不能没有下层,没有下层就运行不起来了。就好比员工都走了,那这个总经理又有何作用呢?

处理网络包的程序中会涉及二层设备和三层设备,这里补充下这两个设备的概念

  • 二层设备收进去整一个网络包,然后把MAC头摘取下来,看看是要丢弃转发还是自己处理
  • 三层设备把MAC头摘下来,再把IP头摘下来,看看使用丢弃转发还是自己处理

记录一个问题 为啥有了ip还需要mac地址,这里找到一些看起来比较合理的解释:
首先:交换机本身是一个二层设备,它里面只有处理mac地址的逻辑,而没有处理ip的逻辑。所以需要mac地址。
其次:ip的作用是保证发送的包在网络中传输,到达目标服务器所在局域网的网关。但是目标的主机ip有时候是会变化的,所以这个时候就会出现找不到目标主机的情况,所以需要一个mac地址来唯一对应一台机器。
最后:mac地址是局域网寻址,ip地址是网络寻址。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值