http协议学习笔记(2)
来源:互联网 发布:淘宝网运营方式 编辑:程序博客网 时间:2024/05/29 18:12
http是应用层协议,TCP是传输层协议,http连接时基于TCP连接的
过程:根据URL通过DNS找出要访问的服务器的IP地址,然后创建套接字,客户端与服务器间进行TCP连接(三次握手),客户端发送请求报文,带有SYN标签,服务器收到后返回一个ACK应答包,并发送一个带有SYN标签的包,客户端收到后,返回ACK包确认连接成功(现代TCP栈在第三次握手的时候就已经开始发送数据),建立连接后发送数据。
TCP延迟算法:如果规定时间内没有收到ACK包就会进行重连。ACK应答包实际上非常小,所以允许在第三次握手时携带数据,通常延迟100到200毫秒,等待数据,如果没有数据要携带,那么就会单独发送ACK应答包
产生的问题:
1、发送数据是很快的,大部分时间都浪费在建立连接的过程中。TCP的首部和标记占40个字节,如果只发送少量的数据会浪费,所以设计了Nagle算法,只有数据到达最大容量时才会进行发送。但TCP连接建立后,并不会直接发送http数据,而是发送http请求报文,但请求报文很小,不能占满容量,所以一定会等待100到200毫秒,造成了很大的时间延迟
2、TCP慢启动,建立连接后TCP会限制最大速度,一段时间后才能提速,用于防止过载和拥塞,也造成了一定的延迟
解决方法:1、设置参数TCP_NODELAY,禁用nagle算法
2、持久连接
阅读全文
0 0
- http协议学习笔记(2)
- HTTP协议学习笔记2
- HTTP协议学习笔记
- http协议学习笔记
- Http协议学习笔记
- http协议学习笔记
- HTTP协议学习笔记
- 学习笔记,HTTP协议
- Http协议----学习笔记
- http协议学习笔记
- HTTP协议学习笔记
- HTTP协议学习笔记
- Http协议学习笔记
- http协议学习笔记
- Http协议学习笔记
- Http协议学习笔记
- HTTP协议--学习笔记
- HTTP协议学习笔记
- js判断一个变量是否为数组
- 使用git将项目上传到github(最简单方法)
- 机房收费系统(六)优化
- Spring七大模块之AOP
- 一、面向对象的六大原则
- http协议学习笔记(2)
- ubuntu 14.04 安装 docker
- Grafana Test Failed Network Error: Bad Gateway(502)
- 1106 质数检测 【简单素数判断】
- Python网络数据采集-创建爬虫
- <q>标签,短文本引用
- number number number HDU
- 编程读写一个文件test.txt,每隔1秒向文件中写入一行数据
- angular+敏感字段用符号代替+一个输入框下面显示文字