http协议读书笔记2-连接管理
一、http是如何使用tcp连接的?
http连接本质就是tcp连接和一些使用连接的规则。所有的http通讯都是由tcp/ip来承载的。tcp/ip是全球计算机及网络设备都在使用的一种常用的分组交换的网络分层协议集。客户端程序打开一条tcp/ip连接。连接到可能运行在世界任何地方的服务器应用程序。
1.tcp流是分段的,由ip分组传送
网络协议栈

http要传送一条报文的时候,会以流的形式将报文数据的内容通过一条打开的TCP连接按照顺序传输。TCP收到数据流后,会将数据流分成被称之为段的小数据块,并将段封装在ip分组中,通过
因特网进行传输,见下图。这些工作都是TCP/IP软件来处理的,HTTP程序员什么都看不到。

2.一个tcp连接是由4个值来识别的,<源ip地址:源端口 目的ip地址:目的端口> tcp 是通过端口号来保持所有这些连接的正确运行的。
3. tcp客户端和服务器是通过tcp套接字接口来进行通讯的,如下图所示:

对上图的说明:
web服务器等待连接(S4),客户端根据URL判定出IP地址和端口号,并建立一条到服务器的TCP连接C3,连接建立成功,客户端发送http请求C5,服务器读取请求S6,
服务器对请求进行处理,执行请求的动作S7,客户端读取数据C6,客户端处理数据。
二、TCP连接的时延、瓶颈、存在的障碍
1.tcp连接建立握手
2.tcp慢启动拥塞机制
3.数据聚集的Nagle算法
4.用于捎带确认 的TCP确认suanfa
5.TIME_WAIT 时延和端口耗尽
三、HTTP连接的优化
1.并行连接
并行连接可能会提高页面的访问速度,但是并行连接不一定很快
2.持久连接keep-alive
3.管道化连接 http/1.1
四、关闭连接
1.任意时刻可以关闭连接
2.Content-Length及截尾
3.连接关闭容限、重试及幂等性
4.正常关闭
http协议读书笔记2-连接管理的更多相关文章
- 《TCP/IP详解卷1:协议》第4章 ARP:地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第5章 RARP:逆地址解析协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- 《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- HTTP权威协议笔记-4.连接管理
4.1 TCP连接 TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下: 浏览器解析主机名. 查询这个主机名的IP地址(DNS) 获得端口号. 浏览器对服务器该端口号发起连接. ...
- http协议读书笔记3-Web服务器
一.web服务器的实现 web服务器逻辑实现了HTTP协议和相关的TCP连接处理,管理着web资源,并负责提供Web服务器的管理功能.web服务器逻辑和操作系统共同负责管理TCP连接.底层操作系统负责 ...
- http协议读书笔记1-概述
1.http协议在网络中的位置: http协议位于TCP协议的上层,http试用tcp来传输其报文数据,tcp在ip的上层. 2.浏览器发起连接的过程 上述图的过程是: 浏览器从url中解析出服务区的 ...
- TCP/IP 笔记 - TCP连接管理
TCP是一种面向连接的单播协议,在发送数据之前,通信双方必须在彼此建立一条连接:这与UDP的无连接不同,UDP无需通信双方发送数据之前建立连接.所有TCP需要处理多种TCP状态时需要面对的问题,比如连 ...
- 《mysql必知必会》读书笔记--触发器及管理事务处理
触发器 触发器是MySQL响应DELETE,INSERT,UPDATE而自动执行的一条MySQL语句,其他语句不支持触发器. 创建触发器时,需要4个条件: 唯一的触发器名 触发器关联的表 触发器应该响 ...
随机推荐
- Python-pycharm
进入博客园的第一篇随笔,作为一个编程菜鸟,最近在学习Python,为毕设做准备.总觉得Python自带的idle不太好用,一位“大鸟”向我推荐了pycharm,于是我就抱着试试看的态度下了一个,目前感 ...
- 解决<a>文本本身带下划线和超链接下划线重合的问题
<a style="padding-bottom: 1PX;border-bottom: 1PX #254fc5 solid;text-decoration: none;"& ...
- JavaScript-创建新数组
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 修改默认MYSQL数据库data存放位置
随着业务量的增长,mysql默认安装所在分区大小出现瓶颈,通常需要将datadir换到较大的分区 示例原目录:/usr/local/mysql/data/示例新目录:/data/mysqldata/ ...
- CSS定位之position详解(转载)
本文转载于xingoo的博文:http://www.cnblogs.com/xing901022/p/5193751.html position属性 在前端中,position是很常见的属性.通过这 ...
- utime函数
utime函数:对一个文件的访问和修改时间 #include <utime.h> int utime( const char *pathname, const struct utimbuf ...
- 反射生成SQL语句
public static int Reg(Model ml) { bool b = true; Visit vt = new Visit(); StringBuilder builder = new ...
- inotify 心得
inotify 心得 一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件 ...
- JSON.parse解析单引号名值对报错
今天整理代码的时候发现JSON.pare解析时会报了一个错误,而且很难找原因,调试了几分钟没有成功,猜测可能是单双引号引起的错误.修改了单双引号后程序正常运行了,现在记录下这个bug. 关于JSON. ...
- 我总结的Android编程规范
命名规则 1). 类名,接口名:以大写开头,如果一个类的类名由多个单词组成,所有单词的首字母必须大写,单词尽量写全称,不要简写,除非约定俗成的名字,例如:URL,RTMP,RTSP 这些广泛使用的专有 ...