ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络——生成HTTP请求消息、向DNS服务器查询Web服务器的IP地址(摘抄)

2022-01-28 01:34:34  阅读:176  来源: 互联网

标签:Web 浏览器 摘抄 消息 DNS IP地址 服务器


《网络是怎样连接的》章节摘抄第1章浏览器生成消息——探索浏览器内部

一、生成HTTP请求消息

浏览器会根据网址的含义来生成请求消息。浏览器通过请求消息将用户需要哪些数据告知服务器,

二、向DNS服务器查询Web服务器的IP地址

请求消息生成之后,浏览器会委托操作系统向Web服务器发送请求,但浏览器必须告诉操作系统接收方的IP地址才行,因此浏览器必须先查出Web服务器的IP地址。网址中只有Web服务器的域名,因此浏览器需要向DNS服务器查询域名对应的IP地址

三、全世界DNS服务器的大接力

全世界共有上万台DNS服务器,它们相互接力才能完成IP地址的查询

四、委托协议栈发送消息

查询到IP地址之后,浏览器就可以将消息委托给操作系统发送给Web服务器了

 

一、生成HTTP请求消息

1、网址

需要判断哪种功能来访问相应的数据:

访问Web服务器时用“http:”,而访问FTP服务器时用“ftp:”

常见的几种URL,根据访问目标的不同,URL的写法也会不同:

在访问Web服务器和FTP服务器时,URL中会包含服务器的域名和要访问的文件的路径名等,而发邮件的URL则包含收件人的邮件地址。此外,根据需要,URL中还会包含用户名、密码、服务器端口号等信息。

访问时使用的协议类型:

URL开头的文字,即“http:”“ftp:”“file:”“mailto:”这部分文字都表示浏览器应当使用的访问方法。

 

2、浏览器先要解析URL

浏览器先对URL进行解析,从而生成发送给Web服务器的请求消息。URL的格式会随着协议的不同而不同。

Web浏览器解析URL的过程:

当对URL进行解析时,首先URL会被拆分,通过拆分出来的这些元素,我们就能够明白URL代表的含义。

 

 

 路径名为/dir/file1.html的文件

 

 

 3、省略文件名的情况

http : //www.lab.glasscom.com/dir/

以“/”结尾代表/dir/后面本来应该有的文件名被省略了。根据URL的规则,文件名可以像前面这样省略。

在服务器上事先设置好文件名省略时要访问的默认文件名。这个设置根据服务器不同而不同,大多数情况下是index.html或者default.htm之类的文件名。因此,服务器就会访问/dir/index.html或者/dir/default.htm

http:/ /www.lab.glasscom. com

连结尾的“/”都省略了。像这样连目录名都省略时,即当没有路径名时,就代表访问根目录下事先设置的默认文件,也就是/index. html或者/default.htm这些文件。

http:// www.lab.glasscom.com/whatisthis

末尾没有“/”,如果Web服务器上存在名为whatisthis的文件,则将whatisthis作为文件名来处理;如果存在名为whatisthis的目录,则将whatisthis作为目录名来处理

4、HTTP的基本思路

解析完URL之后,就知道访问的目标在哪里了。接下来,浏览器会使用HTTP协议来访问Web服务器,

 

 

 HTTP的主要方法

 

 

 HTTP消息中还有一些用来表示附加信息的头字段。客户端向Web服务器发送数据时,会先发送头字段,然后再发送数据。不过,头字段属于可有可无的附加信息

访问Web服务器获取网页数据时,GET方法:

首先,在请求消息中写上GET方法,然后在URI中写上存放网页数据的文件名“/dir1/file1.html”,这就表示我们需要获取/dir1/file1.html文件中的数据。当Web服务器收到消息后,会打开/dir1/file1.html文件并读取出里面的数据,然后将读出的数据存放到响应消息中,并返回给客户端。最后,客户端浏览器会收到这些数据并显示在屏幕上。

在表单中填写数据并将其发送给Web服务器时,POST方法:

当在网上有可以输入信息的部分就是表单。使用POST方法时,URI会指向Web服务器中运行的一个应用程序的文件名,典型的例子包括“index.cgi”“index. php”等。然后,在请求消息中,除了方法和URI之外,还要加上传递给应用程序和脚本的数据。这里的数据也就是用户在输入框里填写的信息。当服务器收到消息后,Web服务器会将请求消息中的数据发送给URI指定的应用程序。最后,Web服务器从应用程序接收输出的结果,会将它存放到响应消息中并返回给客户端。

PUT和DELETE方法:

就能够从客户端修改或者删除Web服务器上的文件。

5、生成HTTP请求消息

对URL进行解析之后,浏览器确定了Web服务器和文件名,根据这些信息来生成HTTP请求消息了。

请求消息的第一行称为请求行,方法可以告诉Web服务器它应该进行怎样的操作

HTTP消息的格式:

 

 

表单中对方法的区分

 

 

 

 写好方法之后,加一个空格,然后写URI。URI部分的格式:/<目录名>/…/<文件名>,一般是文件和程序的路径名。

第一行的末尾需要写上HTTP的版本号。

第二行开始为消息头,如日期、客户端支持的数据类型、语言、压缩格式、客户端和服务器的软件名称和版本、数据有效期和最后更新时间等

消息体:添加一个完全没有内容的空行,然后写上需要发送的数据。也就是消息的主体。

6、 发送请求后会收到响应

请求消息发送出去之后,Web服务器会返回响应消息

 

 

 在响应消息中,第一行的内容为状态码和响应短语,用来表示请求的执行结果是成功还是出错。

状态码是一个数字,它主要用来向程序告知执行的结果;相对地,响应短语则是一段文字,用来向人们告知执行的结果。

 

 

 由于每条请求消息中只能写1个URI,所以每次只能获取1个文件,如果需要获取多个文件,必须对每个文件单独发送1条请求。比如1个网页中包含3张图片,那么获取网页加上获取图片,一共需要向Web服务器发送4条请求。

 

 

 

 

 

 

 

 

 二、向DNS服务器查询Web服务器的IP地址

1、 IP地址的基本知识

在生成HTTP消息之后,根据域名查询IP地址。

查询网址中服务器域名对应的IP地址。在委托操作系统发送消息给Web服务器时,必须要提供的不是通信对象的域名,而是它的IP地址。

互联网和公司内部的局域网都是基于TCP/IP

TCP/IP的结构就是由一些小的子网,通过路由器连接起来组成一个大的网络。这里的子网可以理解为用集线器连接起来的几台计算机,我们将它看作一个单位,称为子网。将子网通过路由器连接起来,就形成了一个网络。所有的设备都会被分配一个地址。通过IP地址我们可以判断出访问对象服务器的位置,从而将消息发送到服务器。

发送者发出的消息首先经过子网中的集线器,转发到距离发送者最近的路由器上。接下来,路由器会根据消息的目的地判断下一个路由器的位置,然后将消息发送到下一个路由器,即消息再次经过子网内的集线器被转发到下一个路由器。前面的过程不断重复,最终消息就被传送到了目的地。

 

 IP地址的表示方法

 

子网掩码表示网络号与主机号之间的边界

 

主机号部分全部为0代表整个子网而不是子网中的某台设备。主机号部分全部为1代表向子网上所有设备发送包,即广播。

域名和IP地址并用:

让人来使用名称,让路由器来使用IP地址。为了填补两者之间的障碍,需要有一个机制能够通过名称来查询IP地址,或者通过IP地址来查询名称,这样就能够在人和机器双方都不做出牺牲的前提下完美地解决问题。这个机制就是DNS。

Socket库提供查询IP地址的功能:

查询IP地址的方法非常简单,只要询问最近的DNS服务器“www.lab.glasscom.com的IP地址是什么”就可以了,DNS服务器会回答说“该服务器的IP地址为xxx.xxx.xxx.xxx”

向DNS服务器发送查询消息,并接收服务器返回的响应消息。计算机上一定有相应的DNS客户端,而相当于DNS客户端的部分称为DNS解析器,或者简称解析器。通过DNS查询IP地址的操作称为域名解析,负责执行解析(resolution)这一操作的就叫解析器(resolver)了。

Socket库包含的程序组件可以让其他的应用程序调用操作系统的网络功能,而解析器就是这个库中的其中一种程序组件。

通过解析器向DNS服务器发出查询:

 

 调用解析器后,解析器会向DNS服务器发送查询消息,然后DNS服务器会返回响应消息。响应消息中包含查询到的IP地址,解析器会取出IP地址,并将其写入浏览器指定的内存地址中。接下来,浏览器在向Web服务器发送消息时,只要从该内存地址取出IP地址,并将它与HTTP请求消息一起交给操作系统就可以了。

 

 解析器会根据DNS的规格,生成一条表示“请告诉我www.lab.glasscom.com的IP地址”的数据,并将它发送给DNS服务器。发送消息这个操作并不是由解析器自身来执行,而是要委托给操作系统内部的协议栈来执行。解析器调用协议栈后,控制流程会再次转移,协议栈会执行发送消息的操作,然后通过网卡将消息发送给DNS服务器。

如果要访问的Web服务器已经在DNS服务器上注册,那么这条记录就能够被找到,然后其IP地址会被写入响应消息并返回给客户端。接下来,消息经过网络到达客户端,再经过协议栈被传递给解析器,然后解析器读取出消息取出IP地址,并将IP地址传递给应用程序。实际上,解析器会将取出的IP地址写入应用程序指定的内存地址中,用“<内存地址>”来表示,在实际的程序代码中应该写的是代表这一内存地址的名称。

向DNS服务器发送消息时,我们当然也需要知道DNS服务器的IP地址。只不过这个IP地址是作为TCP/IP的一个设置项目事先设置好的,不需要再去查询了。不同的操作系统中TCP/IP的设置方法也有差异,Windows中的设置如图所示,解析器会根据这里设置的DNS服务器IP地址来发送消息。

解析器的工作就完成了,控制流程重新回到应用程序(浏览器)。

 

标签:Web,浏览器,摘抄,消息,DNS,IP地址,服务器
来源: https://www.cnblogs.com/97hong/p/15851720.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有