网络是怎样连接的学习笔记

第 1 章 浏览器生成消息——探索浏览器内部

1.1 生成 HTTP 请求消息

1.1.1 网址

  • 网址:准确来说应该叫 URL,Uniform Resource Locator,统一资源定位符
  • 域名:就是像 www.glasscom.com 这样以句点(.)分隔的名称

尽管 URL 有各种不同的写法,但它们有一个共同点,那就是 URL 开头的文字,即“http:”“ftp:”“file:”“mailto:”这部分文字都表示浏览器应当使用的访问方法。比如当访问 Web 服务器时应该使用 HTTP 协议,而访问 FTP 服务器时则应该使用 FTP 协议。因此,我们可以把这部分理解为访问时使用的协议类型 。尽管后面部分的写法各不相同,但开头部分的内容决定了后面部分的写法,

1.1.2 浏览器先要解析 URL

浏览器要做的第一步工作就是对 URL 进行解析
在这里插入图片描述

1.1.3 省略文件名的情况

(a)http://www.lab.glasscom.com/dir/

  • 以“/”结尾代表 /dir/ 后面本来应该有的文件名被省略了
  • 会在服务器上事先设置好文件名省略时要访问的默认文件名。这个设置根据服务器不同而不同,大多数情况下是 index.html 或者 default.htm 之类的文件名。
  • 因此,像前面这样省略文件名时,服务器就会访问 /dir/index.html 或者 /dir/default.html

(b)http://www.lab.glasscom.com/

  • 这个 URL 也是以“/”结尾的,也就是说它表示访问一个名叫“/”的目录
  • 由于省略了文件名,所以结果就是访问 /index.html 或者 /default.htm 这样的文件

(c)http://www.lab.glasscom.com

  • 当没有路径名时,就代表访问根目录下事先设置的默认文件 ,也就是/index.html 或者 /default.htm 这些文件

(d)http://www.lab.glasscom.com/whatisthis

  • 如果 Web 服务器上存在名为 whatisthis 的 文件,则将 whatisthis 作为文件名来处理;如果存在名为whatisthis 的目录,则将 whatisthis 作为目录名来处理
  • 我们无法创建两个名字相同的文件和目录,因此不可能既有一个名为 whatisthis 的文件,同时又有一个名为 whatisthis的目录。只要查询一 下磁盘中的文件和目录,就可以知道 whatisthis 究竟是一个文件还是一个目录了,并不会产生歧义。

1.1.4 HTTP 的基本思路

HTTP 的主要方法
在这里插入图片描述

  • 最常用的一个就是 GET 方法了。一般当我们访问 Web 服务器获取网页数据时,使用的就是 GET 方法。所谓一般的访问过程大概就是这样的:首先,在请求消息中写上 GET 方法,然后在 URI 中写上存放网页数据的文件名“/dir1/file1.html”,这就表示我们需要获取 /dir1/file1.html 文件中的数据。当 Web 服务器收到消息后,会打开 /dir1/file1.html 文件并读取出里面的数据,然后将读出的数据存放到响应消息中,并返回给客户端。最后,客户端浏览器会收到这些数据并显示在屏幕上。
  • 还有一个经常使用的方法就是 POST。我们在表单 中填写数据并将其发送给 Web 服务器时就会使用这个方法。当我们在网上商城填写收货地址和姓名,或者是在网上填写问卷时,都会遇到带有输入框的网页,而这些可以输入信息的部分就是表单。使用 POST 方法时,URI 会指向 Web 服务器中运行的一个应用程序的文件名,典型的例子包括“index.cgi”“index.php”等。然后,在请求消息中,除了方法和 URI 之外,还要加上传递给应用程序和脚本的数据。这里的数据也就是用户在输入框里填写的信息。当服务器收到消息后,Web 服务器会将请求消息中的数据发送给 URI 指定的应用程序。最后,Web 服务器从应用程序接收输出的结果,会将它存放到响应消息中并返回给客户端。

1.1.5 生成 HTTP 请求消息

消息体的格式会通过消息头中的 Content-Type 字段来定义(MIME 类型)
在这里插入图片描述

  • 写好方法之后,加一个空格,然后写 URI。URI 部分的格式如下,一般是文件和程序的路径名。
    /< 目录名 >/…/< 文件名 >
  • 第一行的末尾需要写上 HTTP 的版本号,这是为了表示该消息是基于哪个版本的 HTTP 规格编写的
  • 第二行开始为消息头。尽管通过第一行我们就可以大致理解请求的内容,但有些情况下还需要一些额外的详细信息,而消息头的功能就是用来存放这些信息。消息头的规格中定义了很多项目,如日期、客户端支持的数据类型、语言、压缩格式、客户端和服务器的软件名称和版本、数据有效期和最后更新时间等。这些项目表示的都是非常细节的信息。

HTTP 中主要的头字段
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
GET 方法能够发送的数据只有几百个字节,如果表单中的数据超过这一长度,则必须使用 POST 方法来发送。

  • 当使用 POST 方法时,需要将表单中填写的信息写在消息体中。到此为止,请求消息的生成操作就全部完成了。

1.1.6 发送请求后会收到响应

响应消息的格式以及基本思路和请求消息是相同的,差别只在第一行上,在响应消息中,第一行的内容为状态码和响应短语,用来表示请求的执行结果是成功还是出错。状态码和响应短语表示的内容一致,但它们的用途不同。状态码是一个数字,它主要用来向程序告知执行的结果,响应短语则是一段文字,用来向人们告知执行的结果。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值