HTTP相关知识学习
五层网络模型
- 应用层
- 包括HTTP,FTP...
- HTTP支持客户/服务器模式
- 简单快速有getpost方法
- 灵活,可以传输任意类型
- 无连接,每次连接只处理一个请求,收到应答就关闭
- 无状态,对于事物处理没有记忆能力
- 1.1有个长连接技术keepalive
- 为应用软件提供了很多服务request,get,post
- 屏蔽了很多网络传输细节
- 构建在TCP协议之上
- 包括HTTP,FTP...
- 传输层
- 包括TCP,UDP
- 向用户提供可靠的端到端服务
- 向高层屏蔽了数据通信的细节
- 网络层
- 为数据在节点之间传输创建逻辑链路
- 数据链路层
- 通信实体间建立数据链路的连接(电脑的0101类的)
- 物理层
- 定义物理设备如何传输数据
HTTP请求结构

抓包:

HTTP请求和响应的步骤
- 客户端连接导Web服务器,http默认端口80,建立套接字连接。
- 发送HTTP请求,客户端向服务器发送文本的请求报文,
- 服务器接受请求并返回HTTP响应,Web服务器解析请求,写到tcp套接字,由客户端读取
- 释放TCP连接
- 客户端浏览器解析HTML内容,查明状态代码,字符集,语法,并展示
浏览器输入一个URL,会发生什么
- DNS解析(浏览器根据URL,逐层查询DNS服务器缓存,解析URL中的域名所对应的IP地址)
- 缓存大致有:浏览器缓存、系统缓存、路由器缓存。。等
- IP地址和端口建立TCP连接(3次握手)
- 发送HTTP请求
- 服务器处理请求,并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束(四次挥手)
HTTP状态码
- 三位数组成,相应类别有5种
- 1xx:指示信息--表时请求已接收,继续处理
- 2xx:成功--表时请求已被成功接收、理解、接受
- 3xx:重定向--要完成请求必须进行更进一步的操作
- 4xx:客户端错误--请求由于发错误或请求无法实现
- 5xx:服务器端错误--服务器未实现合法的请求

HTTP三次握手
三次网络传输,才能创建http连接,确认连接过程,排除网络原因浪费网络资源。

图中就是大致的传输参数。
HTTP长连接
如何理解HTTP的无连接、短连接、长连接?:https://segmentfault.com/a/1190000015821798
浏览器请求头的Connection:(http1.1)keep-alive 希望服务端保持长连接(状态为close时,每次请求之后,请求就会关闭)
信道复用(http2),一个域名一个tcp连接,速度提升很大。
--资料来源:HTTP协议原理+实践Web开发工程师必学、剑指Java面试-Offer直通车
HTTP相关知识学习的更多相关文章
- 客户端相关知识学习(十二)之iOS H5交互Webview实现localStorage数据存储
前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...
- 客户端相关知识学习(十一)之Android H5交互Webview实现localStorage数据存储
前言 最近有一个需求是和在app中前端本地存储相关的,所以恶补了一下相关知识 webView开启支持H5 LocalStorage存储 有些时候我们发现写的本地存储没有起作用,那是因为默认WebVie ...
- 客户端相关知识学习(六)之deeplink技术
Deeplink应用描述 Deeplink,简单讲,就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页.不似web,一个链接就可以直接打开web的内页 ...
- Python 多线程相关知识学习
多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进 ...
- 服务端相关知识学习(三)Zookeeper的配置
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...
- View相关知识学习总结
(一)LayoutInflater原理分析 LayoutInflater主要用于加载布局.通常情况下,加载布局的任务都是在Activity中调用setContentView()方法来完成的,该方法内部 ...
- 【OpenStack】network相关知识学习
network 类型 local:通信不跨主机,必须同一网段,主要做单机测试使用: flat:统计可以跨主机,但是需要在同一网段: 每个 flat network 都会独占一个物理网卡 计算节点上 b ...
- Python 网络编程相关知识学习
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- jmeter相关知识学习记录
基于Jmeter5.2.1 断言之响应断言 响应断言:对服务器的响应接口进行断言校验,来判断接口测试得到的接口返回值是否正确. 测试字段就是指要断言的内容的匹配处. 响应文本:就是响应的body部分: ...
- 客户端相关知识学习(十)之app给h5传递数据
方法一: app可以把参数传到h5的链接里,用类似?xx=xx&xx=xx的形式拼接,js解析参数即可. 方法二: 情况一:app调用h5 原生app都可以对js的function进行触发,前 ...
随机推荐
- Supervisor进程守护监控部署
前言:Supervisor在百度百科上给的定义是超级用户,监管员.Supervisor是一个进程管理工具, 当进程中断的时候Supervisor能自动重新启动该进程.可以运行在各类Unix机器上,su ...
- Go语言快速入门
简介 Go是一个专门针对多处理器系统应用程序的编程进行了优化的,可以媲美C或C++代码的速度,而且更加安全.支持并行进程的语言. Go支持面向对象,而且具有真正的闭包(closures)和反射 (re ...
- [SQL Server]储存过程中使用临时表循环操作数据
本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd 由于工作原因,到目前为此已有一年多没有写SQL Server的储存过程了,已有些生疏.日前工作中有 ...
- centos7下的防火墙部署
iptables以及firewalld其实都是防火墙管理工具,说白一点,就是一个服务,用来保障公网与内网 iptables 由于centos7没有自带,需要自己安装 安装 yum install ip ...
- ORACLE 失效索引重建
-- 获取失效索引 SELECT * FROM USER_INDEXES WHERE TABLE_NAME IN ('表名') AND STATUS = 'UNUSABLE'; -- 重建语法alte ...
- Nmon 监控分析工具使用
一.简介 1.nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,记录的信息比较全面, 并且能输出结果到文件中,然后通过nmon ...
- OCR接口
OCR基础框 import pytesseract from PIL import Image img = Image.open('实际数据1.jpeg') #具体位置截图 image1 = Imag ...
- 山寨e网通公告
SHANZGONGG山寨e网通V1.0[换行]软件完全免费,官方绝不会索取任何费用,请勿被骗,后果自负.[换行]如果你有什么更好的建议或者需要哪里改进的地方,请联系作者QQ206044600反馈,前提 ...
- R安装cplexAPI弯路
最近使用R进行生物信息多组学分析,需要用到cplex,安装走了不少弯路,记录这个过程. 首先需要安装cplex:我的安装如下, 1.下载地址:cplex_studio1263.win-x86-64百度 ...
- 关于邮箱怎么验证是不是真实的企业邮箱(java汉字和英文呼唤)
企业邮箱的域名一般都是zhangsan@公司域名,或者zhang_san@公司域名这种形式.这里我只列举zhangsan@公司域名这种形式. 公司要我做一个企业邮箱的模糊匹配和验证,刚接到以为很难.结 ...