栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

计算机网络-图解

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机网络-图解

文章目录
  • 第一章 浏览器生成消息
    • 1. 生成HTTP请求消息
      • 1 浏览器先要解析URL
      • 2 省略文件名的情况
      • 3 HTTP的基本思路
      • 4 生成HTTP请求消息
      • 5 发送请求后会收到响应
    • 2. 向DNS服务器查询Web服务器的IP地址
      • 1 IP地址的基本知识
      • 2 域名和IP地址并用的理由
      • 3 Sorket库提供查询IP地址的功能
      • 4 通过解析器向DNS服务器发出查询
      • 5 解析器的内部原理
    • 3.世界NDS服务器最大接力
      • 1 NDS服务器的基本工作
      • 2 域名的层次结构
      • 3 寻找相应的DNS服务器并获取IP地址
      • 4 通过缓存加快DNS服务器的响应
    • 4.委托协议栈发送消息
      • 1 数据收发操作概述
      • 2 创建套接字阶段
      • 3 连接阶段:把管道接上去

第一章 浏览器生成消息 1. 生成HTTP请求消息 1 浏览器先要解析URL

1.首先URL是什么?
URL(Uniform Resource Locator)别称叫做网址或者是叫做统一资源定位符
2.浏览器首先应该要对URL进行解析,也就是获取访问的服务器域名和服务器上的文件,解析规则如下图:

2 省略文件名的情况

我们有时会见到 http://www.lab.glasscom.com/dir/ 的这种情况,以 / 结束代表/dir/后面本来应该有的文件名被省略了,根据URL的规则,是可以被省略的,但是没有文件名,服务器如何知道我们要访问哪一个文件呢?其实我们一般会在服务器上事先设计好文件名省略时要访问的文件名。

但是!如果出现 http://www.lab.glasscom.com 这种情况,连结束符 / 都没有了,这代表着访问根目录下事先设置的默认文件,也就是/index.html或者是/default.html这些文件,这样就不会发生会混乱了。

3 HTTP的基本思路

在解析完URL之后,浏览器会使用HTTP协议来访问Web服务器。
HTTP协议定义了客户端和服务器之间交互的消息内容和步骤,基本思路就是客户端回想服务器发送请求消息,而其中包含了请求的对象和对于该对象的操作这两个部分。

收到请求之后,Web服务器会对其中的内容进行解析,并根据以此来完成自己的工作,然后将结果存放在响应的消息中。在响应的消息的开头有一个状态码,用来表示操作的执行结果是成功还是结束。如果找不到文件,一般就是"404 Not Find"这就是状态码,状态码后面就是头字段和网页数据。

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

当然如果还有PUT和DELETE方法就能够从客户端修改或者是删除Web上的文件,甚至还可以将Web服务器当成文件服务器来使用。

4 生成HTTP请求消息

在对URL进行解析后,浏览器确定了Web服务器和文件名,接下来就是根据这些信息来生成HTTP请求消息了,格式如下:

下面我们看一个例子:

第一行末尾加上HTTP的版本号是为了表示基于哪个版本的HTTP的规格编写的,第二行开始为消息头存放额外的详细信息。写完消息头之后还需要添加一个完全没有内容的空行,然后协商需要发送的数据,这一部分称为消息体,也是消息的主体。

HTTP中主要的头字段:

5 发送请求后会收到响应

在第六章中会详细说明,我们先粗略了解一下。
响应消息的格式和请求消息的是相同的,差别在第一行中,在响应消息中,第一行的内容为状态码和响应短语,用来表示请求的执行结果是成功还是出错的,状态码和响应短语表示的内容一致,但是用途不一致,状态码是一个数字,它主要用来向程序告知执行的结果:

相对的,响应短语则是一段文字,用来向人们告知执行结果。返回消息响应之后,浏览器会将数据提取出来并显示在屏幕上。
注意!由于每条消息只能写一个URL,所以每次都只能获取1个文件,如果需要获取多个文件,必须要对每个文件单独三送一条请求,比如一个网页一共有三张图片,那么获取网页加获取图片一共就需要向Web服务器发送四条请求。
在这种情况下可能就会形成高压访问请求,常见的优化方法是合并图片,根本需要从协议方面去设计该问题的解决方案。
HTTP消息示例:

2. 向DNS服务器查询Web服务器的IP地址 1 IP地址的基本知识

生成HTTP消息之后,接下来我们就需委托操作系统将消息发送给Web服务器,尽管浏览器能解析网址并生成HTTP消息,但是本身不具备将消息发送到网络中的功能,这一功能需要委托操作系统去完成,那就是查询网址中服务器域名对应的I篇IP地址。
互联网和公司内部的局域网都是基于TCP/IP的思路来设计的,就是由一些小的子网,通过路由器连接起来组成一个大的网络,主力的子网指的是用集线器连接起来的几台计算机,我们将他看成成一个单位,称为子网。

通过IP地址我们可以判断访问对服务器的位置,从而将消息发送到服务器。发送者发出的消息首先经过子网中的集线器,转发到距离发送者最近的路由器上,接下来,路由器会根据消息的目的地判断下一个路由器的位置,然后将消息发送到下一个路由器,即消息再次经过子网内的集线器被转发到下一个路由器,经过这样不断地重复,最中消息传到了目的地。

这些就是IP的基本思路。
在组建网络的时候,用户可以自行决定它们之间的分配关系,因此,我们还需要另外的附加信息来表示IP地址的内部结构。

子网掩码格式如下:

顺带一提,主机号部分比特全部为0或者全部为1的时候代表两种特殊含义。
IP地址主机号:
1.全0表示整个子网
2.全1表示向子网上的所有设备发松平包,即“广播”。

2 域名和IP地址并用的理由

TCP/IP网络是通过IP地址来确定通信对象的,因此不知道IP地址就无法将消息发送给对方。于是,我i们现在使用的方案是让人来使用名称,让路由器来使用IP地址,为了填补两者之间的障碍,需要由一个机制能够通过名称来查询IP地址,或者是通过IP地址来查询名称,这样就能解决人机双方都不牺牲对的前提下解决问题,这个就是DNS机制。

3 Sorket库提供查询IP地址的功能

想DNS服务器发出查询,也就是向DNS服务器发送查询消息,并接收服务器返回的响应消息。
解析器:通过DNS查询IP地址的操作称为域名解析,因此负责执行解析这一操作的就叫解析器。Sorckett库是用于调用网络功能的程序组件集合。

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

解析调用的方法如下:

调用解析器后,解析器会向DNS服务器发送查询消息,然后DNS服务器会返回响应消息,响应消息中包含有查询到的IP地址,解析器会取出IP地址,并将其写入浏览器指定的内存地址中。
** 根据域名查询地址时,浏览器会使用Sorket库中的解析器 **

5 解析器的内部原理

最主要的是我们要学习调用解析器计算机内部的工作流程

一般来说,应用程序编写的操作内容是从上往下按顺序执行的,当到达需要调用解析器的部分时,对应的那一行程序就会被执行,应用程序本身的工作就会暂停。然后,Socket库中的解析器开始运行,完成应用程序委托的操作。像这样,由于调用了其他程序,原本运行的程序进入暂停状态,而被调用的程序开始运行,这就是“控制流程转移”。
当控制流程转移到解析器后,解析器会生成要发送给DNS服务器的查询消息。这个过程与浏览器生成要发送给Web服务器的HTTP请求消息的过程类似,解析器会根据DNS的规格,生成一条表示“请告诉我www.lab.glasscom.co地址”的数据,并将它发送给DNS服务器。发送消息这个操作并不是由解析器自身来执行,而是要委托给操作系统内部的协议栈来执行。这是因为和浏览器一样,解析器本身也不具备使用网络收发数据的功能。解析器调用协议栈后,控制流程会再次转移,协议栈会执行发送消息的操作,然后通过网卡将消息发送给DNS服务器。
当DNS服务器收到查询消息后,它会根据消息中的查询内容进行查询。这个查询的过程有点复杂,我们稍后会进行讲解,这里先不关心具体的方法。
总之,如果要访问的Web服务器已经在DNS服务器上注册,那么这条记录就能够被找到,然后其IP地址会被写入响应消息并返回给客户端。接下来,消息经过网络到达客户端,再经过协议栈被传递给解析器,然后解析器读取出消息取出IP地址,并将IP地址传递给应用程序。实际上,解析器会将取出的IP地址写入应用程序指定的内存地址中.
到这里,解析器的工作就完成了,控制流程重新回到应用程序(浏览器)。现在应用程序已经能够从内存中取出IP地址了,所以说IP地址是用这种方式传递给应用程序的。

3.世界NDS服务器最大接力 1 NDS服务器的基本工作

DNS服务器的作用:接受来自客户端的查询消息,然后根据消息的内容返回响应。
1.域名:服务器、邮件服务器的名称。
2.Class:用于识别网络信息,Class的值代表的就是互联网的IN。
3.记录类型:表示域名对应何种类型的记录。

例如查询 www.lab.glasscom.com 这个域名对应的IP地址。客户端会向DNS服务器发送以下查询消息,域名: www.lab.glasscom.com Class = IN 记录类型 = A。

也就是说DNS服务器会从域名与IP地址的对照表中查找相应的记录,并返回IP地址。

2 域名的层次结构

DNS服务器中的所有信息都是按照域名以分层次的结构来保存的,DNS中的域名都是用句点来分割的,每个句点代表不同的层级,在域名中越靠近右边的位置表示它的层级越高。
一个域的信息是作为一个一个整体存放DNS服务器中的,不能将一个域拆开来存放在多台DNS服务器中。

3 寻找相应的DNS服务器并获取IP地址

将负责管理下级域的DNS服务器的IP地址注册到他们的上级DNS服务器中,然后上级DNS服务器的IP地址再注册到更上一级的DNS服务器中,以此类推。举个例子:负责管理 lab.galsscom.com 这个域的DNS服务器的IP地址需要注册到glasscom.com域的DNS服务器中,而glasscom.com域的DNS服务器的IP地址又需要注册到com域的DNS服务器中,通过上级查出下级的IP地址,也就可以向下级DNS服务器发送查询请求了。
找到目标DNS服务器:

DNS服务器之间的查询操作:

4 通过缓存加快DNS服务器的响应

缓存可以减少查询所需要的时间,在缓存机制中有一个地方值得我们去注意,那就是信息被缓存后,原本的注册信息可能会发生改变,这个时候缓存的信息就有可能不正确,因此,DNS服务器中保存的信息都设置有一个有效期。当缓存中的信息超过有效期以后,数据就会从缓存中删除。

4.委托协议栈发送消息 1 数据收发操作概述

和向DNS服务器查询IP地址的操作一样,这里也需要使用Sorket库中的程序组件,不过,查询IP地址只需要调用一个程序组件就可以了,而这里需要按照指定的顺序调用多个程序组件。
向操作系统内部的协议栈发出委托的时候,需要按照指定的顺序来调用Socket库中的程序组件。
数据通过类似管道的结构来流动:

在进行收发数据之前,双方需要建立一条管道才行,建立管道的关键在于管道两端的数据出入口,这些出入口称为套接字,我们需要创建套接字,将套接字连起来形成管道。
首先,服务器一方先创建套接字,然后等待客户端向该套接字连接管道。当服务器进入等待状态时,客户端就可以连接管道了。具体来说,客户端也会先创建一个套接字,然后从该套接字延伸出管道,最后管道连接到服务器端的套接字上。当双方的套接字连接起来之后,通信准备就完成了。接下来,就像我们刚刚讲过的一样,只要将数据送入套接字就可以收发数据了。

** 在连接的时候,是由客户端发起的,但是在断开的时候,可以是由任意一方断开的。**
大致可以总结为以下四个点:
1.创建套接字
2.将管道连接到服务器的套接字上
3.收发数据
4.断开管道并删除套接字
在上面的每个阶段,都需要Socket库中的程序组件会被调用起来执行相关的数据收发操作。

2 创建套接字阶段

首先是套接字的创建节点,调用Socket库中的socket程序组件就可以了,和调用解析器一样,调用之后,控制流程就会转移到socket内部执行创建套接字的操作,完成之后控制流程又会被一脚回应用程序。
套接字创建完成之后,协议栈会返回一个描述符,应用程序会将收到的描述符放到内存中。描述符是用来识别不同的套接字的。同一个计算机可以同时存在多个套接字。

3 连接阶段:把管道接上去

接下来就是需要委托协议栈将客户端创建的套接字与服务器那里的套接字连接起来,这里调用的是Socket库中的connect的程序,这个地方需要指定描述符、服务器IP地址、端口号这三个参数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/450304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号