爬虫基础-网络协议的基本了解

这篇具有很好参考价值的文章主要介绍了爬虫基础-网络协议的基本了解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

网络协议是互联网通信的基础,它规定了数据传输的格式、传输速率、传输控制、错误检测和纠正等内容。根据协议的不同功能和应用领域,协议可以分为以下几类。

1. 传输层协议

2. 网络层协议

3. 物理层协议

4. 应用层协议

二、HTTP协议和HTTPS协议

HTTP(Hypertext Transfer Protocol)中文名为超文本传输协议,其作用是把超文本数据从网络传输到本地浏览器,能够高效而准确地传输超文本文档。

HTTP协议的特点:

        应用层协议,由请求和响应构成,是一个标准的客户端服务器模型;

        无状态协议,对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作;

        通常承载于TCP协议之上;

        由请求和相应构成,是一个标准的客户端服务器模型(B/S);

        通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性;

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)是一种通过计算机网络进行安全通信的传输协议,经由 HTTP 进行通信,利用 SSL/TLS 建立全信道,加密数据包,HTTPS 使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性,相当于 HTTP 协议的安全版。

HTTPS 协议的特点:

        内容加密:建立了一个信息安全通道,保证数据传输的安全性;

        身份验证:确认网站的真实性,凡是使用 HTTPS 协议的网站,都可以通过单机浏览器地址栏的锁头标志来查看网站认证之后的真实信息,此外还可以通过 CA 机构颁发的安全签章来查询;

        保护数据完整性:防止传输的内容被中间人冒充或者篡改。

HTTP 和 HTTPS 的区别主要如下:

        HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用;

        HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议;

        HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;

        HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

HTTP 请求过程简述:

1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;

2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TCP 连接;

3. 浏览器发出读取文件 (URL 中域名后面部分对应的文件)的 HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;

4. 服务器对浏览器请求作出响应,并把对应的 HTML 文本发送给浏览器;

5. 释放 TCP 连接;

6. 浏览器将该 HTML 文本并显示内容。

HTTP请求的主要方法GET、POST:

1. GET:向特定的资源发出请求,并返回实体主体;

2. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中,POST 请求可能会导致新的资源的建立和/或已有资源的修改;

GET 和 POST 请求方法区别:

        GET 请求中的参数包含在 URL 里,数据可以在 URL 中看到;而 POST 请求的 URL 不会包含这些数据,数据都是通过表单形式传输的,会包含在函数体中;

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

        GET 请求是不安全的,因为在传输过程中,参数数据直接暴露在 URL 上,所以不能用来传递敏感信息;

        GET 请求只允许 ASCII 码,POST 请求没有限制,允许二进制数据;

        对于 GET 请求,浏览器会把 http header 和 data 一起发送出去,服务器响应200,请求成功;

        对于POST请求,浏览器先发送 header,服务器会响应100(已经收到请求的第一部分,正在等待其余部分),浏览器再次发送 data,服务器返回200,请求成功;

        简而言之:GET 产生一个 TCP 数据包,POST 产生两个 TCP 数据包,不过并不是所有浏览器都会在 POST 中发送两次包,Firefox(火狐)就只发送一次;

HTTP 请求头

HTTP 请求头(HTTP Request Header)提供了关于请求,响应或者其他的发送实体的信息,HTTP 的头信息包括通用头、请求头、响应头和实体头四个部分。

常用的 HTTP 请求头如下:

  • Accept:请求报头域,用于指定客户端可接受那些类型的信息;
  • Accept: application/json 浏览器可以接受服务器回发的类型为 application/json;
  • Accept: */* 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个);
  • Accept-Encoding:用于指定客户端可接受的内容编码,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate);
  • Accept-Language:用于指定客户端可接受的语言类型(zh-cn,zh;q=0.5:支持的语言分别是简体中文和中文,优先支持简体中文);
  • Content-type:也叫互联网媒体类型(Internet Media Type)或者 MIME 类型,在 HTTP 协议消息头中用来表示具体请求中的媒体类型信息(text/html:HTML 格式、image/gif:GIF 图片、application/json:JSON 类型、application/x-www-form-urlencoded:表单数据、multipart/form-data:表单文件上传等);
  • Host:请求报头域主要用于指定被请求资源的 Internet 主机和端口号,其内容为请求 URL 的原始服务器或网关的位置,从 HTTP1.1 版本开始,请求必须包含此内容;
  • Referer:用于标识请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等;
  • User-Agent:简称 UA,这是一个特殊的字符串头,可以使服务器识别客户端使用的操作系统及版本、浏览器及版本等信息;
  • Connection:表示是否需要持久连接(HTTP 1.1默认进行持久连接);
  • Date:请求发送的日期和时间;
  • Expect:请求的特定的服务器行为;
  • Warning:关于消息实体的警告信息;
  • Max-Forwards:限制信息通过代理和网关传送的时间;
  • Cookie:主要功能更是维持当前访问会话,用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如 Cookie 会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个 Cookie 来存储相关信息,这样浏览器通过读取 Cookie 的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页;

HTTP 响应头

HTTP 响应头(HTTP Responses Header)中包含了服务器对请求的应答信息,HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

常用的 HTTP 响应头如下:

  • Accept-Ranges:表明服务器是否支持指定范围请求及哪种类型的分段请求;
  • Allow:对某网络资源的有效的请求行为,不允许则返回405;
  • Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型;
  • Content-Language:响应体的语言;
  • Content-Length:响应体的长度;
  • Content-Location:请求资源可替代的备用的另一地址;
  • Content-Range:在整个返回体中本部分的字节位置;
  • Content-Type:返回内容的 MIME 类型;
  • Date:原始服务器消息发出的时间;
  • Expires:响应过期的日期和时间,可以让代理服务器或浏览器将加载的内容更新到缓存中,当再次访问相同的内容时,就可以直接从缓存中加载,达到降低服务器负载、缩短加载时间的目的;
  • Location:用来重定向接收方到非请求 URL 的位置来完成请求或标识新的资源;
  • Proxy-Authenticate:它指出认证方案和可应用到代理的该 URL 上的参数;
  • refresh:应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持);
  • Server:包含服务器的信息,例如名称、版本号等;
  • Set-Cookie:设置 Http Cookie,响应头中的 Set-Cookie 用于告诉浏览器需要将此内容放在 Cookie 中,下次请求时将 Cookie 携带上;
  • Warning:警告实体可能存在的问题;
  • WWW-Authenticate:表明客户端请求实体应该使用的授权方案。

HTTP 响应状态码

1xx:该状态码表示临时响应并需要请求者继续执行操作

  • 100(继续):请求者应当继续提出请求。服务器已收到请求的第一部分,正在等待剩余部分;
  • 101(切换协议):请求者要求服务器切换协议,服务器也已确认切换协议;

2xx:该状态码表示成功

  • 200(成功):服务器已成功处理请求。一般这表示服务器正常处理了请求,并且正常返回了相应的页面;
  • 201(已创建):请求成功并且服务器成功创建新资源;
  • 202(已接受):服务器已接收请求,但仍未处理;
  • 203(非授权信息):服务器成功处理请求,但是返回的信息可能来自另外一来源;
  • 204(无内容):服务器成功处理请求,但是没有返回任何内容;
  • 205(重置内容):服务器成功处理请求,但没有返回任何内容;
  • 206(部分内容):服务器成功处理了部分GET请求;

3xx:该状态码表示要完成请求,需要进一步操作,通常这些状态码用来重定向

  • 300(多钟选择):针对请求,服务器可以执行多种操作。服务器可以根据请求者的(user-agent)选择一项操作,或者提供操作列表供请求者选择;
  • 301(永久移动):请求的网页已永久移动到新的位置。服务器返回该状态码时,会自动将请求者转到新位置;
  • 302(临时移动):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置进行后续的请求;
  • 303(查看其它位置):请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此状态码;
  • 304(未修改):自从上次请求后,请求的网页未修改过,服务器返回此状态码时,不会返回网页内容;
  • 305(使用代理):请求者只能使用代理访问请求的网页;
  • 307(临时重定向):服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行后续请求;

4xx:表示请求可能出错,妨碍了服务器的处理

  • 400(错误请求):表示客户端请求的语法错误,服务器无法理解;
  • 401(未授权):请求要求身份验证。一般需要登录的网站,服务器可能会返回此状态码;
  • 402:保留;
  • 403(禁止):服务器理解请求客户端的请求,拒绝请求;
  • 404(未找到):服务器无法根据客户端请求找到资源;
  • 405(方法禁用):禁用请求中指定的方法;
  • 406(不接受):无法使用请求的内容特性响应请求的网页;
  • 407(需要代理授权):此状态码与401类似,但指定请求者应当授权使用代理;
  • 408(请求超时):服务器等候请求时超时;
  • 409(冲突):服务器在完成请求是发生冲突。服务器必须在响应中包含有关冲突的信息;
  • 410(已删除):请求的资源已永久删除;
  • 411(需要有效长度):服务器不接受不含有效内容长度标头字段的请求;
  • 412(未满足前提条件):服务器未满足请求者在请求中设置的其中一个前提条件;
  • 413(请求实体过大):相应实体过大。服务器拒绝处理当前请求,请求超过服务器所能处理和允许处理的最大值;
  • 414(请求的url过长):请求的url过长,服务器无法处理;
  • 415(不支持的媒体类型):请求的格式不受请求页面的支持;
  • 416(请求范围不符合要求):如果页面无法提供请求的范围,服务器则会返回此状态码;
  • 417(未满足期望值):在请求头 Expect 指定的预期内容无法被服务器满足;
  • 422(不可处理的实体):请求格式正确,但由于含有语义错误,无法响应;

5xx:表示服务器在尝试处理请求时发生内部错误,这些错误可能是服务器本身的错误,并不是请求出错,当然也有可能是请求者的故意为之,使服务器本身出现错误文章来源地址https://www.toymoban.com/news/detail-794113.html

  • 500(服务器内部错误):服务器遇到一个未预料到的状况,导致无法完成对请求的处理;
  • 501(尚未实施):服务器不具备完成请求的功能;
  • 502(错误网关):服务器作为网关或者代理,从上游服务器收到无效响应;
  • 503(服务不可用):服务器目前无法使用;
  • 504(网关超时):服务器作为网关或代理,但未及时收到上游服务器的响应;
  • 505(HTTP版本不受支持):服务器不支持请求中所用的 HTTP 版本。

到了这里,关于爬虫基础-网络协议的基本了解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算:计算机网络基础(第二天课程分享)DNS协议 各协议

    HTTP--tcp 80 ----超文本传输协议    HTTPS---tcp 443 安全传输协议  FTP tcp 20/21 文件传输协议    TFTP udp 69 简单文件传输   Telnet TCP 23 远程登录协议   SSH tcp 22 安全外壳协议 DNS UDP/TCP 53 域名解析协议  DHCP UDP 67/68 动态主机配置协议     传输层协议:TCP/UDP TCP-----传输控制协议----

    2024年02月04日
    浏览(45)
  • 《网络爬虫开发实战》学习笔记:1.1 HTTP基本原理

    1.1.1 URI和URL ​ URI ,全称Uniform Resource Identifier,即 统一资源标志符 ; URL ,全称Uniform Resource Locator,即 统一资源定位符 。 ​ 举例来说,https://github.com/favicon.ico既是一个URI,也是一个URL。即有favicon.ico这样一个图标资源,用这样一个URI/URL指定了访问它的唯一方式,其中包括

    2024年02月03日
    浏览(46)
  • 网络协议从入门到底层原理学习(一)—— 简介及基本概念

    一、简介 1、网络协议的定义 什么是网络协议? 网络协议是由定义网络上两个或多个设备之间通信的规则、过程和格式组成的正式标准和策略 它们确保计算机网络设备可以使用一种通用语言传输和接收数据,而不管它们的设计、硬件或基础设施如何。 网络协议管理及时、安全

    2024年02月09日
    浏览(49)
  • 爬虫(一) -- 带你了解爬虫最基本概念,一文即可实践

    定义:网络爬虫,是一种按照 一定规则 , 自动 爬取互联网信息的程序和脚本。用于 模拟 人操作浏览器打开网页,获取网页中的指定数据。 1.2 爬虫种类 爬虫的种类 作用 通用爬虫 爬取网页页面 全部的 源码数据 聚焦爬虫 爬取网页页面中的 局部 数据 增量式爬虫 用来检测

    2024年02月07日
    浏览(57)
  • 【100天精通python】Day44:python网络爬虫开发_爬虫基础(爬虫数据存储:基本文件存储,MySQL,NoSQL:MongDB,Redis 数据库存储+实战代码)

    目录 1 数据存储 1.1 爬虫存储:基本文件存储 1.2 爬虫存储:使用MySQL 数据库 1.3 爬虫 NoSQL 数据库使用 1.3.1 MongoDB 简介

    2024年02月11日
    浏览(69)
  • 网络基础学习:什么是tcp/ip协议

    TCP/IP是一种网络协议套件,它由传输控制协议(TCP)和互联网协议(IP)两个协议组成,广泛应用于Internet和局域网中。TCP/IP协议套件提供了可靠的数据传输、路由选择、错误检测和纠正等功能,使得不同类型的计算机和网络设备可以进行互联互通。它是Internet的基础协议,也

    2024年04月23日
    浏览(52)
  • 零基础成为网络工程师经验分享,附完整学习路线

    总有粉丝问我:零基础怎么成为网络工程师?最近正好在整理一份学习路线,趁着这个契机来分享一下经验。 相比IT类的其它岗位,网络工程师的学习方向是比较明亮的。想要成为网络工程师,华为认证就是最好的学习方法。而网络工程师的从零开始学习就是从华为认证的初

    2024年02月02日
    浏览(57)
  • 网络基础学习(第七章):VRRP协议介绍及配置

    1.1 VRRP协议介绍 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议。 利用VRRP,一组路由器(同一个VLAN中的接口)协同工作,但只要一个处于Master状态,处于该状态的路由器接口承担实际数据流量的

    2024年02月03日
    浏览(47)
  • 自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第一章 网络协议基础 )

    1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多 一般人如果想要把编程学好再开始学习网络安全

    2024年02月11日
    浏览(41)
  • 网络协议的深入了解!

    随着互联网的普及和发展,网络协议在计算机网络中扮演着至关重要的角色。网络协议是计算机网络中不同设备之间进行通信和数据交换的规则和标准。本文将对网络协议的概念、分类以及一些常见的网络协议进行详细的介绍和案例分析。 网络协议是一种规范,它定义了计算

    2024年02月04日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包