网络协议什么是协议呢?认识网络协议古代战报传送网络分层网络协议的分层总结参考
这一篇文章主要是概述网络协议以及网络协议的分层。首先,我们来思考一个问题,如何让两台计算机甚至多台计算机之间进行通信呢?回答这个问题之前,我们先来想想生活中两个人是如何交流的呢?这个我们都知道,是通过语言,相同的语言(例如:汉语)。只有操着相同语言的两个人才能进行交流,这里的语言就是一种协议。同样的让计算机交流起来也需要通过协议来处理。
下面我们通过下面这句话来总结协议的几个要素: 我吃完了饭。 这是一句很普通的汉语句子,这个句子符合汉语的语法(主(我)谓(吃完了)宾(饭))、 然后也是一段有意义的话,表明了我当前做完了某件事情。最后是这段话也是顺序的,我们不能说 饭吃完了我。这样是没意义的。 通过上面这个例子,我们可以总结出协议三个要素: 1. 语法:语法就是一段内容要符合一定规则和格式,例如括号要成对,结束要有分号,汉语句子要有主谓宾 2. 语义:就是这一段内容代表了某种意义,例如:数字减去数字是有意义的,数字减去文本是没有意义的。 3. 顺序:就是先干啥,后干啥,比如先起床,后穿衣服。 计算机之间进行通信就需要网络协议。例如:我们输入 http://www.baidu.com 。我们就可以得到如下响应信息:
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的这个接口。
http://192.168.216.96:8080/ssm-req/json/getJson2.do
和请求参数 {'name':'sange','age':12}
。设置好请求头application/json;charset=UTF-8
。请求发出后,首先到达HTTP协议所在的应用层,HTTP头主要是封装请求方法,请求地址,请求头的格式等信息。封装后的结果如下图所示。应用层加上HTTP头之后,就将包交给其下一层去处理。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文简单的概述了网络协议的分层,以及请求包在网络上的传输过程。
刘超老师的趣谈网络协议 TCP/IP协议四层模型