lesson1 简单网络连接-浏览器生成消息

今天开始,我会与大家分享我花了半个月学习的网络连接入门书籍 ——《网络是怎样连接的》。

浏览器消息生成

说到浏览器,大家并不陌生,每天我们都从网络上获取大量的信息,比如国家大事、体育频道、淘宝购物等等。虽然手机上有了各种专门的app用于获取上面这些信息,但我们总会不由自主的打开某些个不知道用于什么用途的网站(你懂的)。

当我们在浏览器(什么谷歌、火狐、IE等等)的地址栏中输入一个网址时(比如www.baidu.com)时,就开始了一次完整的网络之旅。这些Web浏览器是使用HTTP/HTTPS协议的,这种协议是最常用的一种应用层协议,什么叫应用层协议呢,简单来说,就是应用软件用到的协议。

1.HTTP请求-应答简介

HTTP/HTTPS的格式如下:
在这里插入图片描述当我们输入www.baidu.com时,浏览器会帮我们补全没有输入的部分,比如协议类型为http/https,端口为80。

在我们敲击回车后,浏览器需要先解析我们输入的URL,从而生成发送给Web服务器的请求信息。URL解析的步骤有以下几个

  • 拆分URL
    在这里插入图片描述
  • 通过拆分后的数据进行分析,确认Web服务器的地址(网络地址)和请求的对象,当然这里的请求方法是Get。在这里插入图片描述
    这里要注意,请求的对象可以是多种类型,比如文件类型、查询数据等。但文件的路径在与服务器上的路径并不一定是相同的。

那么解析完URL,浏览器又做啥子呢?

解析完URL之后,浏览器就需要确定Web服务器的网络地址了。接下来,浏览器会使用HTTP协议来访问Web服务器。那么HTTP协议到底是什么呢?

在这里插入图片描述
其实协议就是一种/多种数据结构+一组程序的集合。上图中示例了HTTP协议的两端(客户端和服务端)用一些方法进行数据传递。具体的就是客户端向服务器请求数据和服务器响应请求发送数据到客户端的过程。
步骤如下:

  • 客户端向服务器发送请求消息。请求消息中包含的内容是"对什么"和"进行怎样的操作"两个部分。"对什么“就是指URL。"进行怎样操作"就是需要服务器完成怎样的工作,比如下载文件。
  • 服务器收到请求消息之后,就会对其中的内容进行解析,识别URL和"进行怎样的操作",并根据这些要求来完成自己的工作,然后将结果存放在响应消息中。

既然是通信,肯定是有通信方式的,也就是HTTP请求方法和应答方式。HTTP的主要请求方法如下图所示:

在这里插入图片描述
对于绝大多数的Web通信消息都是采用Get、Post,比如这里的通过URL请求服务,就是通过Get方式,Post方式用的最多的大概就是网络数据提交了,我们在网络商场上下单后,网站就通过Post方式提交请求给到Web后端。Get方式是没有附带参数的,Post是可以附带参数的,比如购买的商品id、数量、收货人的信息等等。

当服务器收到请求并处理请求后,将结果存放在响应消息中。响应消息根请求消息一样,分为 行、头、体等三个部分。

我们经常收到的404错误,就是响应行中的一个状态码。状态码分为以下五种:

  • 1XX :告知请求的处理进度和情况。
  • 2XX :成功。
  • 3XX :表示需要进一步操作。
  • 4XX :客户端错误。
  • 5XX :服务器错误。

在HTTP消息中还有一些比较重要的字段,这里简单介绍几个:

  • Content-Type :表示消息体的数据类型,以MIME规格定义的参数类型表示,常见的有text/plain(文本消息)、text/html(网页数据)、text/xml(XML消息)、application/json(JSON数据)、multipart/form-data(表单信息)、image/gif(git图片格式)、image/jpeg(jpg图片格式)、application/octet-stream(二进制流数据,通常用于文件下载)的等等。
  • User-Agent :客户端软件的名称和版本号等信息。
  • Content-Length :表示消息的长度。

还有很多其他类型,这里就不过多介绍了。

下面几张图片展示了详细的HTTP通信:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述2、域名解析

在网络世界里,用于定位一台计算机,是通过IP方式来实现。就像现实世界中的地址:XX市XX街道XX小区XX号 一样。要想和其他的计算机进行通信,必须要先知道目标机器的IP地址,比如要浏览百度首页,就需要知道百度服务的IP是多少。

互联网和公司内部的局域网都是基于TCP/IP的思路来设计的。TCP/IP的结构如下图所示:
在这里插入图片描述
我们发出去的请求通过各个路由器/集线器/交换机后到达目标主机。传送过程中不断地进行包转发操作将请求信息和响应信息送达到客户端和服务器上。

IP分为IPv4和IPv6两种。但都是由网络号+主机号的方式构成的。
下图是IPv4的详细表示方式:

在这里插入图片描述
从上图中可以知道-我们在手动设置IP时要填写子网掩码,其实就是为了确定网络号的位数。
在这里插入图片描述

有同学会问了,我刚才在地址栏填写的是网址(www.baidu.com)而不是IP地址(14.215.177.39),不也是得到了服务器的响应吗?

是的,这就是DNS域名解析的功能了。

其实,在请求包发送之前呢,浏览器是需要发送一些请求包,向DNS服务器请求URL中服务器的真实IP地址的。由于DNS服务器的IP一般都是操作系统事先设置好的,所以这里可以直接发包给DNS服务器。

我们先来看一下一台DNS服务器是什么样的:

在这里插入图片描述
从上面图中我们可以知道:在DNS服务器上是有保存一张 域名-IP的映射表的。DNS服务器会从这种表中查找相应的记录,并返回IP地址。

假设表中没有记录呢?又该从哪里获取IP呢?

域名是分层的,每一层都有对应的一台或n台DNS服务器。域名的分层是按.来分隔的,比如 www.lab.glass.com,这里的句点代表了不同的界限,越靠右的位置表示其层级越高。DNS服务器也根据域名作了分层处理。

在这里插入图片描述
当执行DNS查询时,就采取了分层查询方式,一步一步找到完全匹配请求域名的IP地址。假设我们要查询www.lab.glass.com这一域名的信息,就会从根域服务器开始查找,根域表中没有这个域名的记录,但是有com域的记录,此时根域服务器就会返回它管理的com域中的DNS服务器的IP地址。于是最近的DNS服务器又会向com域的DNS服务器发送查询消息。com域也没有www.lab.glass.com这个域名的消息,和刚才一样,com域服务器会返回它下面的glass.com域的DNS服务器的IP地址。不断重复之前的步骤,最终就会找到目标域名对应的IP地址(如果域名没有被注册到互联网上,DNS是找不到相关记录的)。
在这里插入图片描述
当浏览器通过DNS域名查询获取到相应的Web服务器的IP 后,就将请求包委托TCP/IP协议栈将包发出去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值