学无止境

少年辛苦终身事,莫向光阴惰寸功。——唐·杜荀鹤《题弟侄书堂》


WAP服务器


网络层复习

  • 应用层:解决要传递什么数据
  • 传输层:解决如何传递数据,使用udp,tcp理解位快递公司
  • 网络层:定位目标的ip地址
  • 链路层:使用工具进行传输
  • 建立链接的三次握手
  • 数据传输
  • 断开链接的四次挥手

  • HTTP协议

  • 而浏览器和服务器之间的传输协议是HTTP

  • HTML是一种用来定义网页的文本,会HTML,就可以编写网页;

  • HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信

  • cookie写入:字典方式,key:value

  • cookie:

  • 只要访问浏览器服务器会默认向客户端写入一些信息:key:value(respomse)—->保存到浏览器的cookice

  • 目的:

  • key:value—>jseesionID:xxxxx

  • 作用1:

  • 第二次又去访问服务器,request请求中携带jsessionID去服务器,服务器收到携带的jsessionid之后,就知道是否曾经访问过网站

  • 作用2:

  • cookie中可以保存一些相关的数据

  • HTTP请求由四部分组成:请求行,请求头,空行,请求体

  • request:客户端请求

  • GET / HTTP/1.1请求行

  • HTTP请求方式:

  • GET 获取信息,让服务器返回文本或者图片、html的代码等

  • POST 修改已经存在的数据,修改成什么样子,携带数据给服务器(修改信息)

  • PUT 保存数据,也可以使用get和post

  • DELETE 删除数据 也可以使用get和post

  • OPTION 询问服务器的某种支持特性

  • HEAD 返回数据,仅仅返回报文头

  • TRACE:请求服务器回送收到的请求信息,用于测试或诊断

  • 主要区别在于1.1版本允许多个HTTP请求复用一个TCP连接,以加快传输速度。

  • Host:主机名

  • User-Agent:用户代理,使用说明浏览器或者什么操作系统

  • Accept-Language:服务器支持语言

  • Cache-Control:no-cache网页缓存控制(每次都会访问)max-age过期之前不会重复访问。

  • Accept-Encoding:申明自己接收的编码方法

  • Connection:keep-alive 连接方式保存活跃(长连接)

  • Pragma:no-cache 缓存来源no-cache信息,不缓存页面数据

  • Accept-Charset:请求报头域用于指定客户端接受的字符集,缺省表示任何字符集都可以接受

  • Date:请求发送的时间和日期

  • Except:请求特定的服务器行为

  • If-Match:请求内容与实体相匹配才有效

  • If-Modified-Since:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码

  • response:服务器回应

  • 一个http响应报文由:响应行 、响应头、空行和响应数据(响应体)4个部分组成,

  • Content-Type指示响应的内容,这里是text/html表示HTML网页。

  • Location:用于重定向接受者到一个新的位置

  • Content-Language:响应体的语言

  • Content-Length:响应体的长度

  • Date:原始服务器消息发出的时间

  • refresh:表示浏览器应该在多少时间之后刷新文档,以秒记。

  • Server:web服务器软件名称。如:Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)

  • Set-Cookie:设置Http Cookie

  • 浏览器获取你的响应体里面的内容并翻译展示给浏览器界面

  • 响应行:

  • HTTP/1.1(HTTP协议版本1.1)200状态码 OK(说明成功)

  • HTTP请求过程

  • 步骤1:浏览器首先向服务器发送HTTP请求,请求包括:

  • 方法:GET还是POST,GET仅请求资源,POST会附带用户数据;

  • 路径:/full/url/path;

  • 域名:由Host头指定:Host: www.baidu.com

  • 如果是POST,那么请求还包括一个Body,包含用户数据,例如上传图片的数据等(响应体)

  • 步骤2:服务器向浏览器返回HTTP响应,响应包括:

  • 响应代码

  • 响应类型:由Content-Type指定;

  • 通常服务器的HTTP响应会携带内容,也就是有一个Body,包含响应的内容,网页的HTML源码就在Body中

  • 步骤3:如果浏览器还需要继续向服务器请求其他资源,比如图片,就再次发出HTTP请求,重复步骤1、2。

  • 一个HTTP请求只处理一个资源(此时就可以理解为TCP协议中的短连接,每个链接只获取一个资源,如需要多个就需要建立多个链接)

  • 步骤4:浏览器根据返回的数据进行解析,最终呈现在我们面前

  • HTTP格式

  • 一个HTTP包含Header和Body两部分,其中Body是可选的。

  • HTTP协议是一种文本协议

  • HTTP GET请求的格式:

  •    GET /path HTTP/1.1
      Header1: Value1
      Header2: Value2
      Header3: Value3
    
  • 每个Header一行一个,换行符是\r\n

  • HTTP POST请求的格式:

  •   POST /path HTTP/1.1
      Header1: Value1
      Header2: Value2
      Header3: Value3
    
      body data goes here...
    
  • 当遇到连续两个\r\n时,Header部分结束,后面的数据全部是Body。

  • HTTP响应的格式:

  •  200 OK
      Header1: Value1
      Header2: Value2
      Header3: Value3
    
      body data goes here...
    
  • HTTP响应如果包含body,也是通过\r\n来分隔的。

  • Body的数据类型由Content-Type头来确定如果是网页,Body就是文本,如果是图片,Body就是图片的二进制数据。

  • 当存在Content-Encoding时,Body数据是被压缩的,最常见的压缩方式是==gzip==

  • 需要将Body数据先解压缩gzip解压缩才能得到真正的数据

  • Get请求携带数据量的各种限制及解决办法、Post请求说明

  • Get请求携带数据量的各种限制及解决办法

  • Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。

  • URL最好不要超过IE的最大长度限制(2083个字符),当然,如果URL不直接提供给用户,而是提供给程序调用,这时的长度就只受Web服务器影响了。

  • 注:对于中文的传递,最终会为urlencode后的编码形式进行传递,如果浏览器的编码为UTF8的话,一个汉字最终编码后的字符长度为9个字符。

  • POST请求长度限制:

  • 理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力。

  • 扩展URI和URL

  • URI的子集URL

  • 什么是URI?:

  • Web上每种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个通用资源标志符(Universal Resource Identifier, URI)进行定位。

  • URI通常由三部分组成:

  • ①访问资源的命名机制; http://

  • ②存放资源的主机名;www.baidu

  • ③资源自身 的名称,由路径表示。/html/html

  • URL的格式由三部分组成:

  • URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。

  • URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。

  • URL的一般格式为(带方括号[]的为可选项):

  • protocol :// hostname[:port] / path / [;parameters][?query]#fragment

  • 第一部分是协议(或称为服务方式) protocol

  • 第二部分是存有该资源的主机IP地址(有时也包括端口号)

  • 第三部分是主机资源的具体地址,如目录和文件名等。

  • 第一部分和第二部分用“://”符号隔开,第二部分和第三部分用“/”符号隔开。

  • 第一部分和第二部分是不可缺少的,第三部分有时可以省略

  • URL和URI简单比较(关键)

  • 但也不是所有的URI都是URL哦

  • 让URI能成为URL的当然就是那个“访问机制”,“网络位置”

  • 例如.http:// or ftp://.

  • ==URN是唯一标识的一部分,就是一个特殊的名字。==

  • 换句话说,URI属于父类,而URL属于URI的子类。URL是URI的一个子集。

  • URI的定义是:统一资源标识符;

  • URL的定义是:统一资源定位符。

  • 二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。

  • 而URL同时说明要如何访问这个资源(http://)。

  • 爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它 进行进一步的处理。

  • URN

  • 统一资源名称 (Uniform Resource Name, URN)

  • 唯一标识一个实体的标识符,但是不能给出实体的位置。系统可以先在本地寻找一个实体,在它试着在Web上找到该实体之前。它也允许Web位置改变,然而这个实体却还是能够被找

  • URI和URL和URN

  • URI包括URL,URN其中L(location)代表位置N代表名字name

  • URL代表资源的地址信息,URN则代表某个资源独一无二的名称

  • 由于URL或URN的目的,都是用来标识某个资源,后来的标准指定了URI,而URL与URN成为URI的子集