码迷,mamicode.com
首页 > 其他好文 > 详细

网络协议初探

时间:2020-01-10 22:24:29      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:动态   com   告诉   一段   局域网   联网   width   系统   mic   

协议三要素

语法,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。

语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没 有意义。 

顺序,就是先干啥,后干啥。例如,可以先加上某个数值,然后再减去某个数值。 

 

当你想要买一个商品,常规的做法就是打开浏览器,输入购物网站的地址。浏览器就会给你显示一个缤 纷多彩的页面。 

技术图片

 

 

首先,符合语法,也就是说,只有按照上面那个格式来,浏览器才认。例如,上来是状态,然后是首 部,然后是内容。 

第二,符合语义,就是要按照约定的意思来。例如,状态 200,表述的意思是网页成功返回。如果不成 功,就是我们常见的“404”。 

第三,符合顺序,你一点浏览器,就是发送出一个 HTTP 请求,然后才有上面那一串 HTTP 返回的东 西。

 

你先在浏览器里面输入 https://www.kaola.com ,这是一个URL。浏览器只知道名字 是“www.kaola.com”,但是不知道具体的地点,所以不知道应该如何访问。

 

1.DNS解析对应的IP地址

2.浏览器打包请求

技术图片

 

3.应用层到传输层,传输层协议是TCP UDP

4.TCP 协议里面会有两个端口,一个是浏览器监听的端口,一个是电商的服务器监听的端口。操作系统往 往通过端口来判断,它得到的包应该给哪个进程。

 技术图片

 

5.传输层到网络层,网络层的协议是IP协议

 

 技术图片

 

6.而操作系统启动的时候,就会被 DHCP 协议配置 IP 地址,以及默认的网关的 IP 地址 192.168.1.1。 

操作系统如何将 IP 地址发给网关呢?在本地通信基本靠吼,于是操作系统大吼一声,谁是 192.168.1.1 啊?网关会回答它,我就是,我的本地地址在村东头。这个本地地址就是MAC地址,而大吼的那一声是 ARP协议。

技术图片

 

7.网关收到包之后,会根据自己的知识,判断下一步应该怎么走。网关往往是一个路由器,到某个 IP 地址 应该怎么走,这个叫作路由表。 路由器有点像玄奘西行路过的一个个国家的一个个城关。每个城关都连着两个国家,每个国家相当于一 个局域网,在每个国家内部,都可以使用本地的地址 MAC 进行通信。 一旦跨越城关,就需要拿出 IP 头来,里面写着贫僧来自东土大唐(就是源 IP 地址),欲往西天拜佛求 经(指的是目标 IP 地址)。路过宝地,借宿一晚,明日启行,请问接下来该怎么走啊? 

技术图片

 

 

城关往往是知道这些“知识”的,因为城关和临近的城关也会经常沟通。路由记忆。

 

8.最后一个路由器知道这个网络包要去的地方,使用ARP协议可以根据目标IP地址得到一个 MAC 地址。网络包过关后,通过这个 MAC 地址就能找到目标服务器。

 

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

在TCP层里,对于收到的每个包,都会有一个回复的包说明收到了(仅仅是收到包的回复)。
如果过一段时间还是没到,发送端的 TCP 层会重新发送这个包,直到收到到达的回复。
这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP 层不断自己闷头重试。除非 TCP 这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。

 

10.当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站相应的进程。

 

技术图片

 

电商网站的进程得到 HTTP 请求的内容,知道了要买东西,买多少。往往一个电商网站最初接待请求的 这个 Tomcat 只是个接待员,负责统筹处理这个请求,而不是所有的事情都自己做。例如,这个接待员 要告诉专门管理订单的进程,登记要买某个商品,买多少,要告诉管理库存的进程,库存要减少多少, 要告诉支付的进程,应该付多少钱,等等。 

 

如果告诉相关的进程呢?往往通过 RPC 调用,即远程过程调用的方式来实现。远程过程调用就是当告诉 管理订单进程的时候,接待员不用关心中间的网络互连问题,会由 RPC 框架统一处理。RPC 框架有很多 种,有基于 HTTP 协议放在 HTTP 的报文里面的,有直接封装在 TCP 报文里面的。 

 

 

11.之后涉及到RPC进行进程间的处理,这块还不清楚。最后处理完,返回一个HTTPS包。

 

 

当网络包到达一个城关的时候,可以通过路由表得到下一个城关的 IP 地址,直接通过 IP 地址找就可以了,为什么还要通过本地的 MAC 地址呢?

答案:
在公网中通信只能用公网ip,而对于公网ip是按照区域分配的,路由器是可以知道目标ip的大范围的区域,然后从大区域慢慢向小区域传送的。
Mac地址,这是标识机器的一个地址,在出厂时就确定的,但是单mac所在的区域不是固定的,而是会移动的。
局域网内IP地址是动态分配的;IP和设备并不总是对应的,这对通信就产生了问题,MAC地址是硬件提供商写在网卡中的,全球唯一。所以局域网使用MAC地址通信没有问题。
IP是会变的,但mac是不会变的。所以是无法通过mac地址寻找到你所在位置的。
理论上是可以通过一个大查找表知道每一个mac所在的位置,然后通过查表知道你所在的位置然后根据mac做一个转发,但是查找的代价是很高的。因为,MAC地址虽然唯一但是不能表明用户在整个互联网中的位置,除非维护一个超级大MAC地址对应表,那寻址效率肯定爆炸。但是IP地址解决了这个问题,因为IP地址是网络提供商给你的,所以你在哪里整个网络都是知道的。
手机通过数据上网就是一个通过类似mac寻址的一个网络。在移动网络中是允许你移动的,这是由于基站会记录你的位置信息。并且核心网与公网的通信是通过ip来实现的,而在手机和基站间的通信是通过类似mac的一个唯一码实现的。并且移动网络整体建设成本比互联网的成本高很多,消费也高很多。

 https://time.geekbang.org/column/intro/85

《趣谈网络协议》——刘超

 

RPC介绍

https://dubbo.apache.org/zh-cn/blog/rpc-introduction.html

网络协议初探

标签:动态   com   告诉   一段   局域网   联网   width   系统   mic   

原文地址:https://www.cnblogs.com/CherryTab/p/12178239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!