Just a little smile ^ ^

yoyo_zeng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

URI:包括URL和URN

URN:统一资源名称,在收索过程中由一个中间资源定位符,定位符服务器对资源的实际URL进行等级和跟踪,所以client可以请求一个永久的URL,定位符将clien定向到实际的URL。

 

URL:<sheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

<sheme>:协议,包括:

http

https :在应用层(http协议)和传输层(tcp协议)之间插入安全层ssl的端到端加密机制

ftp :文件

mailto :email

rtsp,rtspu :通过实施流传输解析的音/视频媒体资源的标识符

file :指定主机的文件(本地磁盘,,网络文件或文件共享系统)

news

telnet

 

<frag> :请求资源的部分或片段

 

 

报文:起始行,头部,正文

起始行:请求行 method url http_version 和 响应行 http_version status reason

method: put,post,delete,get,head(不实际获取资源,查看资源状态),trace(诊断),options(请求服务器支持的功能,例如Allow:GET,PUT,POST,DELETE)

头部: content_type等

 

TCP连接:

浏览器通过DNS解析域名->浏览器请求TCP连接->服务器接受应答->浏览器发送http请求->服务器从TCP连接中读取请求报文->服务器处理>服务器会送http响应

TCP将http报文将数据流分成段的小数据块,分装在IP分组中

IP分组包括:

1 IP分组首部(ip源地址和目的地址,长度和其他);

2 TCP段首部(源端口号,目的端口和数据排序完整性检查等字段)

3 TCP数据块

 

 TCP连接问题:

tcp连接时的握手时延

延时确认

tcp慢启动:tcp限制了分组传输数量,但是如果成功发送了一个分组就获取了发送两个分组的权限,之后获取了发送四个分组的权限。这种方式称为 打开拥塞窗口

nagle算法和tcp_nodelay :Nagle 算法鼓励发送全尺寸(LAN 上最大尺寸的分组大约是 1500 字节,在因特网 上是几百字节)的段。只有当所有其他分组都被确认之后,Nagle 算法才允许发送 非全尺寸的分组,引发几种 HTTP 性能问题。尤其对于小的报文,HTTP 应用程序常常会在自己的栈中设置参数 TCP_NODELAY,禁用 Nagle 算法 

TIME_WAIT :当某个 TCP 端点关闭 TCP 连接时,会在内存中维护一个小的控制块,用来记录最 近所关闭连接的 IP 地址和端口号。这类信息只会维持一小段时间,通常是所估计的 最大分段使用期的两倍(称为 2MSL,通常为 2 分钟 8)左右 ,客户端每次连接到服务器上去时,都会获得一个新的源端口,以实现连接的唯一性。 但由于可用源端口的数量有限(比如,60 000 个),而且在 2MSL 秒(比如,120 秒)内连接是无法重用的,连接率就被限制在了 60 000/120=500 / 秒。

 

 

Connection首部:Connection 首部字段中有一个由逗号分隔的连接标签列表,这些标签为 此连接指定了一些不会传播到其他连接中去的选项。Connection: close 来说明发送完下一条报文之后必须关闭的连接。 


串行连接:

减少tcp事务处理延时方法:

•并行连接
通过多条 TCP 连接发起并发的 HTTP 请求。问题:带宽占用太多,消耗服务器内存资源,tcp慢启动性,以及额外的开销可能时加载时间比串行更长

 

持久连接
重用 TCP 连接,以消除连接及关闭时延。问题:可能出现空闲链接。

客户端发送头部connection:keep-alive,服务器如果应答,返回connection:keep-alive,且不关闭连接,客户端如果收到connection:keep-alive,不关闭连接,否则关闭连接

connection:keep-alive

keep-alive:max=5,timeout=120 //最多为5个事务保持连接的打开状态打开状态到连接空闲2min之后,

但是亚代理不支持keep-alive,会带来问题:

 

解决方法:http/1.1在默认情况下激活持久连接,除非头部包含connection: close,但是客户端可以关闭空闲的连接。

一个客户端对任何服务器或代理最多只能维护两条持久连接。

 

 

管道化连接
通过共享的 TCP 连接发起并发的 HTTP 请求

 

 

复用的连接 交替传送请求和响应报文(实验阶段)。 

限制:如果无法确认连接是持久的,不应该使用管道;相应顺序要和请求顺序对应;不应该用管道化的方式发送有副作用的请求,比如post(如果post失败,客户端不确定是否需要再发送)

posted on 2012-12-19 15:04  yoyo_zeng  阅读(287)  评论(0编辑  收藏  举报