http协议(Hypertext Transfer Protocol,超文本传输协议)
http协议,就是浏览器和服务器之间进行“沟通”的一种规范 http是属于“应用层的协议”而且是基于TCP/IP协议的
TCP/IP协议 传输层协议
衍生出来http 原因:
而TCP协议是基于连接和三次握手的,虽然具有可靠性,但人具有一定的缺陷。但试想一下,普通的C/S架构软件,顶多上千个Client同时连接,而B/S架构的网站,十万人同时在线也是很平常的事儿。如果十万个客户端和服务器一直保持连接状态,那服务器如何满足承载呢?
这就衍生出了http协议。基于TCP的可靠性连接。通俗点说,就是在请求之后,服务器端立即关闭连接、释放资源。这样既保证了资源可用,也吸取了TCP的可靠性的优点。
正因为这点,所以大家通常说http协议是“无状态”的,也就是“服务器不知道你客户端干了啥”,其实很大程度上是基于性能考虑的。以至于后来有了session之类的玩意。
首先看看http请求消息(就是浏览器丢给服务器的):
一个http请求代表客户端浏览器向服务器发送的数据。一个完整的http请求消息,包含一个请求行,若干个消息头(请求头),换行,实体内容
请求行:描述客户端的请求方式、请求资源的名称、http协议的版本号。 例如: GET/BOOK/JAVA.HTML HTTP/1.1
请求头(消息头)包含(客户机请求的服务器主机名,客户机的环境信息等):
Accept:用于告诉服务器,客户机支持的数据类型 (例如:Accept:text/html,image/*)
Accept-Charset:用于告诉服务器,客户机采用的编码格式
Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式
Accept-Language:客户机语言环境
Host:客户机通过这个服务器,想访问的主机名
If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间
Referer:客户机通过这个头告诉服务器,它(客户端)是从哪个资源来访问服务器的(防盗链)
User-Agent:客户机通过这个头告诉服务器,客户机的软件环境(操作系统,浏览器版本等)
Cookie:客户机通过这个头,将Coockie信息带给服务器
Connection:告诉服务器,请求完成后,是否保持连接
Date:告诉服务器,当前请求的时间
再看看HTTP响应消息(服务器返回给浏览器的):
一个http响应代表服务器端向客户端回送的数据,它包括:
一个状态行,若干个消息头,以及实体内容
响应头(消息头)包含:
Location:这个头配合302状态吗,用于告诉客户端找谁
Server:服务器通过这个头,告诉浏览器服务器的类型
Content-Encoding:告诉浏览器,服务器的数据压缩格式
Content-Length:告诉浏览器,回送数据的长度
Content-Type:告诉浏览器,回送数据的类型
Last-Modified:告诉浏览器当前资源缓存时间
Refresh:告诉浏览器,隔多长时间刷新
Content-Disposition:告诉浏览器以下载的方式打开数据。例如: context.Response.AddHeader("Content-Disposition","attachment:filename=aa.jpg"); context.Response.WriteFile("aa.jpg");
Transfer-Encoding:告诉浏览器,传送数据的编码格式
ETag:缓存相关的头(可以做到实时更新)
Expries:告诉浏览器回送的资源缓存多长时间。如果是-1或者0,表示不缓存
Cache-Control:控制浏览器不要缓存数据 no-cache
Pragma:控制浏览器不要缓存数据 no-cache
Connection:响应完成后,是否断开连接。 close/Keep-Alive
Date:告诉浏览器,服务器响应时间
转:http://www.blogjava.net/cheneyfree/archive/2007/05/26/120168.html
1.
cookie保存于浏览器或客户端文件里面 ,一个站点最多保存20个cookier 一般不能超过4K.
2.session是保存在服务端的内存
Session就是服务器给客户端的一个编号 当一台web服务器运行时,可能 是有多个用户都在浏览这台服务器上的网站,当每个用户首次与这台服务器建立连接时,它就与这个服务器建立了一个Session,同时服务器就会自动为其分 配一个SessionId,用以标识这个用户的唯一身分,这个Session就是有服务器随机产生的一个由24个字符组成的字符串。
这个唯一的SessionId还是有很大的实际意义,当一个用户提交表单时,浏览器就会将用户的SessionId自动附加在HTTP头信息中,当服务器 处理完这个表单后,就会将结果返回给SessionId所对应的用户
七层:
应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
TCP/IP 四层:
连接层(Link Layer)、网络层(Internet Layer)、传输层(Transport Layer)、应用层(Application Layer)。
1)连接层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等等;
2)网络层负责分配地址和传送二进制数据,主要协议是IP协议;
3)传输层负责传送文本数据,主要协议是TCP协议;
4)应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。
分享到:
相关推荐
- HTTP2协议的基本理解。 - 缓存机制及CDN的应用。 - 代码压缩、图片优化等手段提升加载速度。 ### 面试技巧 1. **自我介绍** - 准备一段简短而精炼的自我介绍,突出个人优势及项目经验。 - 展示积极向上、...
- **HTTP/2和预加载**:理解HTTP/2协议的特性,以及如何利用link预加载和preload改善资源加载。 6. **响应式设计**: - **媒体查询**:适配不同屏幕尺寸,需要熟练运用CSS媒体查询。 - **移动优先**:设计时遵循...
总的来说,浏览器源码是一个涵盖众多技术领域的项目,包括网络通信、解析算法、前端脚本执行等。易语言虽然可以作为开发工具,但实现这样的项目需要深厚的编程基础和技术积累。对于初学者,建议先从简单的网络请求和...
知道浏览器的同源策略、跨域解决方案、HTTP/HTTPS协议等,有助于优化页面加载速度和安全性。 6. **性能优化**:前端性能优化包括减少HTTP请求、压缩资源、利用CDN、图片优化、懒加载、代码分割、首屏加载等方法。...
还要学习浏览器的工作原理,包括TCP/IP、DNS、HTTP协议,以及浏览器的开发者工具,如Chrome DevTools,用于调试、网络分析、性能优化等。 安全是前端开发不可忽视的部分,需要了解CSP(内容安全策略)、CORS(跨源...
根据提供的文件内容,以下为详细的IT知识点:...前端工程师不仅需要理论知识的学习,还需要在实际开发中积累经验,形成自己的性能优化思路和实践方法。通过不断的实践和探索,将性能优化变成自己研发方面的核心竞争力。
7. HTTP与网络:理解HTTP协议、请求响应过程、缓存机制、RESTful API设计等。 8. 版本控制:Git的使用,包括基本命令、分支管理、协作模式等。 9. 工具链:Webpack、Babel等构建工具的配置与使用,自动化测试和代码...
2. Web前端知识:面试中涉及到Web前端开发的知识,如JS、AJAX、HTTP协议、浏览器工作原理等,强调了Web前端开发的重要性。 3. 算法和数据结构:面试中考察了算法和数据结构的知识,如链表、二分法、排序算法等,...
理解HTTP协议,包括HTTP/2的特性,并能运用到实际项目中。 4. **响应式设计**:理解响应式布局的原理,如媒体查询、Flexbox和Grid布局,以及如何适配不同设备和屏幕尺寸。 5. **前端安全**:了解XSS(跨站脚本攻击...
积累前端知识,将其转化为文章。 进度 浏览器相关:5篇 算法:1篇 http:7篇 JavaScript基础知识:2篇 前端知识:15篇 Vue: 8篇 其他专栏 浏览器相关 算法系列 网络协议系列 wireShark的基本用法 深入TLS/SSL协议 ...
除非必要,否则省略HTTP或HTTPS协议前缀。 **HTML通用约定** 1. **语义化**:利用HTML5的语义元素增强文档结构,如`<header>`, `<nav>`, `<article>`, `<footer>`等,提高可访问性和SEO效果。 2. **注释**:使用...
7. **Web性能优化**:理解HTTP协议,学会使用工具分析和优化网页加载速度,包括压缩资源、减少HTTP请求、缓存策略等。 8. **响应式设计**:随着移动设备的普及,响应式设计是必不可少的,需要了解媒体查询、流式...
5. **面试真题**:这部分内容可能是作者在面试过程中遇到的题目,涵盖算法、数据结构、前端框架原理、网络协议等方面,对准备面试的人来说非常有价值。 6. **响应式设计**:随着移动设备的普及,响应式设计是必备...
- **机械设计制造及其自动化专业**: 本科教育背景虽然不是计算机相关专业,但通过后续的学习和实践,积累了丰富的前端开发经验。 #### 十二、自我评价 - **工作经验**: 拥有4年的Web前端开发实践经验,熟悉整个...
前端基础部分,了解网络协议(TCP、UDP)、HTTP请求方法和WebSocket的使用,以及无障碍访问(Web Accessibility)等。 此外,面试中还会涉及JavaScript、前端框架(如React、Vue)、版本控制(Git)、项目构建工具...
### 后端编程技术积累 在信息技术领域,后端开发是一项关键技能,它涉及服务器、应用程序和数据库的创建与管理,以支持用户所看到的前端界面。本文将根据提供的链接和描述,对后端编程技术进行梳理和总结,旨在帮助...
根据给定文件的信息,我们可以提炼出以下几个重要的知识点: ### 一、前端性能优化与动画处理 **背景**:在Duolingo任职期间,手秦...对于希望在前端领域深入发展的技术人员来说,这些都是非常宝贵的经验和技术积累。
1. **WEB前台技术_1_web开发基础**:这部分通常会讲解Web的工作原理,包括HTTP协议、浏览器解析机制、网页加载流程等。还会涉及基本的HTML结构和基本页面布局,以及如何利用FTP进行文件上传和版本控制工具如Git的...
- **Web前端技术**:熟悉Ajax、DOM等Web前端技术,了解Vue等前端框架,并对HTTP协议及浏览器的基本原理有一定的了解。 - **跨平台兼容性**:熟悉跨平台的兼容性和适配问题解决方法。 - **多语言支持**:会Java等...