前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单的网络协议概述

简单的网络协议概述

作者头像
码农飞哥
发布2021-08-18 10:43:35
3880
发布2021-08-18 10:43:35
举报
文章被收录于专栏:好好学习

网络协议什么是协议呢?认识网络协议古代战报传送网络分层网络协议的分层总结参考

网络协议

这一篇文章主要是概述网络协议以及网络协议的分层。首先,我们来思考一个问题,如何让两台计算机甚至多台计算机之间进行通信呢?回答这个问题之前,我们先来想想生活中两个人是如何交流的呢?这个我们都知道,是通过语言,相同的语言(例如:汉语)。只有操着相同语言的两个人才能进行交流,这里的语言就是一种协议。同样的让计算机交流起来也需要通过协议来处理。

什么是协议呢?

下面我们通过下面这句话来总结协议的几个要素: 我吃完了饭。 这是一句很普通的汉语句子,这个句子符合汉语的语法(主(我)谓(吃完了)宾(饭))、 然后也是一段有意义的话,表明了我当前做完了某件事情。最后是这段话也是顺序的,我们不能说 饭吃完了我。这样是没意义的。 通过上面这个例子,我们可以总结出协议三个要素: 1. 语法:语法就是一段内容要符合一定规则和格式,例如括号要成对,结束要有分号,汉语句子要有主谓宾 2. 语义:就是这一段内容代表了某种意义,例如:数字减去数字是有意义的,数字减去文本是没有意义的。 3. 顺序:就是先干啥,后干啥,比如先起床,后穿衣服。 计算机之间进行通信就需要网络协议。例如:我们输入 http://www.baidu.com 。我们就可以得到如下响应信息:

代码语言:javascript
复制
 HTTP/1.1 200 OK
 Accept-Ranges: bytes
 Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
 Connection: keep-alive
 Content-Length: 2381
 Content-Type: text/html
 Date: Sun, 15 Mar 2020 08:26:41 GMT
 Etag: "588604c8-94d"
 Last-Modified: Mon, 23 Jan 2017 13:27:36 GMT
 Pragma: no-cache
 Server: bfe/1.0.8.18
 Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<html> <head><meta http-equiv=content-type content=text/html;charset=utf-8>
<title>百度一下,你就知道</title>

这段响应的报文就符合协议的三要素。 第一:符合语法,只有按照上面那个格式来,浏览器才会认,例如:首先是响应状态,然后是首部,最后是请求体。 第二:符合语义,就是按照约定的意思来。例如:状态200,表述的意思是网页成功返回,如果不成功的话,就是我们常见的404,400等错误 第三:符合顺序,你点击浏览器,就会发送出一个HTTP请求,然后,才会有上面一串HTTP的响应内容。

认识网络协议

古代战报传送

我们先来看看古代战报传送的例子:将军发命令,下属来写。写完之后找人包装盖章,然后,把公文交给信号兵,没信号兵每过一个关卡都要盖公函,到达京城之后,再一层一层的往上传。先看是发给哪个部门的,去掉一层包装,再把内容发给上一级,最终送到皇上手上,皇上大人无需知道经过了哪些驿站关卡。只需要知道哪个将军发的,发的什么。用中文写的还是用英文写的就OK了。 从架构分层的角度上我们来分析下这个过程。 这里的将军和皇上相当于应用层,由将军发送命令,发出信件,将军是源地址,由皇上来接受信件,皇上是目标地址 这里的信号兵就是传输层,由他来传送信件。 这里的关卡相当于物理层,由他来指导信号兵的行进方向,因为,京城很远,直接让信号兵一个人跑,他可能完全不知道去的路,所以,这里关卡的作用就是主要是盖章告诉给信号兵指明去京城的路。 同样的,为了明确职责,网络协议也进行了分层。下面我们就来看看网络的分层吧。

网络分层

现在我们来看看如下场景:假设计算机B上有接口getJson2.do, 当传入的请求参数是{"name":"张三","id":12}时,响应的数据是{"name":"张三","id":12,"age":34,"sex":"男"},现在计算机A要请求计算机B的这个接口。

  1. 如下,写好请求地址 http://192.168.216.96:8080/ssm-req/json/getJson2.do 和请求参数 {'name':'sange','age':12} 。设置好请求头application/json;charset=UTF-8。请求发出后,首先到达HTTP协议所在的应用层,HTTP头主要是封装请求方法,请求地址,请求头的格式等信息。封装后的结果如下图所示。应用层加上HTTP头之后,就将包交给其下一层去处理。

在这里插入图片描述

  1. 应用层的下一层是传输层(TCP层),传输层的有两种协议,一种是无连接的协议UDP,一种是面向连接的协议TCP,很显然,请求接口获取数据使用的面向连接的TCP协议。TCP协议里面会有两个端口,一个是计算机A(请求服务器)监听的端口,一个是计算机B(响应服务器)监听的端口。操作系统可以通过端口来判断,它得到的包应该给哪个进程,这就相当于告诉信号兵这封信要给谁。经过TCP层封装后的结果如下所示,传输层加上TCP头之后,然后把包给他的下一层处理。

在这里插入图片描述

  1. 传输层的下一层就是网络层(IP层)。网络层的协议是IP协议,在IP协议里面会有源IP地址,即计算机A(请求服务器)的IP地址和目标IP地址,即计算机B(目标服务器)的IP地址,网络层会加上IP头,然后把包给他的下一层。

在这里插入图片描述

  1. 网络层的下一层就是数据链路层(MAC层),MAC层有ARP和RARP(Reverse Address Resolve Protocol)即逆地址解析协议,该协议实现了IP地址和物理地址(MAC地址)之间的转换,经过MAC层包装加上MAC头之后,就最终就是我们需要的包。请求到达计算机B之后

在这里插入图片描述

  1. 计算机B(目标服务器)发现MAC地址对上了,取下MAC头来,发送给操作系统的网络层。发现IP也对上了,就取下IP头,IP头里会写上一层封装的TCP协议,然后将其交给传输层,即TCP层。 在这一层,对于收到的每个包,都会有一个回复的包说明收到了,这个回复的包绝非这次请求接口的结果,而仅仅是TCP层的一个说明,即收到之后的回复。当然这个回复,会沿着刚才来的方向走回去。

网络协议的分层

在这里插入图片描述

总结

本文简单的概述了网络协议的分层,以及请求包在网络上的传输过程。

参考

刘超老师的趣谈网络协议 TCP/IP协议四层模型

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农飞哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网络协议
  • 什么是协议呢?
  • 认识网络协议
    • 古代战报传送
      • 网络分层
      • 网络协议的分层
      • 总结
      • 参考
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档