博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《http权威指南》阅读笔记(二)
阅读量:5167 次
发布时间:2019-06-13

本文共 721 字,大约阅读时间需要 2 分钟。

http数据传输过程

1:查找dns,获取服务器ip地址

2:建立连接

3:发送请求报文

4:接受响应报文

5:处理响应

6:关闭连接

tcp/ip协议性能问题

延迟确认问题:由于tcp/ip协议的可靠性,接收方必须发送请求确认报文,由于请求确认报文长度短,单独发送的话浪费带宽,一般会把请求确认报文附带在请求响应报文上发送,所以请求确认报文会先放在内存缓冲区里面,等待有响应报文的时候一起发送,一般会有延迟。

tcp delay问题:对于一般情况,请求报文发送,tcp/ip软件会立即把报文组装成ip报文,发送出去,及时有大量单字节报文,也会发送出去,回给网络带来大量的拥塞。为了制止这种不道德行为,有一个算法(忘记名字),会先把数据放在缓冲区,等待凑到ip报文最大的发送字节,组装发送出去,可以设置一个延时,如果超过这个延时,还没有后续的报文需要发送,就直接发送出去。这个就是tcp delay的问题。对于实时要求比较高的互联网应用,可以关闭这个。

time_await问题:在服务器处理完请求,回关闭socket。但是考虑到后续可能在复用这个socket,回延迟一定的时间进行关闭。这个是一个历史问题,那个时候路由器比较慢,带宽也低,数据发送时间比较长,下一次发送数据的时候,如果有没有关闭的socket,可以复用。如果这个时间设置的比较长,对于http请求客户端来说,因为每次连接都是随机使用不同的端口,不会复用,会新创建一个socket,如果使用完成不立即关闭回收的话,会导致socket耗尽。

转载于:https://www.cnblogs.com/aigongsi/archive/2012/10/07/2713522.html

你可能感兴趣的文章
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>
Apriori算法
查看>>
onlevelwasloaded的调用时机
查看>>
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>