OSI七层协议:
(应用相关)
-
应用层:为用户的应用提供网络服务的(http,HTTPS,ftp...)
-
表示层:负责端到端的数据信息可以被另一个主机所理解和识别,并按照一定的格式将信息传递到会话层
-
会话层:管理主机之间的会话进程,负责建立、管理和终止会话进程
-
传输层:进行数据传输(TCP UDP)
UDP 和 TCP对比: 传输方式: 面向链接 非面向链接 传输的数据: 传输的是数据流 传输的是数据包(可能会丢包) 传输的效率: 慢 快 传输的稳定性: 高 低
(硬件)
- 网络层:路由器...
- 数据链路层:网桥 交换机
- 物理层:网线 网卡 集线器 中继器
应用层协议
-
HTTP协议(HyperText Transfer Protocol)超文本传输协议,端口号80
-
HTTPS协议(Hypertext Transfer Protocol over Secure Socket Layer)HTTP的安全版,端口号443,
-
在HTTP协议的基础上加入SSL层(HTTP+SSL) 。 SSL(Secure Sockets Layer 安全套接层)主要用于
Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。 -
HTTPS的安全基础是SSL,因此通过它可以传输的内容都是经过SSL加密的,主要作用是:
建立一个安全有效的信息传送通道,保证数据传送的安全性
确定网站的真实性和有效性
注意:HTTPS比HTTP更安全,但是性能更低
-
HTTP工作原理
网络爬虫抓取过程可以理解为模拟浏览器操作的过程。 浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示您选择的网络资源,HTTP是一套计算 机通过网络进行通信的规则。 HTTP的请求与响应
HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息
浏览器发送HTTP请求的过程:
当用户 在浏览器的地址栏中输入一个URL并按回车键之后(会先经过DNS服务将域名解析为ip),浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种方法。
当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。
url的组成
URI(Uniform Resource Identifier):统一资源标识符
URL(Uniform / Universal Resource Locator的缩写):统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。
URN(Universal Resource Name):统一资源名称,只命名资源而不指定如何定位资源
基本格式:
scheme://host[:port#]/path/…/[?query-string][#anchor]
scheme:协议(例如:http, https, ftp)
host:服务器的IP地址或者域名
port#:服务器的端口(如果是走协议默认端口,缺省端口80)
path:访问资源的路径
query-string:参数,发送给http服务器的数据
anchor:锚(跳转到网页的指定锚点位置)
eg:
https://www.baidu.com/s?wd=崔永元真面饭馆
https://book.qidian.com/info/1004608738#Catalog
请求方法
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP 0.9:只有基本的文本 GET 功能。
HTTP 1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求方法:
GET, POST 和 HEAD方法。
HTTP 1.1:在 1.0 基础上进行更新,新增了五种请求方法:OPTIONS, PUT, DELETE,
TRACE 和 CONNECT 方法。
HTTP 2.0(未普及):请求/响应首部的定义基本没有改变,只是所有首部键必须
全部小写,而且请求行要独立为 :method、:scheme、:host、:path这些键值对。
HTTP请求主要分为Get和Post两种方法
GET是从服务器上获取数据,POST是向服务器传送数据
GET请求参数显示,都显示在浏览器网址上,HTTP服务器根据该请求所包含URL中的参数来产生响应内容,即“Get”请求的参数是URL的一部分。 例如: http://www.baidu.com/s?wd=Chinese
POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码.
注意:避免使用Get方式提交表单,因为有可能会导致安全问题。 比如说在登陆表单中用Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。
常用的请求报头(Request Headers)
- User-Agent (浏览器名称)
User-Agent:是客户浏览器的名称,以后会详细讲。- Cookie (Cookie)
Cookie:浏览器用这个属性向服务器发送Cookie。
Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也以用来实现会话功能。- Referer (页面跳转处)
Referer:表明产生请求的网页来自于哪个URL,用户是从该 Referer页面访问到当前请求的页面。
这个属性可以用来跟踪Web请求来自哪个页面, 是从什么网站来的等。
发起请求:
会携带请求头:
‘User-Agent’:模拟浏览器进行请求
‘Cookie’:存储在浏览器里面的,使用cookie表明用户的身份
‘Refere’:说明当前的请求是从哪个页面发起的
常见状态码:
100~199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。
2xx:表示服务器成功接收请求并已完成整个处理过程。
200(OK 请求成功)。
3xx:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、 常用
301: 永久重定向
302: 临时重定向(所请求的页面已经临时转移至新的url)
4xx:客户端的请求有错误.
400:错误请求,服务器无法解析请求
401:未授权,没有进行身份验证
403:服务器拒绝访问
404:服务器无法找到被请求的网页
405:请求方式不被允许
408:请求超时
5xx:服务器端出现错误
500:服务器内部错误
501:服务器不具备完成请求的功能
503:服务器不可用
网友评论