浪里来浪里去!网络协议如何成就网上冲浪?

作者: 张小云的博客
出处:https://www.cnblogs.com/zhangweicheng/p/13388701.html
我们网上冲浪也冲了这么多年,也该上岸好好看看这些浪的形状了 。
1. 从一个网址了解浪来浪去# 我们知道计算机之间的通过其实都是通过IP+端口的形式,但是我们平时访问的时候根本就没涉及到这两个东西,还是能访问到资源,为啥呢?这得问问我们神奇的DNS 。
  1. 首先,举个例子,我们输入www.bilibili.com,这个时候需要通过DNS将其转化为IP地址才能继续访问,其流程大概是这样的:

浪里来浪里去!网络协议如何成就网上冲浪?

文章插图
 
从当前的浏览器中查询是否存在当前域名,如果有则返回其对应的IP地址,否则的话向本机操作系统中查询 。操作系统如果有,则返回,浏览器将其缓存起来之后返回;如果操作系统查询不到的话,那么则向路由器缓存上查询 。同上,有返回并且缓存到操作系统,操作系统返回并缓存到浏览器;无则向本地服务器请求 。本地服务器就是运营商,比如说电信或者移动 。操作过程同上,还没有的话就要向根服务器请求了 。根服务器就是终点站了,操作跟上面一样,如果还没有的话,服务器就要请你检查你的域名了 。
okay,上面绕了一圈之后我们现在拿到了B站的IP:假设为139.159.246.60,接下来就可以访问了 。
 
 是不是还少点了什么?哦,是了,少了端口,那端口咋办呢?不用办,每个协议都有默认的端口,如果你不输入端口号的话就会使用默认的,例如http协议默认80,而https默认443,所以实际上输入www.bilibili.com实际上请求的是139.159.246.60:80,也就是机器IP地址为139.159.246.60上的80端口的程序,所以B站服务器的服务要占用监听80端口,当然那边肯定还做了负载均衡,这就不扯了 。
  1. 现在知道具体地址地址还需要做什么呢,还需要建立连接,要保证等下进行数据传输的时候是okay的,所以这边会跟服务器建立TCP连接,完成之后进入下一步 。
  2. 连接okay了,浏览器这边就组装好请求头准备发送请求,请求头包含了一些重要的信息如请求的方式、代理、请求格式,接收格式等,组装完成后发送 。
  3. 服务器收到请求解析之后包装所需信息返回 。
  4. 客户端(一般是浏览器或者App)这边接收到之后进行渲染,然后就是我们平时看到的图形界面了 。
  5. 最后根据是否保持连接来决定是否关闭 。
这样一次对B站的访问就完成了 。但是这都是表面,我们甚至都不知道浪里的是水还是盐,计算机究竟是如何通过网络来通信的,接下来让我们走进《网络》 。
Top
2. 网络协议# 上面说到一个请求的完整路径,但那只是站在应用层的角度来看的,而在网络中应用层只是属于某个模型的一部分 。
 平时所说的网络模型有三种:OSI七层、TCP/IP五层、TCP/IP四层 。这三种模型都是概念模型,注意是概念模型,也就是说实现的方式并不是固定的,三兄弟来亮个相吧 。
浪里来浪里去!网络协议如何成就网上冲浪?

文章插图
 
 这几层背起来还不用一分钟,但那没用,就跟名字一样,需要的是灵魂,而不是枯燥的文字,所以需要理解 。
七层模型#
七层懂了,四、五层还难吗 。 
我们知道数据在计算机底层最终都会变成0和1,那么可能有人问了,现在计算机那么牛逼,底层给整个2或者3出来总可以吧,老是纠结0和1干嘛?说实话,实在是办不到 。
 
 计算机通过电缆的电信号来实现通信,而电信号只有高低两种,所以也就分别对应计算机数字的1和0,这也是物理层的作用,将数字转化为电信号发给其他计算机 。
物理层:将接收到的数据从1和0转化成高低信号发送给其他计算机 。
但发是发出来了,其他计算机怎么知道你阿巴阿巴在说什么呢,不懂也没意义啊 。所以需要定义一些规则,例如发送32位,前8位是文件信息,后24位才是数据,这样就知道了,这种规则就叫做协议 。但是协议人人都可以定,一千个哈姆雷特就有一千种协议,这么多个哈姆雷特有点渗人,所以需要一个标准来进行统一,这才出现了以太网协议 。
 以太网协议的内容大致为:
每组信号构成一个数据包,即"帧" 。每个数据包都包含两个部分 。head:固定18个字节,包含发送者、接收者和数据类型 。数据体data:真正的数据 。


推荐阅读