全回顾扫盲之http协议

http协议的特点

  • 1.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 2.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

http中的url

schema://host[:port#]/path/.../[?query-string][#anchor]

  • scheme:指定低层使用的协议(例如:http, https, ftp)
  • host:HTTP服务器的IP地址或者域名
  • port#:HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
  • path:访问资源的路径
  • query-string:发送给http服务器的数据
  • anchor-:锚

http请求由三部分组成,分别是:请求行、消息报头、请求正文

我打开chrome,发现展示出来的结果是已经被浏览器加工过的了,格式跟看资料说的不一致,所以我下了个fidder,抓包试了下,发现跟想要的差不多。

请求行:Method Request-URI HTTP-Version CRLF

GET http://mazhaoyang.cn/Public/Blog/src/css/main.css HTTP/1.1

  • Method(请求方式):有常用的有get、post,还有一个是OPTIONS 用来判断服务器是否支持跨域请求的时候用过,其他的至今米用过,感觉以后也不会用了,也就不写了。
  • Request-URI(请求URL):这里显示的是我的资源路径
  • HTTP-Version(http版本):这里是1.1
  • CRLF:表示回车或者换行,。。。。忽略吧。。。不知道为啥要加个这个。分割请求航和消息头吧

请求头是请求行下面的一堆key:value按字面理解可以了。

请求主体是一堆参数拼接的字符

响应也是三部分,状态行、响应报头、响应正文

状态行:

    HTTP/1.1 304 Not Modified

协议及版本/ 状态码/ 状态消息

响应报头是一些追加的说明,响应正文是服务器返回的文本信息。

随机浏览