不是小白你别看——什么是网络协议1

网络

不了解网络协议的通信工程师不是好程序员 《wireshark网络分析的艺术》
因为在工作中遇到好多问题都是因为网络协议不懂导致的,网络协议至关重要,所以今天开始重新学习整理。

首先说网络,没有网络我们不能和别人交流,网络不仅是互联网,计算机网络,也是远古的社交网络,人群,圈子,许多个体组成的群体。网络中可以相互联系,沟通,交流。

那么怎么沟通交流,就需要一个协议,不然别人怎么理解你,比如计算机网络的通信格式,再比动物的吼叫,人们的语言,他们都是网络中交流的协议。
我们用的协议一般就是值得是我们程序员和计算机交流的语言方式,怎么说话计算机才能听得懂,这就需要一个语言协议。我们学习英语,需要学习语法,结构等等,和我们与计算机交流是一样的,我们也要学习这个规则,这就是协议。

然而在一个庞大的计算机网络中,我们不同的设备都需要沟通,所以我们需要学习网络协议。

通信请求

我们发起一个网络请求到服务器的接口,它会根据我们发送请求的格式内容参数来进行响应,比如请求headers body等等,这就是需要一定的格式,按照一定的协议,没有协议,服务器不会返回正确的数据。

	1举例你在本地浏览器输入  www.baidu.com

我访问一下baidu.com
请求状态
2
我浏览器输入 baidu.com 发起请求,浏览器会在dns服务器查找这个ip地址,183.232.231.172这个地址才是网页在网络中的街道地址。请求将会携带者参数交给传输层来处理。

如何去找IP地址(dns)

首先先是本地的缓存,一般是以Hosts文件的形式存在,维持着一个带域名的服务器地址对IP的对应关系,路由器缓存,如果没有结果,则会向上层DNS服务器询问,上层DNS服务器的本地缓存中如果没有该记录,则再向上层询问,一直到DNS根服务器。在根域名服务器中虽然没有每个域名的具体信息,但储存了负责每个域(如COM、NET、ORG等)的解析的域名服务器的地址信息。根域名服务器会将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器,这样你的域名查询请求会进入到相应的顶级域名服务器。顶级域名服务器收到请求后查看区域文件记录,若找到则将其管辖范围内主域名(不带任何前缀的域名,如 baidu.com)服务器的IP地址告诉本地DNS服务器。如果还是没有找到,则进入到下一级域名服务器进行查找。如此重复,直到找到正确的 结果为止,返回 IP地址结果给本地DNS服务器。
本地DNS服务器缓存结果,设置(Time-To-Live)即一条域名解析记录在DNS服务器上缓存时间,关于TTL如果IP经常改变,那么TTL设的短一点长一点都没有太大的 影响,而如果IP经常不变,可以把TTL时间拉长,这样有利于提高命中率。
传输层就是udp和tcp协议,将要通过socket根据街道地址来找到百度的家,与百度服务器连接,一边是浏览器的端口,一个是百度服务器的端口,怎么进行连接呢?
接下来就是网络层来处理,你的操作系统从浏览器拿到接到地址发现这个ip街道地址不是本地的ip,所以他要通过网络层协议去远方寻找这个街道。去远方先去本地交通站。你的ip地址是192.168.1.110,你的网关是192.168.1.1那么你先需要找到网关,找网关需要通过arp协议广播一声,网关就会回应你并告诉你他的mac地址,物理地址。你就可以找到他了。
接下来寻找百度网页之旅就交到MAC层了。在这一层ip请求包带着本地交通站的mac地址。网卡把这个带着地址的数据包在转发出去,网关往往是一个路由器关卡,可以通向另一个地址,没有找到这个IP地址,就会根据路由器协议路由表,他告诉你往这个IP段怎么走,走到下一个关卡,然后你带着新的mac地址数据包到下下一个关卡,发现这个路由关卡正好可以通向这个ip地址。你在这大喊谁是这个街道地址,百度看到这个街道地址是他家,就返回给你他的mac地址了,你就可以找到他了。百度服务器根据给你的mac地址正确,把你的数据包转发到网络层,根据ip协议也就是街道地址把你的数据在进行tcp连接(传输层),收到你的数据,给你一个响应。“收到了你的请求,将给你返回一个百度页面,你可以回家告诉你爸妈了” (具体过程下一篇介绍)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章