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

最近发现一本书《网络是怎样连接的》,顾名思义,就是告诉我们网络是怎么连接的,非常的浅显易懂,所以准备着手学习,下面是我的学习笔记。

用户向浏览器中输入网址(URL),浏览器解析用户输入的网址,然后根据网址的含义生成请求信息,之后浏览器会委托操作系统向web服务器发送请求。
对于非专业人员来说只需要知道上述几步即可,但是对于专业人员,这个过程中其实包含了很多信息,下面就是对这个过程的剖析。
1 浏览器是如何解析网址,生成请求信息的?
2 请求信息究竟是怎样的组成?
3 浏览器委托操作系统向web服务器发送请求时,必然要告诉操作系统web服务器的IP地址,但是网址中只有web服务器的域名,那么浏览器是怎样查找域名对应的IP地址?
4 浏览器委托操作系统向web服务器发送请求,这个委托是怎样完成的?


一 生成HTTP请求信息
   1 网址URL
     浏览器是一个具备多种客户端功能的综合性客户端软件,包括访问web服务器,在FTP服务器上下载上传文件,电子邮件等功能,通过URL来判断使用哪种功能来访问数据,比如访问服务器用"http:",访问FTP服务器时用"ftp:"。
   1.1 URL的格式
 根据访问目标的不同,URL的写法也是不同的:
 用HTTP协议访问web服务器:   http://用户名:(可省略)密码@(可省略)www.web服务器域名.com:端口号(可省略)/文件的路径名
 用FTP协议下载和上传文件:    ftp://用户名:(可省略)密码@(可省略)ftp.FTP服务器域名.com:端口号(可省略)/文件的路径名
 读取客户端计算机本地文件:   ftp://计算机名(localhost)/文件的路径名(如:c:/path/filel.zip)
 发送电子邮件:            mailto:邮件地址
 阅读新闻组的文章:          news:新闻组名
    1.2 解析URL
  首先拆解URL,以HTTP协议的URL为例:
  http: + // + www.lab.glasscom.com + / + dir1 + / + ... + file1.html
  协议             服务器域名                                文件路径
          有时会出现这样的URL:
          1) 以"/"结尾,如:
      http://www.lab.glasscom.com/dir/ 或者 http://www.lab.glasscom.com/
     上面的URL以"/"结束,这时只找到了它的目录名或者只访问到根目录,那么怎么知道访问那个文件呢?其实是在服务器上事先设置好默认访问的文件,大多数情况时index.html或者default.html之类的文件名。
           2) 只有域名,如:
       http://www.lab.glasscom.com
       当只有域名,没有路径名时,就代表访问根目录下事先设置的默认文件,也还是index.html或者default.html之类的文件
    1.3 生成HTTP请求消息
 解析URL之后,浏览器确定了web服务器和文件名,接下来就是HTTP生成请求。
 HTTP请求的格式:请求行 + 消息头 + 空行 + 消息体(要发送的数据)
         1)请求行
            首先是请求的第一行,又称为请求行,请求行格式:方法 + 空格 + URI + 空格 + HTTP的版本号。
    请求行中的方法是如何确认的?跟浏览器的工作场景有关,比如在浏览器地址栏输入,此时应该使用GET方法,如果是表单,会根据HTML的源代码的表单属性中指定的方法使用。
    请求行的URI部分一般就是文件和程序的路径名,路径名一般已经包含在URL中,所以只要从URL中提取出来就可以了。
            请求行的HTTP的版本号是为了表示该消息是基于哪个版本的HTTP规格编写的。
         2) 消息头
     消息头是用来存放一些额外的详细信息,比如日期,客户端支持的数据类型,语言,压缩格式,数据有效期和最后更新时间等。
         3) 空行
     完全没有内容
         4) 消息体(要发送的数据)
     这个有些操作是不需要的,比如GET的时候
    1.4 收到响应
  发送上述的请求后,服务器会返回响应消息。响应消息的格式与请求消息相同。
  响应消息格式:状态行 + 消息头 + 空格 + 消息体
          1) 状态行
      状态行有状态码和响应短语组成,用来表示请求的执行结果是成功还是出错。状态码是一个数字,向程序告知执行的结果,响应短语是一段文字,向人们告知执行的结果。
      状态码由3位数字组成:第一位数字表示状态类型,第二三位数字表示具体的情况。如:
      状态码         含义
      1xx              告知请求的处理进度和情况
      2xx              成功 
      3xx              表示需要进一步操作
              4xx              客户端错误
      5xx              服务器错误
      返回响应消息之后,浏览器会将数据提取出来并显示在屏幕上。
      如果请求的页面中包含图片时,会在网页中的相应位置嵌入表示图片文件标签的控制信息,浏览器在显示文字时一旦搜索到与图片相关的标签,就会在屏幕上留出用来显示图片的空间,然后会再次访问web服务器,在URI中写上按照标签中指定的文件名,然后生成请求,并向服务器发送请求,获取相应的图片并显示在预留的空间中。

     每条请求只能写1个URI,所以如果一盒网页中包含3个图片,那么为了获取网页和图片,需要向服务器发送4条请求。                 其他与请求消息类似,这里不做阐述。

补充: HTTP

       解析完URL之后,浏览器会使用HTTP协议来访问web服务器,

HTTP协议定义了客户端和服务器之间交互的消息内容和步骤:
1 客户端向服务器发送请求:
          请求信息包含访问目标URI和具体操作,发送时会先发送有字段,然后再发送数据。
        2 web服务器收到请求后,会对其中的内容进行解析,通过URL和方法来判断对什么进行怎样的操作,完成工作后将结果存放在响应消息中。
           响应消息是由状态码 + 头字段 + 网页数据组成。
   状态码表示操作执行的结果(成功或失败),我们常见的404 NOT Found就是状态码。
   HTTP的主要方法:
  GET      获取URI的指定信息,如获取网页数据,消息中写上GET方法,URI中写上存放网页数据的文件名"/dir1/file.html",就表示需要获取/dir1/file.html文件中的数据
  POST     向服务器发送数据(一般用于发送表单中填写的数据),在消息中写上方法,URI中指向服务器中运行的一个应用程序,和要传递的数据(表单中填写的数据)
  HEAD     与GET类似,但是只返回HTTP的消息头而非数据,主要用于获取文件最后更新时间等属性信息
  OPTIONS  用于通知或查询通信选项
  PUT      替换URI指定的服务器上的文件
  DELETE   删除URI指定的服务器上的文件
  TRACE    将服务器收到的请求行和头部直接返回给客户端,主要用于使用代理的环境中检查改写请求的情况
  CONNECT  使用代理传输加密消息时使用的方法
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值