简单的网络协议概述

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

网络协议

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

什么是协议呢?

下面我们通过下面这句话来总结协议的几个要素:

我吃完了饭。 这是一句很普通的汉语句子,这个句子符合汉语的语法(主(我)谓(吃完了)宾(饭))、

然后也是一段有意义的话,表明了我当前做完了某件事情。最后是这段话也是顺序的,我们不能说 饭吃完了我。这样是没意义的。

通过上面这个例子,我们可以总结出协议三个要素:

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头之后,就将包交给其下一层去处理。

896365d433010d8740393ced62c530ce_20200315214747713.png

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

8892230e4f1ae2679e6655b8501dd1bb_20200315214815255.png

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

1bd2873895ef59c1e397b7678cd66722_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ1MzQ4MDg=,size_16,color_FFFFFF,t_70.png

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

c06b6b133af4f6f1a02b2c8c8169a95a_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ1MzQ4MDg=,size_16,color_FFFFFF,t_70.png

计算机B(目标服务器)发现MAC地址对上了,取下MAC头来,发送给操作系统的网络层。发现IP也对上了,就取下IP头,IP头里会写上一层封装的TCP协议,然后将其交给传输层,即TCP层。

在这一层,对于收到的每个包,都会有一个回复的包说明收到了,这个回复的包绝非这次请求接口的结果,而仅仅是TCP层的一个说明,即收到之后的回复。当然这个回复,会沿着刚才来的方向走回去。

网络协议的分层

总结

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

参考

刘超老师的趣谈网络协议

TCP/IP协议四层模型


相关文章
|
7天前
|
存储 网络协议 算法
【计算机网络】第一章 概述
【计算机网络】第一章 概述
59 8
【计算机网络】第一章 概述
|
9天前
|
安全 网络协议 Linux
Linux网络名称空间概述
Linux网络名称空间是操作系统级别的一种虚拟化技术🔄,它允许创建隔离的网络环境🌐,使得每个环境拥有自己独立的网络资源,如IP地址📍、路由表🗺️、防火墙规则🔥等。这种技术是Linux内核功能的一部分,为不同的用户空间进程提供了一种创建和使用独立网络协议栈的方式。本文旨在全方面、多维度解释Linux网络名称空间的概念、必要性和作用。
Linux网络名称空间概述
|
2月前
|
机器学习/深度学习 存储 算法
【轻量化网络】概述网络进行轻量化处理中的:剪枝、蒸馏、量化
【轻量化网络】概述网络进行轻量化处理中的:剪枝、蒸馏、量化
56 0
|
4月前
|
存储 开发框架 负载均衡
【计算机网络】第一章——概述
上篇文章我们对计算机的发展历史对大家进行了简要的描述,通过上篇文章不知道大家对于计算机网络有没有一个初步的认识。今天这篇文章从计算机网络的概念、分类、组成、功能、体系结构等计算机网络的概进行相关的分享,让大家对计算机网络有更深入的了解。
|
4月前
|
存储 网络协议 网络性能优化
计算机网络——概述
计算机网络——概述
|
1月前
|
机器学习/深度学习 编解码 Unix
超分数据集概述和超分经典网络模型总结
超分数据集概述和超分经典网络模型总结
20 1
|
2月前
|
内存技术
计算机网络——物理层概述(二)
计算机网络——物理层概述(二)
57 0
计算机网络——物理层概述(二)
|
2月前
|
存储 网络协议 安全
计算机网络——计算机网络的概述(一)
计算机网络——计算机网络的概述(一)
43 0
计算机网络——计算机网络的概述(一)
|
3月前
|
存储 网络协议 网络安全
【计算机网络】计网概述
【计算机网络】计网概述
77 0
|
3月前
|
传感器 网络协议 网络性能优化
《计算机网络》期末复习—第一章:概述
《计算机网络》期末复习—第一章:概述
78 0

热门文章

最新文章