计算机网络篇(前端、HTTP)
全端工程师需知道的计算机网络知识
一、网络篇—http报文详解
1. 分类
- 请求报文
- 响应报文
2. 报文结构
(一)、请求报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成;
- 请求行
- 由请求方法字段、URL字段和HTTP协议字段3个字段组成,它们由空格分隔;
- 例如,GET /index.html HTTP/1.1。
- HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
- 请求头部
- 请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
- 请求头部通知服务器有关于客户端请求的信息;
常用的请求头:
- Accept 设置接受的内容类型
Accept: text/plain
; - Accept-Charset 设置接受的字符编码:
Accept-Charset: utf-8
; - Accept-Encoding 设置接受的编码格式:
Accept-Encoding: gzip, deflate
; - Accept-Language 设置接受的语言:
Accept-Language: en-US
; - Cache-Control 设置请求响应链上所有的缓存机制必须遵守的指令:
Cache-Control: no-cache
; - Connection 设置当前连接和hop-by-hop协议请求字段列表的控制选项:
Connection: keep-alive
; - Content-Length 设置请求体的字节长度:
Content-Length: 348
; - Content-Type 设置请求体的MIME类型(适用POST和PUT请求):
Content-Type: application/x-www-form-urlencoded
; - Cookie 设置服务器使用Set-Cookie发送的http cookie:
Cookie: $Version=1; Skin=new;
; - Host 设置服务器域名和TCP端口号,如果使用的是服务请求标准端口号,端口号可以省略:
Host: en.wikipedia.org:8080
; - Origin 标识跨域资源请求(请求服务端设置Access-Control-Allow-Origin响应字段):
Origin: http://www.example-social-network.com
; - Expires 设置响应体的过期时间:
Expires: Thu, 01 Dec 1994 16:00:00 GMT
; - ETag 特定版本资源的标识符,通常是消息摘要:
ETag: "737060cd8c284d8af7ad3082f209582d"
; - Last-Modified 设置请求对象最后一次的修改日期:
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
;
- Accept 设置接受的内容类型
- 空行
- 最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
- 请求主体(数据)
- 请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
(二)、响应报文
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行、响应正文。
- 在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。
- 状态行
- 格式:服务器HTTP协议的版本 响应状态代码 状态代码的文本描述;
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
- 1xx:指示信息--表示请求已接收,继续处理。
- 2xx:成功--表示请求已被成功接收、理解、接受。
- 3xx:重定向--要完成请求必须进行更进一步的操作。
- 4xx:客户端错误--请求有语法错误或请求无法实现。
- 5xx:服务器端错误--服务器未能实现合法的请求。
常见状态代码:
- 200 OK :表示请求成功 一切正常
- 301 Moved Permanently:重定向,客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL
- 302 Found:临时重定向,类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。
- 304 Not Modified:客户端有缓冲的文档并发出了一个条件性的请求。服务器告诉客户,原来缓冲的文档还可以继续使用。
- 400 Bad Request:请求出现语法错误。
- 403 Forbidden:资源不可用。
- 404 Not Found:无法找到指定位置的资源。
- 405 Method Not Allowed:请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用。
- 500 Internal Server Error:服务器遇到了意料不到的情况,不能完成客户的请求。
- 501 Not Implemented:服务器不支持实现请求所需要的功能
(三)、关于请求post和get的区别
- GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头<request-line>中);
- POST提交:把提交的数据放置在是HTTP包的包体<request-body>中;
- 传输数据的大小:
- HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。
而在实际开发中存在的限制主要有:
- GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。因此对于GET提交时,传输数据就会受到URL长度的限制。
- POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
4.安全性:
- POST的安全性要比GET的安全性高。
- 通过GET提交数据,用户名和密码将明文出现在URL上,因为
- (1)登录页面有可能被浏览器缓存,
- (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了
(四)、http和https
1. HTTP和HTTPS
- HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS
- 默认HTTP的端口号为80,HTTPS的端口号为443
2. 为什么HTTPS安全
- 因为网络请求需要中间有很多的服务器路由器的转发。中间的节点都可能篡改信息,而如果使用HTTPS,密钥在你和终点站才有。https之所以比http安全,是因为他利用ssl/tls协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等。保障了传输过程的安全性
3. 关于Http 2.0
- HTTP/2引入了“服务端推(server push)”的概念,它允许服务端在客户端需要数据之前就主动地将数据发送到客户端缓存中,从而提高性能。
- HTTP/2提供更多的加密支持
- HTTP/2使用多路技术,允许多个消息在一个连接上同时交差。
- 它增加了头压缩(header compression),因此即使非常小的请求,其请求和响应的header都只会占用很小比例的带宽
4. http缺点:
- 通信使用明文不加密,内容可能被窃取;
- 不验证通信方身份,可能遭到伪装;
- 无法验证报文完整性,可能被篡改。
https是加上加密处理(一般是SSL安全通信线路)+认证+完整性保护
5. HTTP/2 与 HTTP/1.x 的关键区别
- 二进制协议代替文本协议,更加简洁高效
- 针对每个域只使用一个多路复用的连接
- 压缩头部信息减小开销
- 允许服务器主动推送应答到客户端的缓存中
(五)、http状态码
简单版
[
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
]
二、网络——其他
1. 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?(流程说的越详细越好)
一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么
2. 说说网络分层里七层模型是哪七层
- 应用层:应用层、表示层、会话层(从上往下)(HTTP、FTP、SMTP、DNS)
- 传输层(TCP和UDP)
- 网络层(IP)
- 物理和数据链路层(以太网)
- 每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)数据链路层:将比特组装成帧和点到点的传递(帧Frame)
- 网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
- 传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
- 会话层:建立、管理和终止会话(会话协议数据单元SPDU)
- 表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
- 应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
3. 304缓存的原理
- 服务器首先产生ETag,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存
- 304是HTTP状态码,服务器用来标识这个文件没修改,不返回内容,浏览器在接收到个状态码后,会使用浏览器已缓存的文件
- 客户端请求一个页面(A)。 服务器返回页面A,并在给A加上一个ETag。 客户端展现该页面,并将页面连同ETag一起缓存。 客户再次请求页面A,并将上次请求时服务器返回的ETag一起传递给服务器。 服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体
- 认识更多--浏览器缓存篇
原文地址:https://segmentfault.com/a/1190000015017908
计算机网络篇(前端、HTTP)的更多相关文章
- Vue 2.5 发布了:15篇前端热文回看
Vue 2.5 发布了:15篇前端热文回看 2017-11-02 前端大全 (点击上方公众号,可快速关注) 本文精选了「前端大全」2017 年 10 月的 15 篇热门文章.其中有职场分享.技术分享和 ...
- 6 大主流 Web 框架优缺点对比:15篇前端热文回看
摘自:http://blog.csdn.net/VhWfR2u02Q/article/details/78993079 注:以下文章,点击标题即可阅读 <6 大主流 Web 框架优缺点对比> ...
- 前端第二篇---前端基础之CSS
前端第二篇---前端基础之CSS 目录 一.css介绍 二.css语法 三.css的几种引入方式 四.css选择器 五.css属性相关 六.盒子模型 拓展 一.css介绍 CSS(Cascading ...
- 前端第三篇---前端基础之JavaScript
前端第三篇---前端基础之JavaScript 一.JavaScript概述 二.JavaScript的基础 三.词法分析 四.JavaScript的内置对象和方法 五.BOM对象 六.DOM对象 七 ...
- 前端第四篇---前端基础之jQuery
前端第四篇---前端基础之jQuery 一.jQuery介绍 二.jQuery对象 三.jQuery基础语法 四.事件 五.动画效果 六.补充each 一.jQuery简介 1.jQuery介绍 jQ ...
- 从插上网线到web页面请求,究竟发生了哪些过程?(计算机网络篇)
一.说在前头 好久没有更新博客了,汗颜,最近忙于各种实验与报告,但是还是要抽时间总结一下学的东西.欢迎转载,但是要注明出处哦(=^ ^=). 最近学了计算机网络,正好总结一下.本篇博客的大部分是跟计算 ...
- Spring Boot(一):入门篇+前端访问后端
转自:Spring Boot(一):入门篇 什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发 ...
- Java面试知识点之计算机网络篇(一)
前言:在Java面试中,计算机网络的知识也是一项重点,因此笔者在此对计算机网络的相关知识进行总结. 1.OSI参考模型 自下而上:物理层(物理介质,比特流).数据链路层(网卡.交换机).网络层(IP协 ...
- 第四篇 前端学习之JQuery基础
一 jQuery是什么? jQuery就是一个JavaScript的库. <1> jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入 ...
随机推荐
- 【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)
[Silverlight]Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System) 目前包括微软必应地图在内的几乎所有在线电子地图(如:Google Maps等)都 ...
- uva 12265 贩卖土地
题目大意: 有一个矩阵 有些点可以取有些不能 求以每个点为右下角的子矩阵(里面点都可以取)的周长最大值 最后统计出每个周长对应矩阵的个数 思路: 单调栈 先预处理出每个点向上最多能延伸多长记为h(i, ...
- Ubuntu搭建Eclipse+JDK+SDK的Android (转载)
转自:http://blog.csdn.net/ithomer/article/details/6960989 今晚重装Ubuntu系统,重新安装了一套eclipse+jdk+SDK的Android开 ...
- E20171229-hm
specification n. 规格; 说明书; 详述;
- bzoj 1731: [Usaco2005 dec]Layout 排队布局【差分约束】
差分约束裸题,用了比较蠢的方法,先dfs_spfa判负环,再bfs_spfa跑最短路 注意到"奶牛排在队伍中的顺序和它们的编号是相同的",所以\( d_i-d_{i-1}>= ...
- bzoj 1690: [Usaco2007 Dec]奶牛的旅行【01分数规划+spfa】
把add传参里的double写成int我也是石乐志-- 首先这个东西长得就很01分数规划 然后我不会证为什么没有8字环,我们假装他没有 那么设len为环长 \[ ans \leq \frac{\sum ...
- Final关键字解析
final 在 Java 中是一个保留的关键字,可以声明变量.方法.类. 什么是final变量 / 类 / 方法? 任何变量前被 final 修饰就是 final 变量,定义的类前被 final 修饰 ...
- Extjs grid禁用头部点击三角下拉菜单
表格头部的三角在点击的时候禁止出现下拉菜单,给每一列添加属性menuDisabled:true xtype:'grid', enableColumnResize:false, columns:[ {t ...
- [LOJ#10132]异象石
Description Adera 是 Microsoft 应用商店中的一款解谜游戏. 异象石是进入 Adera 中异时空的引导物,在 Adera 的异时空中有一张地图.这张地图上 有 N 个点,有 ...
- NPOI 导出Excel 2007, 2013问题
NPOI默认有两个命名空间HSSF为Excel 2003 版本,若导出2007 及以上后缀名打开excel 则会报错,NPOI也提供了一个07及以上的版本空间XSSF,具体操作列下: NPOI.XSS ...