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的子集