Http之链接管理-第一课

主要介绍TCP链接,TCP性能考虑,TCP的三次握手。


http链接实际上就是tcp链接及其使用规则。要弄懂http,必须弄懂tcp。


1.tcp/ip的七层架构

我们先复习一下tcp/ip的七层架构。


2.TCP的三次握手

TCP(Transmission Control Protocol) 传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledge number(确认号码)



第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

完成三次握手,主机A与主机B开始传送数据。

3.TCP性能考虑

http事务延迟



http事务的时延有几个原因。

1.URI转成IP,http客户端都有一个小的DNS缓存。

2.每条链接会有链接建立的时延。

3.请求处理

3.回送http相应


TCP的相关延迟

1.TCP链接建立握手

2.TCP慢启动拥塞

3.数据聚集的Nagle算法

4.用于携带确认的TCP延迟确认算法

5.TIME_WAIT时延和端口耗尽


1.TCP链接建立握手

但你花费这些时间建立链接,传输数据少,不靠谱。小的http事务会花费50%的时间进行TCP链接,HTTP会有重用现存链接,减少TCP建立链接造成的影响。也就是持久链接关键字keep-alive。

两种:HTTP/1.0+ "keep-alive"    已经不再使用。服务器不一定同意keep-alive会话。

           HTTP/1.1 “persistent”


Connection: keep-alive

Keep-Alive:max=5,timeout=120 最多为5个事务服务,保持链接空闲120秒。



Keep-alive链接的限制和规则

1.要有content-length

2.不应该与无法确定是否支持Connection首部的呆梨服务器建立keep-alive链接。

服务器支持会回送一个Connection:keep-alive 如:http://www.woyaofun.com/


盲中继,就是代理不会处理同一条链接的其他请求,建立不了长链接。

作为代理是不能转发connection首部的。


HTTP/1.1 persistent链接。


2.TCP慢启动拥塞

防止因特网得突然过载,每成功接受到一个分组,发送端就有路发送另外两个分组得权限。


3.数据聚集的Nagle算法

 Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段。 所谓“小段”,指的是小于MSS尺寸的数据块,所谓“未被确认”,是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到。


        Nagle算法的规则(可参考tcp_output.c文件里tcp_nagle_check函数注释):


      (1)如果包长度达到MSS,则允许发送;


      (2)如果该包含有FIN,则允许发送;


      (3)设置了TCP_NODELAY选项,则允许发送;


      (4)未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;
      (5)上述条件都未满足,但发生了超时(一般为200ms),则立即发送。


4TIME_WAIT时延和端口耗尽

当某个TCP断电关闭TCP链接时,会在内存中维护一个小的控制快,用来记录最近所关闭链接的IP地址和端口号。缓存小于两分钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值