网络请求基础

http请求的过程

  • 域名解析----TCP连接 ----发送请求-----响应请求----获取html代码----浏览器渲染
  • TCP是主机对主机层的控制传输协议,提供可靠的连接服务
  • TCP的三次握手
    • 客户端向服务端发送连接请求报文,发送SYN包
    • 服务端接收连接请求并发送SYN+ACK包给客户端
    • 客户端接收ACK报文,向服务端发送ACK报文,建立连接
  • TCP的四次挥手
    • 第一次挥手:客户端发送一个FIN,用来关闭客户端与服务端的数据传送
    • 第二次挥手:服务端接收客户端发送的FIN,发送一个ACK给客户端
    • 第三次挥手:服务端发送一个FIN给客户端,用来关闭服务端与客户端的数据传送
    • 第四次挥手:客户端接收到服务端发送的FIN,发送一个ACK给服务端,关闭连接

1.网络请求过程

1.1请求过程
客户端,通常指web浏览器或APP向服务器发起请求,并向客户端发起请求
用dango做对比:
        用户访问url ---> uwsgi ---> 框架:urls.py ---> 视图 --> 响应 ---> uwsgi ---> 浏览器 ---> 渲染

2.请求涉及的基础

2.1请求

  请求:由客户端向服务器发起的,可以分为四部分内容:

  请求方法(Request Methods)

  请求网址(Requets URL)

  请求头(Requets Header)

  请求体(Requets Body)

2.2 请求方法

  - GET:请求页面,并返回页面内容

  - POST:用于提交表单数据或上传文件,数据包含在请求体中

  - PUT: 从客户端向服务端传送的数据取代指定文档中的内容

  - DELETE:请求服务器删除指定的页面

  - HEAD:类似GET请求,只不过返回的响应中没有具体的内容,用于获取数据报头

  - CONNECT:把服务器当做跳板,让服务器代替客户端访问其他网页

  - OPTIONS:允许客户端查看服务器的性能

  - TRACE:回显服务器收到的请求,主动用于测试或诊断

 

  #GET & POST: GET与POST的区别(重点) -->(面试出镜率高)

    1.GET请求中的参数包含在URL里面,数据可以在URL 中看到, 而POST请求的URL不会包含这些数据,

     POST的数据都 是通过表单形式传输的,会包含在请求体中

    2.GET 请求提交的数据最多只有1024字节,而POST方式没有限制

    3.POST请求比GET请求相对安全

 

2.3请求头

  请求头,用来说明服务器要是用的附加信息。

  重点掌握:Accept,Cookie,Referer,User-Agent,Host

  1.Accpect: 请求包头域,用于指定客户端可接受哪些类型的信息 # 重点(*/*)

  2.Cookie: 也常用复数形式,Cookies,这是网站为了辨别用户进行会话跟踪而储存在用户本地的数据。 他的主要功能是维持当前访问会话。

    例如,我们输入用户名和密码成功登陆某个网站后,服务器会用会话保存登录状态信息, 后面我们每次刷新或请求该站点的其他页面时,

    会发现都是登录状态,这就是Cookies的功劳。Cookies并将其发送给服务器, 服务器通过Cookies识别出是我们自己,

    并且查处当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容 # 重点

  3.Referer:此内容用来表示这个请求时从哪个页面发送过来的,服务器可以拿到这一信息并做相应的处理,如做统计、防盗链处理等 # 重点

  4.User-Agent:简称UA,他是一个特殊的字符串头,可以是服务器识别用户的操作系统及版本、浏览器及版本等信息。

    在做爬虫时,加上此信息。可以伪装为浏览器。如果不加,很可能会被识别出来为爬虫 # 重点

  5. x-requested-with:XMLHTTPRequest # 代表ajax请求

  6. Accept-Language:指定客户端可接受的语言类型

  7. Accept-Encoding: 指定客户端可接受的内容编码

  8. Content-Type: 也叫互联网媒体类型(Internet Meida Type)或者MIME类型,在HTTP协议消息头中,

    他用来标识具体请求的媒体类型信息。例如: tetx/html代表HTML格式等

2.4 请求体

  请求体: 请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,,请求体则为空。
  get获取页面资源
  get和post是否都能向服务器传递数据


3.响应

响应,是由服务器返回给客户端的, 可以分为三部分:
响应状态码(requets status code)
响应头(requets header)
响应体(requets body)
3.2 响应状态码

# 响应状态码:用于判断请求后的响应状态

# 常见状态码:

  200系列:

    200 成功 服务器已经处理了请求 # 重点

  300系列:

    301 永久移动 请求的网页已经永久移动到新位置,即永久重定向 # 重点

    302 临时移动 请求的网页暂时跳转到其他页面, 即暂时重定向 # 重点

  400系列:

    400 错误请求 服务器无法解析该请求 # 重点

    401 未授权 请求没有进行身份验证或验证未通过

    403 禁止访问 服务器拒绝此请求 # 重点

    404 未找到 服务器找不到请求的网页

  500系列:

    500 服务器内部错误 服务器遇到错误,,无法完成请求 # 重点

    501 未实现 服务器不具备完成请求的功能

    502 错误网关 服务器作为网关或代理,从上游服务器收到无效响应

    504 网关超时 服务器作为网关或代理,但是没有及时从上游服务器收到请求

    505 HTTP版本不支持 服务器不支持请求中所用的HTTP协议版本

 

注意:状态码不能完全代表响应状态,部分网站的状态码是自定义的,一切以响应的数据为准)

 

3.3 响应头介绍:

  响应头: 响应头包含了服务器队请求的应答信息

  - Date:标识响应产生的时间 - Content-Encoding:指定响应内容的编码。

  - Server:包含服务器的信息,比如名称、版本号等。

  - Content-Type:文档类型。指定返回的数据类型是什么,比如text/html代表返回HTML文档。

  - application/x-javascript 则代表返回JavaScript文件,image/jpeg则代表返回图片。

  - Set-Cookie:设置Cookies。响应头中的Set-Cooksie告诉浏览器需要将此内容放在Cokies中, 下次请求携带Cookies请求。

  - Expires:指定响应的过期时间,可以使用代理服务器或浏览器将加载内容更新到缓存中。 如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短缓存加载时间。

 
3.4 响应体介绍

  响应体:重要 最重要的当属响应体的内容了。 响应的正文数据都在响应体中,

  比如请求网页时, 他的响应体就是网页的HTML代码,请求一张图片时, 他的响应体就是图片的二进制数据。我们做爬虫请求网页后, 要解析的内容就是响应体。

 

posted @ 2020-07-02 10:10  CefiLing  阅读(438)  评论(0)    收藏  举报