4.1 TCP连接

  TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下:

  1. 浏览器解析主机名。
  2. 查询这个主机名的IP地址(DNS)
  3. 获得端口号。
  4. 浏览器对服务器该端口号发起连接。
  5. 向服务器发送请求报文。
  6. 从服务器获取响应报文。
  7. 连接关闭。

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套接字编程

  1.   s=socket(parameters)                   创建一个新的、未命名的套接字
  2.   bind(s,local IP:Port)                    向套接字赋一个本地IP及端口
  3. connect(s,remote IP:port)         创建与服务器的连接
  4. listen(s,...)                                    标识一个本地套接字,使其可以合理接收连接
  5. s2=accep(s)                                  等待某人建立一条到达本地端口的连接
  6. n=read(s,buffer,n)                     尝试从套接字缓存区读取n个字节
  7. n=write(s,buffer,n)                    尝试从缓存区向套接字写入n个字节
  8. close(s)                                        完全关闭TCP连接
  9.   shutdown(s,side)                         只关闭TCP连接的输入或输出端
  10.   getsocket(s,...)                            读取某个内部套接字配置选项的值
  11.   Setscoket(s,...)                            修改某个内部套接字配置选项的值

  例(盗图):

    

    注:先是请求连接,在连接成功才会发送报文。

4.2 TCP性能

  TCP连接握手需要以下步骤:

  1. 请求新的TCP连接时客户端向服务端附送笑的TCP分组,这个分组设置了SYN标记,表明是一个连接请求。
  2. 服务器接受连接,返回一个TCP分组。
  3. 客户端向服务端发送一条确认信息,现在可以传送数据了。

4.2.2 串行事物处理时延

  如果同时请求多个请求报文时,TCP的性能延时会叠加起来。以下几种可提高性能方法:

  1.并行连接

    通过多条TCP连接发起并发的HTTP请求。

  2.持久连接

    重用TCP连接,以消除连接及关闭延时。

  3.管道化连接

     通过共享的TCP连接发起并发HTTP的请求。

  4.复用连接

    交替发送请求和响应报文(试验阶段)

    

HTTP权威协议笔记-4.连接管理的更多相关文章

  1. HTTP权威协议笔记-10.HTTP-NG

    1.HTTP发展中存在的问题 复杂性   其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能      高延时.低吞吐 ...

  2. HTTP权威协议笔记-6.代理

    6.1 Web的中间实体 Http的代理服务器即是客户端的服务器又是服务器的客户端. 它介于服务器与客户端之间,当客户端发送请求报文经过它时,它会像服务器一样正确的处理请求和返回响应,同时,代理服务器 ...

  3. HTTP权威协议笔记-7.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  4. TCP/IP 笔记 - TCP连接管理

    TCP是一种面向连接的单播协议,在发送数据之前,通信双方必须在彼此建立一条连接:这与UDP的无连接不同,UDP无需通信双方发送数据之前建立连接.所有TCP需要处理多种TCP状态时需要面对的问题,比如连 ...

  5. MQTT协议笔记之连接和心跳

    前言 本篇会把连接(CONNECT).心跳(PINGREQ/PINGRESP).确认(CONNACK).断开连接(DISCONNECT)和在一起. CONNECT 像前面所说,MQTT有关字符串部分采 ...

  6. HTTP权威协议笔记-8.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  7. HTTP权威协议笔记-7.缓存

    7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. ...

  8. HTTP权威协议笔记-5.Web服务器

    5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...

  9. HTTP权威协议笔记-9.Web机器人

    经过整个春节的放肆,终于回归了,说实话,春节真心比上班累. 9.1 爬虫及爬行方式 (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历. (2) 爬行方式:Web机器人会 ...

随机推荐

  1. [2014.01.27]wfChart 统计图组件 5.6

    本组件支持多种样式图表,包括柱型图.横柱型图.曲线图.饼图.点图.区域图.     可选择的8大主题风格,且主题可再配置,在加快开发的同时又提供更好的图像效果.     组件图表提供两种输出接口,包括 ...

  2. 分享一个绿色版本 sql server 查询器,

    首先感谢原作者 源码来原于网络 此查询器增加了一些功能, 可以高亮显示 导出sql 语句    可以把左边树型拖入脚本编辑器 http://pan.baidu.com/s/1dDjaSbn

  3. 事件驱动之Twsited异步网络框架

    在这之前先了解下什么是事件驱动编程 传统的编程是如下线性模式的: 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......--->结 ...

  4. j技术方案

    采用.net4.0作为基础技术平台,原来是采用.net4.5的,但是后来发现.net4.5不支持Windows Server2003,所以又降为.net4.0. 1.asp.net mvc 4.0 用 ...

  5. 图片Exif 信息中Orientation的理解和对此的处理

    这个问题是在用七牛上传图片后获取宽高时发现的,一张图片,用图片浏览器打开始终是竖图,但是查看属性或者用七牛获取宽高,却发现宽大于高,也就是在属性中这是个横图.这样导致客户端用该宽高来展示图片会出现问题 ...

  6. 【原】灵活运用sessionStorage或者localStorage

    有时,一个app中,后台并没有提供页面中对应的信息接口,需要前端在页面跳转时把某些信息带入下一个页面,一般想到用url后带参数的方法,但是有时需要带的参数过长,就不适合用这个方法了,所以用sessio ...

  7. Python 2.7.x 和 3.x 版本的重要区别

    许多Python初学者都会问:我应该学习哪个版本的Python.对于这个问题,我的回答通常是“先选择一个最适合你的Python教程,教程中使用哪个版本的Python,你就用那个版本.等学得差不多了,再 ...

  8. web应用虚拟目录的映射

    1.新建一个web应用.在D盘新建一个news文件夹,文件夹下面新建一个html文件.如下图所示: 2.将web应用映射到服务器的虚拟目录 第一种方式: 2.1 用记事本打开tomcat目录下面的se ...

  9. [Mongodb] Relica Set复制集集群简单搭建--持续更新

    这里我们搭建一个没有访问控制,奇数个Set没有仲裁者的集群 1.三个配置文件添加 replication.replSetName:"Replica_test" 并启动三个实例2.连 ...

  10. java 验证手机号码、电话号码(包括最新的电信、联通和移动号码)

    一.目前的号码段(2016-12-8更新)   二.代码 package com.test; import java.util.regex.Pattern; public class CheckPho ...