HTTP权威协议笔记-4.连接管理
4.1 TCP连接
TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下:
- 浏览器解析主机名。
- 查询这个主机名的IP地址(DNS)
- 获得端口号。
- 浏览器对服务器该端口号发起连接。
- 向服务器发送请求报文。
- 从服务器获取响应报文。
- 连接关闭。
4.1.2 TCP流是分段的、由IP分组传送
TCP的数据是通过名为IP分组的小数据块来发送的。Http发送一份报文时,会以流的形式建立一条TCP连接按序传输。
TCP在接收到流之后会将数据流砍成被称作段的小数据块,封装在IP分组中,通过因特网传输。
每个TCP段由IP分组承载,每个IP分组包括:
- 一个IP分组首部(20字节)
- 一个TCP段首部(20字节)
- 一个TCP数据块(0个或多个字节)
IP首部包含源和目的的IP地址、长度和其他一些标记
TCP段首部包含:TCP端口、控制标记等
4.1.3 用TCP套接字编程
- s=socket(parameters) 创建一个新的、未命名的套接字
- bind(s,local IP:Port) 向套接字赋一个本地IP及端口
- connect(s,remote IP:port) 创建与服务器的连接
- listen(s,...) 标识一个本地套接字,使其可以合理接收连接
- s2=accep(s) 等待某人建立一条到达本地端口的连接
- n=read(s,buffer,n) 尝试从套接字缓存区读取n个字节
- n=write(s,buffer,n) 尝试从缓存区向套接字写入n个字节
- close(s) 完全关闭TCP连接
- shutdown(s,side) 只关闭TCP连接的输入或输出端
- getsocket(s,...) 读取某个内部套接字配置选项的值
- Setscoket(s,...) 修改某个内部套接字配置选项的值
例(盗图):
注:先是请求连接,在连接成功才会发送报文。
4.2 TCP性能
TCP连接握手需要以下步骤:
- 请求新的TCP连接时客户端向服务端附送笑的TCP分组,这个分组设置了SYN标记,表明是一个连接请求。
- 服务器接受连接,返回一个TCP分组。
- 客户端向服务端发送一条确认信息,现在可以传送数据了。
4.2.2 串行事物处理时延
如果同时请求多个请求报文时,TCP的性能延时会叠加起来。以下几种可提高性能方法:
1.并行连接
通过多条TCP连接发起并发的HTTP请求。
2.持久连接
重用TCP连接,以消除连接及关闭延时。
3.管道化连接
通过共享的TCP连接发起并发HTTP的请求。
4.复用连接
交替发送请求和响应报文(试验阶段)
HTTP权威协议笔记-4.连接管理的更多相关文章
- HTTP权威协议笔记-10.HTTP-NG
1.HTTP发展中存在的问题 复杂性 其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能 高延时.低吞吐 ...
- HTTP权威协议笔记-6.代理
6.1 Web的中间实体 Http的代理服务器即是客户端的服务器又是服务器的客户端. 它介于服务器与客户端之间,当客户端发送请求报文经过它时,它会像服务器一样正确的处理请求和返回响应,同时,代理服务器 ...
- HTTP权威协议笔记-7.集成点:网关、隧道及中继
.8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...
- TCP/IP 笔记 - TCP连接管理
TCP是一种面向连接的单播协议,在发送数据之前,通信双方必须在彼此建立一条连接:这与UDP的无连接不同,UDP无需通信双方发送数据之前建立连接.所有TCP需要处理多种TCP状态时需要面对的问题,比如连 ...
- MQTT协议笔记之连接和心跳
前言 本篇会把连接(CONNECT).心跳(PINGREQ/PINGRESP).确认(CONNACK).断开连接(DISCONNECT)和在一起. CONNECT 像前面所说,MQTT有关字符串部分采 ...
- HTTP权威协议笔记-8.集成点:网关、隧道及中继
.8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...
- HTTP权威协议笔记-7.缓存
7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. ...
- HTTP权威协议笔记-5.Web服务器
5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...
- HTTP权威协议笔记-9.Web机器人
经过整个春节的放肆,终于回归了,说实话,春节真心比上班累. 9.1 爬虫及爬行方式 (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历. (2) 爬行方式:Web机器人会 ...
随机推荐
- OData 带更新的实例,并能取得元数据格式类型
http://www.cnblogs.com/kid1412/p/6012938.html#CreateANewEntity <<ABP框架>> OData 集成 文档目录 ...
- APP跳到系统设置
//定位服务设置界面 NSURL *url = [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]; if ([[UIApp ...
- open office操作word文档
前段时间工作需要使用open office往word中写文件,写图片,以及向footer也就是页尾中插入图片,已经封装成了类,直接调用即可,代码如下: package com.test.common. ...
- combox 同时写入和获取 text ,value
c# combox 同时写入和获取 text ,value 2007-10-10 16:33:44| 分类: c# 知识|举报|字号 订阅 public class ComboBoxItem ...
- VR全景项目外包团队— VR/AR相关领域介绍和VR全景案例
VR/AR相关领域这里我要说的一点就是硬件.诚然,硬件的确很难搞,国内在这方面就是荒漠,所以,如果你有信心,完全可以开拓一片蓝海.注意我是说真正的硬件,那些把Google的纸盒子拿来改改就能融资千万的 ...
- [转]mysql在windows下支持表名大小写,lower_case_table_names
windows下mysql默认是不支表名大小写的,也就是表名大小写不敏感.用phpmyadmin创建的驼峰式表名,全部被强制成小写.mysql表名大小写敏感的参数: lower_case_table_ ...
- 解决HttpWebRequest首次连接特别慢的问题
针对这个问题,网上各种搜,然后看到的解决方案大致相同,改web.config,问题来了,按网上说的,没感觉快了多少 <?xml version="1.0"?> < ...
- Microsoft Capicom 2.1 On 64bit OS
第一步下载capicom.dll http://files.cnblogs.com/files/chen110xi/DLL.7z 第二步注册capicom.dll至SysWow64 第三步VS中设置 ...
- jquery文本框内容改变事件
/** * 内容改变时并不会触发事件,但是在失去焦点的时候会触发. */ $("#inputid").change(function(){ console.log($(this). ...
- iptables删除规则
查看nat规则: iptables -t nat -nL --line-number 添加规则是-A和-I,-A是添加到末尾,-I是添加到指定位置,默认添加到最前面.删除使用-D,也就是原来“ipta ...