美文网首页程序员
《图解http》读书笔记

《图解http》读书笔记

作者: DayDayUpppppp | 来源:发表于2017-11-24 21:55 被阅读0次

    最近在图书馆写开题报告,写得死去活来的时候,看到角落里面有一本书《图解http》,以前看过影印的pdf的版本,看到纸质书的感觉比影印版好了n倍。于是,这几天叫又重新读了一次,感觉收获良多,写在这里,备忘。

    1. 一个get请求是什么样子的?
      如果一个get请求是 localhost/index.html?id=3 ,对应的http请求是:
      (注意每一行结束的标志是\r\n)
    GET /index.html?id=3  http/1.1  \r\n
    Connection:keep-alive           \r\n
    Host:localhost                  \r\n
    User-Agent:xxxxxxx              \r\n
    
    1. 一个post的请求localhost/index.html?id=3是什么样子的?
      (注意1:post的请求和正文段的区别是两个\r\n\r\n)
      (注意2:content-length:4指的是正文段的长度)
    POST /index.html   http/1.1     \r\n
    Connection:keep-alive           \r\n
    Host:localhost                  \r\n
    User-Agent:xxxxxxx              \r\n
    content-length:4                \r\n
    \r\n\rn
    id=3
    

    如果是两个参数的时候,中间是一个&符号来连接。


    image.png
    1. 一个响应是什么样子的?
    http/1.1 200 ok
    Connection:Keep-Alive
    Content-Length:691
    Content-Type:text/html;charset=UTF-8
    Date:Fri, 24 Nov 2017 11:31:30 GMT
    Keep-Alive:timeout=5, max=100
    Server:Apache/2.2.21 (Win32) PHP/5.3.8
    
    1. content-length指的是什么的长度?
      content-length 指的是正文的长度,也就是这个指明了http的正文段在哪里结束。

    2. 服务器如何给浏览器设置cookie?
      通过set-cookie字段来设置cookie
      注意在设置cookie的指定name和value,还需要指定path,domain和expire(有效期)

    cache-control:private
    content-encoding:gzip
    content-type:text/html; charset=utf-8
    date:Fri, 24 Nov 2017 12:11:16 GMT
    expires:Thu, 19 Nov 1981 08:52:00 GMT
    pragma:no-cache
    server:nginx
    set-cookie:PHPSESSID=gd0p08pn2bbqu9jat2d9lk6bc7; path=/
    set-cookie:ssid=gd0p08pn2bbqu9jat2d9lk6bc7; path=/; domain=julyedu.com
    
    1. 浏览器如何在发送请求的时候,带上自己的cookie?
    accept-encoding:gzip, deflate, br
    accept-language:zh-CN,zh;q=0.9
    cookie:PHPSESSID=gd0p08pn2bbqu9jat2d9lk6bc7; UM_distinctid=15fedf0b80324c-0975573264d798-7b113d-100200-15fedf0b8043ba; ssid=gd0p08pn2bbqu9jat2d9lk6bc7; CNZZDATA1259748782=1283769823-1511524588-https%253A%252F%252Fwww.google.ca%252F%7C1511524588
    

    7.cookie里面会有什么?
    除了有name和value之外,比如ssid=1000,还有指定path,domain和expire(有效期)字段。

    8.cache-control 是什么?
    cache-control既可以在http请求里面的字段出现,也可以在http响应的字段出现。no-cache指令的目的是为了防止从缓存里面返回过期的资源。

    cache-control请求字段里面的值,以及代表的含义:

    cache-control: no-cache  #强制向源服务器再次验证
    

    cache-control相应字段里面的值,以及代表的含义:

    cache-control: public  #可以向任意方提供响应的缓存
    cache-control:private  #仅向特定的用户提供缓存
    

    10.transfer-encoding 是什么?

    Transfer-Encoding: chunked 之后,就代表这个报文采用了分块编码。这时,报文中的实体需要改为用一系列分块来传输。
    
    1. 如何利用http实现一个文件的分段下载?
    range 字段,每次请求文件的一部分
    

    12.host是什么?在已经指明主机ip的情况下面host字段是不是多余的?
    一台主机(一个ip)上面可以配置多台虚拟主机,这样需要host字段来指明是哪一台虚拟主机。

    13.状态码200,302,403,403,500分别代表什么含义?

    200  :  请求成功
    302  :  临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
    403 :  服务器理解请求客户端的请求,但是拒绝执行此请求
    404 : 找不到
    500 : 服务器内部错误,无法完成请求
    
    1. if-match字段表示什么含义?

    2. http有什么问题,为什么要用https?

    1. 明文传输
    2. 没有办法验证目的主机的合法性
       比如最简单的把本地的dns文件改成 www.baidu.com  -> 127.0.0.1
       那么,当访问百度的时候,dns就会把ip解析成127.0.0.1改成了其他的地方
    3. 内容可以被篡改,content-length只是指定了内容的长度,但是没有指明具体是什么,可以偷偷改http正文段的内容
    

    https就是解决上述的问题

    1. 什么是ajax,为什么要用ajax?
      在不刷新页面的情况下,发送http请求。

    2. 什么是webscoket,为什么要用websocket?
      ajax只是不需要用户去自己发送HTTP请求了,消息的更新机制还是用户发送请求,服务器来响应。服务器始终没有能力去自己主动向浏览器推送消息。websocket就是来解决这个。

    3. web攻击技术有哪些?
      xss :http://cuiqingcai.com/3133.html
      csrf :http://cuiqingcai.com/2076.html
      sql注入

    1. 对于一个域名的请求,一般第一步不是发送http请求,而是先进行dns域名解析,dns解析的过程:
    a.查询本地缓存
       1.1 浏览器缓存
           #查看chrome的缓存 ,是缓存就要有有效期,可以多看一眼缓存的有效期,大约是一分钟左右
           chrome://net-internals/#dns
       1.2 系统缓存
            #查看window上dns缓存
            #生存时间在3700秒,大约一个小时
            ipconfig /displaydns
            #ubuntu(nscd :name service cache daemon)
            nscd  -g
    
    b.向dns服务器查询
    
    1. content-type的种类
    text/html           html 文件
    text/plain          文本文件
    application/pdf     pdf文件
    text/css            css文件
    application/x-png   x-png文件
    
    1. https
      关于https 我的理解是 https =http + ssl 。
      HTTPs 采用混合的加密机制,使用公开密钥加密用于传输对称密钥,之后使用对称密钥加密进行通信。

    主要过程如下图所示:


    1. 客户机先服务器发送https请求

    2. 服务端的配置
        采用HTTPS协议的服务器必须要有一套数字证书,这套证书其实就是一对公钥和私钥。(如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。)

    3. 传送证书

    4. 客户机解析证书
      向ca机构验证证书

    5. 传送加密信息
      这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值。(而这个随机值就是以后服务器和客户机通信的对称密钥了)

    6. 服务段解密信息

    7. 传输加密后的信息

    8. 客户端解密信息

    相关文章

      网友评论

        本文标题:《图解http》读书笔记

        本文链接:https://www.haomeiwen.com/subject/ikefbxtx.html