HTTP----初次见面,慢慢来(二)

来源:互联网 发布:c语言中文网vip分享 编辑:程序博客网 时间:2024/05/17 01:53

一、BS、CS是两只什么神兽呢?

BS[Browser Server]:通过浏览器访问服务器;
CS[Client Server]:通过客户端(PC装的一些软件、手机APP)访问服务器;

二、下面看一下 BS 通讯的整体过程

浏览器发送请求—>服务器—->接收请求,并响应—->返回请求内容给浏览器
这里写图片描述

  • Web 内容都存储在 Web 服务器上;
  • Web 服务器用的是 HTTP 协议,也会被称为 HTTP 服务器;
  • 客户端向服务器发送 HTTP 请求;
  • 服务器在 HTTP 响应中返回请求的数据;

三、资源

  • Web 服务器是资源的宿主;
  • 服务器最简单的资源就是静态文件;
  • 静态资源可以包括任意内容:资源包括图片,文本文件,HTML文件,AVI视频,JPEG图片,Word文件等;
  • 资源不一定是静态的,也可以是生成内容的软件程序。这些动态资源可以根据特定的参数来生成内容;

思考一个问题:从性能角度讲,静态页面多有利还是动态的多有利?

静态的页面好!
因为静态页面内容可以缓存在内存(RAM)里面,访问速度快;

四、媒体类型

这里写图片描述

Content-Type:传输文件的类型,格式为:MIMI类型/具体格式【响应头信息中】
例如:
jpeg格式图片:image/jpeg
png格式图片:image/png
HTML格式文本文档:text/html
普通的ASCII文本文档:text/plain
Apple的QuickTime电影为:video/quicktime类型
微软的PPT演示文稿:application/vnd.ms-powerpoint类型

五、URI(包括URL和URN)

URL:统一资源定位符(Uniform Resource Locator)
URL 拆解如下:
这里写图片描述

第一部分:通常是HTTP协议(http://)
第二部分:服务器地址(www.joes-hardware.com)
第三部分:web 服务器上某个资源地址(/specials/saw-blade.gif)

六、事务 = 请求 + 响应,的一个完整事件

这里写图片描述

七、方法

  • 常见的 HTTP 方法:Get、Post
  • 简单说一下Get/Post的区别:
    Get:
  • 让服务器发送资源(从服务器请求资源);
  • 通过URL传输数据(明文的,用户可见,不安全),以(字段)= value 的形式,置于URL末端,并用 “?” 连接,多个请求数据间用 “&” 连接,如:http://127.0.0.1/Test/login.action?name=ajin&password=123456;
  • 请求长度会受到限制;
  • get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码;
    Post:
  • 将客户端数据提交给服务器网关程序(向服务器发送数据);
  • 通过消息体传输数据(相对安全,用户不可见,但是也会被拦截,且没有加密),如:{‘name’:’ajin’,’password’:’123456’}
  • 请求长度没有受限制,传文件的时候只能用post;
  • post支持标准字符集,可以正确传递中文字符;

八、状态码

200:OK,通讯正常
301:资源重定向(永久重定向,资源被永远的移动到另外一个地方)
302:资源重定向(临时重定向,资源被暂时移动到另外一个地方)
400:请求报文语法有误,服务器无法识别
401:没有权限
404:找不到资源(URL错了,或者文件没有了)
500:服务器内部错误
502:网关错误,表现在WEB浏览器中给出的页面反馈
503:服务器正忙

  • 关于502报错,通俗解释一下:
    1.什么是502 bad gateway 报错
    简单来说 502 是报错类型代码 bad gateway 错误的网关。
    2.产生错误的原因
    连接超时,我们向服务器发送请求,由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错;
    3.解救的办法
    最好的解决办法当然还是在服务器上做,对大家来说不太可能;
    那么我们有什么解救的方法呢?
    说白了,很简单,就是——刷新(不是一般的刷新哦)
    刷新的原理:很多人可能不知道 刷新也是有两种的。
    所谓刷新其实就是从服务器下载数据到本地的内存或硬盘缓冲区中,
    再从本地内存或硬盘中读取数据到浏览器显示给我们看。
    ①基本刷新:就是点击刷新或者使用F5快捷键
    基本刷新有可能只是从本地的硬盘重新拿取数据到浏览器,并不一定重新向服务器发出请求。
    大部分用户很多时候都是这样刷新的,遇到502报错的就没有任何效果。
    ②从服务器刷新: 如果你重新直接点击你想要浏览的网页链接,你会发现显示”502 bad gateway”错误信息的页面在点击链接后又可以正常浏览。
    明白道理了吧?当你点击你想要浏览的网页链接的时候,是会从服务器重新下载数据的。
    解决方法就是从服务器上刷新:快捷键 ctrl+F5,这样就是重新向服务器发送请求了。
    如果服务器能正常给予你响应你就可以看到页面了。

思考一个问题:浏览器获取多个资源的时候,是单线程还是多线程的?

是多线程;(对于客户端来讲是多线程的好呀,因为快呀!!)
但是对于服务器来讲,就不一定是一件好事。对于服务器来讲是有限制的,因为线程开的太多会给服务器带来压力,有可能把服务器搞死,所以服务器对线程的访问个数是有限制;
例如IE:同一个域名,支持2个线程;

九、报文

这里写图片描述
这里写图片描述
这里写图片描述

上图中这个响应主体就是我们看到的 html 网页;

十、常见HTTP首部字段

  • 通用首部字段(请求报文与响应报文都会使用的首部字段)

    Date:创建报文时间
    Connection:连接的管理
    Cache-Control:缓存的控制
    Transfer-Encoding:报文主体的传输编码方式

  • 请求首部字段(请求报文会使用的首部字段)

    Host:请求资源所在服务器
    Accept:可处理的媒体类型
    Accept-Charset:可接收的字符集
    Accept-Encoding:可接受的内容编码
    Accept-Language:可接受的自然语言

  • 响应首部字段(响应报文会使用的首部字段)

    Accept-Ranges:可接受的字节范围
    Location:令客户端重新定向到的URI
    Server:HTTP服务器的安装信息

  • 实体首部字段(请求报文与响应报文的的实体部分使用的首部字段)

    Allow:资源可支持的HTTP方法
    Content-Type:实体主类的类型
    Content-Encoding:实体主体适用的编码方式
    Content-Language:实体主体的自然语言
    Content-Length:实体主体的的字节数
    Content-Range:实体主体的位置范围,一般用于发出部分请求时使用

原创粉丝点击