http协议学习札记
url的构成【版权所有】唐霜 www.tangshuang.net
【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。【原创不易,请尊重版权】URL(Uniform Resource【转载请注明来源】转载请注明出处:www.tangshuang.net Locator) 中文称为统一资源定位原创内容,盗版必究。原创内容,盗版必究。符,如同网络上的门牌,用于描述一个网络上【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。的资源。
未经授权,禁止复制转载。【原创不易,请尊重版权】【原创不易,请尊重版权】基本格式【访问 www.tangshuang.net 获取更多精彩内容】:schema://host[:port【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。#]/path/…/[?qu【版权所有】唐霜 www.tangshuang.net【转载请注明来源】ery-string][#anchor]
【转载请注明来源】【本文受版权保护】原创内容,盗版必究。【未经授权禁止转载】转载请注明出处:www.tangshuang.netscheme 传输协议转载请注明出处:www.tangshuang.net: 指定使用的协议(例如:http, h【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】ttps, ftp),这里就是http或【版权所有,侵权必究】【未经授权禁止转载】者https,大多数网页浏览器不要求用户著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】输入网页中“http(s)://”的部分【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】,因为绝大多数网页内容是超文本传输协议文【原创内容,转载请注明出处】未经授权,禁止复制转载。件。
【作者:唐霜】【版权所有,侵权必究】【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。host 服务器【本文受版权保护】: HTTP服务器的IP地址或者域名,一【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。般人访问网站首页通常只要输入域名部分。
【本文首发于唐霜的博客】【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】【本文首发于唐霜的博客】port 端口号原创内容,盗版必究。: HTTP服务器的默认端口是80,这种本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】情况下端口号可以省略。如果使用了别的端口未经授权,禁止复制转载。【版权所有,侵权必究】,必须指明。
转载请注明出处:www.tangshuang.net【本文受版权保护】未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.netpath 路径著作权归作者所有,禁止商业用途转载。: 访问资源的路径,对应后端路由控制部分著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。代码index.js中定义的路径
本文作者:唐霜,转载请注明出处。原创内容,盗版必究。未经授权,禁止复制转载。query-string 查询字符串本文版权归作者所有,未经授权不得转载。: 发送给http服务器的数据,用get本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。请求发送的数据会在这一部分显示,url中原创内容,盗版必究。【本文首发于唐霜的博客】?后面的部分。例如:url?name=zzl&age=10。以“?”字符为起点,每个参数以“&am原创内容,盗版必究。【原创不易,请尊重版权】p;”隔开,再以“=”分开参数名称与数据【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】。
未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.netanchor 锚【版权所有】唐霜 www.tangshuang.net: 锚,用来定位到页面中的特定地方。例如本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。:url#title-1【版权所有】唐霜 www.tangshuang.net。以“#”字符为起点,后面为其值,可以对【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。应页面中某元素的id或name属性。
【作者:唐霜】本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】【转载请注明来源】转载请注明出处:www.tangshuang.net思考题:写一个函数,方便的获取当前url未经授权,禁止复制转载。【原创内容,转载请注明出处】的各个部分。
原创内容,盗版必究。【本文首发于唐霜的博客】【本文受版权保护】http请求的内容【未经授权禁止转载】
【本文受版权保护】转载请注明出处:www.tangshuang.net【未经授权禁止转载】http请求包含“请求(request)【版权所有,侵权必究】未经授权,禁止复制转载。”和“响应(response)”两个部分未经授权,禁止复制转载。【本文首发于唐霜的博客】,分别包含头和内容,即:请求头、请求体、【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。响应头、响应体。
著作权归作者所有,禁止商业用途转载。【本文受版权保护】本文作者:唐霜,转载请注明出处。【转载请注明来源】原创内容,盗版必究。request消息的结构著作权归作者所有,禁止商业用途转载。
【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。未经授权,禁止复制转载。Method | path to resource | http/version number ----------------------------------------------- Header name 1: value Header name 2: value ... ----------------------------------------------- ----------------------------------------------- request body(optional)
可以看到http request分为三个本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】部分:
【版权所有,侵权必究】【原创内容,转载请注明出处】未经授权,禁止复制转载。- 第一部分是request line,包括【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。请求的方法Method(GET/POST【作者:唐霜】著作权归作者所有,禁止商业用途转载。)、请求资源的路径path to res著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。ource(对应后端路由部分定义的路径)【作者:唐霜】原创内容,盗版必究。和http协议的版本号。 【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。【转载请注明来源】
- 第二部分是request header请【原创内容,转载请注明出处】【转载请注明来源】求头 原创内容,盗版必究。【本文首发于唐霜的博客】【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net
- 第三部分是request body请求体【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】,当使用GET方法发送请求的时候,请求体【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。是空的 本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。
response消息的结构【作者:唐霜】
本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。http/version number | status code | message ----------------------------------------------- Header name 1: value header name 2: value ... ----------------------------------------------- ----------------------------------------------- response body(optional)
可以看到http response也分为未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】三个部分:
原创内容,盗版必究。本文作者:唐霜,转载请注明出处。【作者:唐霜】【本文受版权保护】- 第一部分是response line,包【转载请注明来源】【本文受版权保护】括http协议版本号,响应状态码和响应状【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。态消息 【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【转载请注明来源】
- 第二部分是response header【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。响应头 【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】【版权所有,侵权必究】
- 第三部分是响应体【本文首发于唐霜的博客】 【本文受版权保护】本文作者:唐霜,转载请注明出处。【转载请注明来源】转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】
结构上看其实他们是一样的,只不过内容不同【本文受版权保护】【原创不易,请尊重版权】而已。请求头和响应头不同,请求发出的表示著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】客户端希望服务端怎么做,而响应头则表示服【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net务端希望客户端如何做。拿Content-原创内容,盗版必究。【作者:唐霜】type来说,请求头里面可能发出的con本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.nettent-type是aplication【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】/json,而响应头里面返回的可能是ap原创内容,盗版必究。未经授权,禁止复制转载。plication/atom,这是怎么回本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。事呢?这种情况一般是指客户端(比如手机a【未经授权禁止转载】未经授权,禁止复制转载。pp)希望服务端返回给自己的是json数【访问 www.tangshuang.net 获取更多精彩内容】【访问 www.tangshuang.net 获取更多精彩内容】据,但是服务端这个资源没有对应的json原创内容,盗版必究。【未经授权禁止转载】数据,所以就返回了atom数据给客户端,【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net那么客户端在得到这个头信息之后,应该做数未经授权,禁止复制转载。原创内容,盗版必究。据格式转换或其他操作。
【关注微信公众号:wwwtangshuangnet】【转载请注明来源】本文作者:唐霜,转载请注明出处。TCP/IP【作者:唐霜】
本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。【作者:唐霜】【版权所有】唐霜 www.tangshuang.net当你在浏览器中输入一个url,到你看到页【转载请注明来源】【原创内容,转载请注明出处】面的这个过程中,背后都发生了什么?回答这未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net个问题需要你了解TCP/IP网络架构。这转载请注明出处:www.tangshuang.net原创内容,盗版必究。个网络通信架构中,网络通信被分为五层模型原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。,分别是:应用层、传输层、网络层、数据链未经授权,禁止复制转载。【转载请注明来源】路层、物理层。
未经授权,禁止复制转载。【原创不易,请尊重版权】【本文首发于唐霜的博客】应用层本文版权归作者所有,未经授权不得转载。
【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net简单的说,应用层是指应用程序怎么处理网络【原创不易,请尊重版权】【原创不易,请尊重版权】请求和响应的。这里的应用程序包括一整套的【版权所有,侵权必究】转载请注明出处:www.tangshuang.net相关程序,比如我们这个场景中的浏览器使用本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】http、https进行网络请求,htt未经授权,禁止复制转载。【作者:唐霜】p、ftp、SSH、DNS就属于这一层。
【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。【转载请注明来源】当一个应用程序,比如浏览器,按照应用层的【作者:唐霜】【原创内容,转载请注明出处】协议(http)处理数据之后,这些数据就【作者:唐霜】【本文首发于唐霜的博客】会被送往下一层。
转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。传输层未经授权,禁止复制转载。
转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。传输层是指当数据经过应用层之后,对数据发转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。向哪里进行处理的阶段。简单的说,就是确定【未经授权禁止转载】未经授权,禁止复制转载。端口。一般而言,一个应用程序运行的时候,【原创不易,请尊重版权】【访问 www.tangshuang.net 获取更多精彩内容】会占用一个端口,它发出数据时,会从这个端转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net口发出去,接收数据时(比如数据回来),也本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】从这个端口进来。这里可以举一个例子,就是原创内容,盗版必究。本文作者:唐霜,转载请注明出处。httpd的80端口,当一个请求过来的时【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】候,请求数据从80端口进来,完成之后又从未经授权,禁止复制转载。【原创内容,转载请注明出处】这里出去。传输层的主要作用就是确定数据由本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。当前系统的哪个端口出去,被送到另外的哪一本文作者:唐霜,转载请注明出处。【本文受版权保护】个端口(可能是本机,也可能是服务器的端口本文作者:唐霜,转载请注明出处。【未经授权禁止转载】),进来的数据根据端口判断应该丢给哪个程【转载请注明来源】【未经授权禁止转载】序去处理。
【本文受版权保护】未经授权,禁止复制转载。【原创不易,请尊重版权】原创内容,盗版必究。端口号从0到65535,其中0-1023【原创不易,请尊重版权】【本文首发于唐霜的博客】都被系统占用,你新开一个程序的话,会在后本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。面的端口中随机分配一个。但是有些应用程序【本文首发于唐霜的博客】【未经授权禁止转载】允许你强制给它安排端口(我们熟悉的服务端【作者:唐霜】转载请注明出处:www.tangshuang.net程序都是这样)。
【版权所有,侵权必究】【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。TCP和UDP这两种协议就是传输层的协议【本文受版权保护】转载请注明出处:www.tangshuang.net。当应用层的数据进入传输层之后,被传输层【原创内容,转载请注明出处】【作者:唐霜】处理,按照TCP协议处理后的数据的单元是本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】“数据段”,而按UDP协议处理后的数据的本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net单元叫“数据报”,也就我们常听说的“报头【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。”里的“报”。
本文作者:唐霜,转载请注明出处。原创内容,盗版必究。【未经授权禁止转载】【本文首发于唐霜的博客】应用层的协议是基于传输层的协议的(实际上【本文受版权保护】著作权归作者所有,禁止商业用途转载。,上层的协议都要基于下层协议),比如:
转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】运行在TCP协议上的协议:转载请注明出处:www.tangshuang.net
【转载请注明来源】【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。-
- HTTP(Hypertext Trans本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】fer Protocol,超文本传输协议【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。),主要用于普通浏览。 著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。
- HTTPS(Hypertext Tran【原创内容,转载请注明出处】【原创内容,转载请注明出处】sfer Protocol over S【未经授权禁止转载】转载请注明出处:www.tangshuang.netecure Socket Layer, 本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】or HTTP over SSL,安全超未经授权,禁止复制转载。【原创不易,请尊重版权】文本传输协议),HTTP协议的安全版本。 本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】
- FTP(File Transfer Pr【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】otocol,文件传输协议),由名知义,【本文首发于唐霜的博客】【转载请注明来源】用于文件传输。 【版权所有,侵权必究】【版权所有,侵权必究】原创内容,盗版必究。
- POP3(Post Office Pro本文作者:唐霜,转载请注明出处。原创内容,盗版必究。tocol, version 3,邮局协本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】议),收邮件用。 【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。【原创内容,转载请注明出处】未经授权,禁止复制转载。
- SMTP(Simple Mail Tra【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】nsfer Protocol,简单邮件传【转载请注明来源】【作者:唐霜】输协议),用来发送电子邮件。 转载请注明出处:www.tangshuang.net【未经授权禁止转载】【转载请注明来源】未经授权,禁止复制转载。
- TELNET(Teletype over【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。 the Network,网络电传),通【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。过一个终端(terminal)登陆到网络未经授权,禁止复制转载。【未经授权禁止转载】。 转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net
- SSH(Secure Shell,用于替【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】代安全性差的TELNET),用于加密安全【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】登陆用。 本文作者:唐霜,转载请注明出处。【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。【未经授权禁止转载】
运行在UDP协议上的协议:【作者:唐霜】
【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。【作者:唐霜】-
- BOOTP(Boot Protocol,原创内容,盗版必究。【转载请注明来源】启动协议),应用于无盘设备。 【转载请注明来源】【原创不易,请尊重版权】【原创内容,转载请注明出处】【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。
- NTP(Network Time Pro【关注微信公众号:wwwtangshuangnet】【原创内容,转载请注明出处】tocol,网络时间协议),用于网络同步转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】。 【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。
- DHCP(Dynamic Host Co著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】nfiguration Protocol未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net,动态主机配置协议),动态配置IP地址。 转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】
其他:【本文首发于唐霜的博客】
【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net-
- DNS(Domain Name Serv本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】ice,域名服务),用于完成地址查找,邮【转载请注明来源】本文版权归作者所有,未经授权不得转载。件转发等工作(运行在TCP和UDP协议上转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。)。 【转载请注明来源】著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】
- ECHO(Echo Protocol,回【转载请注明来源】【本文首发于唐霜的博客】绕协议),用于查错及测量应答时间(运行在转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.netTCP和UDP协议上)。 【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】【作者:唐霜】
- SNMP(Simple Network 原创内容,盗版必究。未经授权,禁止复制转载。Management Protocol,【本文受版权保护】本文版权归作者所有,未经授权不得转载。简单网络管理协议),用于网络信息的收集和【原创不易,请尊重版权】【版权所有,侵权必究】网络管理。 未经授权,禁止复制转载。【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。【作者:唐霜】
- ARP(Address Resoluti【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】on Protocol,地址解析协议),【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】用于动态解析以太网硬件的地址。 本文作者:唐霜,转载请注明出处。【本文受版权保护】本文作者:唐霜,转载请注明出处。【本文受版权保护】【作者:唐霜】
这些协议我们还算是比较熟悉。原创内容,盗版必究。
【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】转载请注明出处:www.tangshuang.net网络层【未经授权禁止转载】
转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。网络层简单的理解,就是机器与机器之间的互【未经授权禁止转载】转载请注明出处:www.tangshuang.net联。经过传输层的数据能够确定该数据将交给本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。哪个端口来处理,但是并不知道将交给哪一台【本文首发于唐霜的博客】【原创不易,请尊重版权】主机(也可能是自身)来处理。网络传输的概【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。念发生在这一层。
【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】构建起网络层的重要协议就是IP地址。目前【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】广泛采用的IP协议是IPv4,下一代IP【作者:唐霜】【原创不易,请尊重版权】协议就是我们经常听到的IPv6. 很明显原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】TCP是基于IP协议的,也就是说TCP是【原创不易,请尊重版权】【未经授权禁止转载】为IP服务的,TCP/IP组合保证了数据【版权所有】唐霜 www.tangshuang.net【本文受版权保护】传输的可靠性。而UDP则不一定依赖于IP【未经授权禁止转载】【原创不易,请尊重版权】,所以基于IP的网络中UDP的数据并不完【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net全可靠,但是性能上更快。
未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】经由网络层协议处理过的数据的单元结构被称转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net为“数据包”,这些数据包非常清晰自己应该本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】奔向哪一台主机。路由协议和网址解析协议都【转载请注明来源】【作者:唐霜】属于这一层。
未经授权,禁止复制转载。未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】数据链路层转载请注明出处:www.tangshuang.net
本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。【转载请注明来源】【本文首发于唐霜的博客】前面三层都是在一台电脑上的软件完成的,并本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】没有涉及到硬件。而数据链路层,简单的说,本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】就是要确定网卡(及其驱动程序)在数据传输原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】中的可靠性。当数据经过网络层处理后,就将著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】进入真正的网际传输阶段,但由虚拟的数据转著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】换为网际线路中传输的信号过程中,必须靠网著作权归作者所有,禁止商业用途转载。【作者:唐霜】卡进行加工。网卡把来自不同网络层处理好的【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】数据,统一转换为符合数据链路层协议的脉冲【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。信号。
【作者:唐霜】原创内容,盗版必究。未经授权,禁止复制转载。【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net网卡具有唯一的MAC地址,数据能够在不同转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】的实体电脑之间传输,必须依靠这个MAC地【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】址进行识别,经处理后的数据可以通过实体线【原创内容,转载请注明出处】原创内容,盗版必究。路找到要去的网卡,因此路由器设备是基于这原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。一层开发的。
【原创内容,转载请注明出处】【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】数据在这一层的单元结构被称为“数据帧”。
转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。物理层转载请注明出处:www.tangshuang.net
本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。物理层则是基于实体的传输介质协议层,包括【本文受版权保护】转载请注明出处:www.tangshuang.net光纤、双绞线、无线电波等。虽然已经是实体【转载请注明来源】【版权所有】唐霜 www.tangshuang.net了,但是它们之间仍然必须遵循一些网络协议【转载请注明来源】本文版权归作者所有,未经授权不得转载。,特别是无线电波(例如WIFI)。数据经【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。过物理层处理之后,就成为真正的点脉冲,在【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net这些介质中传播。
【作者:唐霜】本文作者:唐霜,转载请注明出处。【作者:唐霜】未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。数据在这一层的单元结构被称为“比特”。原创内容,盗版必究。
本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】【版权所有,侵权必究】TCP三次握手和四次挥手本文版权归作者所有,未经授权不得转载。
【原创不易,请尊重版权】【原创内容,转载请注明出处】未经授权,禁止复制转载。所谓“三次握手”是指在一个连接的建立阶段本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。,客户端和服务端有三次交互,因为是“建立本文作者:唐霜,转载请注明出处。【本文受版权保护】”连接,所以叫“握手”。所谓“四次挥手”【原创不易,请尊重版权】【转载请注明来源】是指在一个连接的释放阶段,客户端和服务端转载请注明出处:www.tangshuang.net【版权所有,侵权必究】有四次交互,因为是“释放”所以叫“挥手”本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。。
原创内容,盗版必究。【原创内容,转载请注明出处】【转载请注明来源】本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】
TCP三次握手和四次挥手本文作者:唐霜,转载请注明出处。
本文版权归作者所有,未经授权不得转载。【作者:唐霜】【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。一个TCP链接在握手阶段,每次握手都需要【版权所有,侵权必究】【未经授权禁止转载】传送“包”,这个包包含了发送方的信息,这【原创不易,请尊重版权】【原创内容,转载请注明出处】个信息用于确认。这里面主要指SYN标志位原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】和ACK标志。在第一次握手时,由客户端发未经授权,禁止复制转载。【作者:唐霜】送SYN标识,第二次握手,由服务端发送S著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】YN+ACK标识,第三次握手由客户端发送【原创不易,请尊重版权】【转载请注明来源】ACK标识。
著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net
TCP三次握手【版权所有,侵权必究】
【原创内容,转载请注明出处】【转载请注明来源】未经授权,禁止复制转载。【本文首发于唐霜的博客】在服务端接收到第三次握手的信息之后,将建【作者:唐霜】【未经授权禁止转载】立真正的连接,数据传输才会进行。
转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。【转载请注明来源】本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。释放一个连接的时候,既可以是客户端发起,著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。也可以是服务端发起,但任何一方发起,都需【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】要先发送一个FIN标识,另一方回复一个A转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.netCK标识,这表示另一方答应断开连接,但是本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】这并不表示连接已经断开,还需要原来回复A【本文受版权保护】【作者:唐霜】CK的那一方再发起一个FIN,对方再回复本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】一个ACK,才表示双方的同意断开连接,这【版权所有,侵权必究】【未经授权禁止转载】样这个连接才正式断开。
【原创内容,转载请注明出处】【本文受版权保护】【原创不易,请尊重版权】原创内容,盗版必究。
TCP四次挥手未经授权,禁止复制转载。
【未经授权禁止转载】【版权所有,侵权必究】【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】看上去两问两答更简单,但其实更复杂。当一【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。方发送FIN提出“分手”之后,另一方即使【本文受版权保护】著作权归作者所有,禁止商业用途转载。返回ACK,也并不代表断开连接,它可能还【原创不易,请尊重版权】【版权所有,侵权必究】有自己的数据要发送给对方,所以迟迟不肯发本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。出FIN这个“分手”同意书。这种状态被称转载请注明出处:www.tangshuang.net【未经授权禁止转载】为等待方的“FIN_WAIT”。当双方都【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net受到ACK之后,事情还没完,发起释放请求未经授权,禁止复制转载。【原创内容,转载请注明出处】的一方还处于“TIME_WAIT”的状态【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net,需要等一段时间还没有任何对方的消息,才【本文受版权保护】未经授权,禁止复制转载。会真正断开。在WAIT状态,很有可能双方【作者:唐霜】【本文受版权保护】会重新连接传输数据。
【本文首发于唐霜的博客】【作者:唐霜】【作者:唐霜】为什么不能用两次握手进行连接?本文作者:唐霜,转载请注明出处。
【转载请注明来源】未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。三次握手是为了确保双方相互发送数据是可以【作者:唐霜】【原创不易,请尊重版权】正常进行的,是发送数据的准备工作。虽然是【版权所有,侵权必究】【本文首发于唐霜的博客】三次握手,但是实际上完成的是两问两答,只著作权归作者所有,禁止商业用途转载。【转载请注明来源】不过服务端把自己的问蕴含在对第一次握手的原创内容,盗版必究。转载请注明出处:www.tangshuang.net回答中,只有服务端的问也被客户端答之后,原创内容,盗版必究。【本文首发于唐霜的博客】才能确保双方都是可靠的。如果只有两次握手【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】,那么起码服务端无法获得客户端是不是正常【转载请注明来源】转载请注明出处:www.tangshuang.net的,那谁知道客户端会不会存在问题,无法正【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】常收发数据呢?因此,客户端在收到服务端的【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。SYN之后,也应该回复ACK,才能保证双【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。方通信正常。
未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】【转载请注明来源】但是,正是由于这一点,带来了【未经授权禁止转载】SYN攻击著作权归作者所有,禁止商业用途转载。威胁。SYN实际上就是模拟两次握手,即客【本文首发于唐霜的博客】【原创内容,转载请注明出处】户端发送大量SYN(基于一大堆虚假IP)【作者:唐霜】【本文受版权保护】,服务端对每个SYN都进行回复ACK,但本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net是服务端发出的SYN这些虚假的IP根本无【转载请注明来源】【未经授权禁止转载】法回复ACK,也就是第三次握手丢失,导致【作者:唐霜】【转载请注明来源】服务端一直等待这些回复,从而其他的连接请【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。求处于排队状态,造成网络拥堵。
本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net既然如此,为什么释放连接不用三次挥手?【原创不易,请尊重版权】
本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】【作者:唐霜】【本文首发于唐霜的博客】【原创内容,转载请注明出处】既然三次握手解决了两问两答的问题,为什么【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】释放连接的时候也这样做?释放连接的时候还【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。要考虑数据有没有传完。用http请求打比方【作者:唐霜】,当一个请求发出时,浏览器会把请求头传输本文作者:唐霜,转载请注明出处。原创内容,盗版必究。到服务器端,当获得服务器的一个状态码时,【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】就可以发出FIN断开连接。但是这是浏览器【版权所有,侵权必究】未经授权,禁止复制转载。一厢情愿的做法,服务器收到这个FIN时会【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。予以回复ACK,但服务器还在把数据传输给转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。浏览器,所以自己不会发出FIN,直到响应未经授权,禁止复制转载。【本文受版权保护】信息被浏览器接收之后,服务器才会发出自己未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。的FIN,等待浏览器回复ACK予以确认。
【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。上面非常好的解释了为什么不能三次挥手。你转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】可能会问,为什么不等到服务器传输数据完之【作者:唐霜】著作权归作者所有,禁止商业用途转载。后再一起把FIN和ACK发回去?因为当浏未经授权,禁止复制转载。未经授权,禁止复制转载。览器发出FIN之后,如果没有立即收到AC【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。K,可以有两种选择,一种是认为服务器掉线【本文受版权保护】【本文受版权保护】了,所以浏览器应该断开链接,另一种是认为本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】网络出现震荡,所以应该再发送一个FIN。【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】第二种情况相对可取一些,但仍然没有四次挥【本文受版权保护】著作权归作者所有,禁止商业用途转载。手来得直接。
【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。原创内容,盗版必究。【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。KeepAlive【转载请注明来源】
【原创内容,转载请注明出处】【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】【版权所有,侵权必究】TCP的KeepAlive和HTTP的K【本文首发于唐霜的博客】未经授权,禁止复制转载。eep-Alive有所区别。在三次握手和未经授权,禁止复制转载。原创内容,盗版必究。四次挥手之间,TCP层之上都在发生什么呢本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。?当然是HTTP发送请求和接收数据,也就【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net是request和response,这个【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。可以在浏览器的开发工具中可以看到。
未经授权,禁止复制转载。【未经授权禁止转载】原创内容,盗版必究。【未经授权禁止转载】一般来说,建立一次HTTP连接,常常的做未经授权,禁止复制转载。【版权所有,侵权必究】法是先建立TCP连接,TCP连接之后,在本文作者:唐霜,转载请注明出处。【作者:唐霜】它之上实现一次request和respo【本文首发于唐霜的博客】未经授权,禁止复制转载。nse之后,就释放掉,断开TCP连接。而著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。如果很多HTTP请求一次性发送,那么就需【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】要不断的建立新的TCP连接,这就很有可能本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】导致后面的连接需要等待。KeepAliv原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。e可以让多个HTTP请求共享一个TCP连【本文首发于唐霜的博客】【未经授权禁止转载】接。
【本文受版权保护】【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。具体的解释,可以阅读【本文首发于唐霜的博客】这篇文章【原创不易,请尊重版权】。简单总结一下,就是当一个TCP连接建立原创内容,盗版必究。转载请注明出处:www.tangshuang.net之后,不要马上释放掉,这样就可以反复利用【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。这个TCP连接来实现HTTP请求。这样就【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。可以节省建立和断开TCP的消耗,提高了h著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.netttp的速度。
【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】【原创不易,请尊重版权】原创内容,盗版必究。而HTTP的【本文受版权保护】Connection: Keep-Alive这个请求头的作用,是通过代码的形式,在H本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.netTTP请求头中告知浏览器,当前HTTP请【本文受版权保护】本文版权归作者所有,未经授权不得转载。求建立的TCP连接要保持KeepAliv【原创不易,请尊重版权】【原创不易,请尊重版权】e状态,这样HTTP就可以利用这一个TC转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。P连接多次传输数据。HTTP1.1版本之原创内容,盗版必究。原创内容,盗版必究。后就默认开启了这个选项,所以不需要在你的未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net代码中特意强调。
Connection: Keep-Alive并不能保证你的TCP连接是一直开启的,T原创内容,盗版必究。未经授权,禁止复制转载。CP连接是否KeepAlive决定于很多【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。因素。因此,在http中使用Connection: Keep-Alive其实没有决定性的意义。本文作者:唐霜,转载请注明出处。
一个http请求背后的过程【版权所有,侵权必究】
本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。【作者:唐霜】http请求的数据将经过上述网络层完成整【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】个数据生命周期。当用户访问一个url时:
【版权所有】唐霜 www.tangshuang.net【转载请注明来源】【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】【原创不易,请尊重版权】原创内容,盗版必究。应用层:由浏览器根据http协议构建一个【原创内容,转载请注明出处】【本文首发于唐霜的博客】基于该url请求的GET请求。
【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】传输层:该请求根据TCP协议将被发送到服本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net务器的80端口(url中没有端口的情况下著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】),解析域名所对应的IP地址。
【未经授权禁止转载】【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】【原创内容,转载请注明出处】网络层:发送到服务器,等待服务器响应。【原创内容,转载请注明出处】
本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net数据链路层和物理层:发送过程中依据网速快【本文首发于唐霜的博客】【原创内容,转载请注明出处】慢进行等待。网络层:本机通过IP协议接收转载请注明出处:www.tangshuang.net【未经授权禁止转载】到服务器返回的响应。
本文作者:唐霜,转载请注明出处。【转载请注明来源】【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。传输层:浏览器通过TCP协议获取到响应的【版权所有,侵权必究】【未经授权禁止转载】信息。
本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。应用层:通过http协议解析数据得到一个【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。响应内容。
【作者:唐霜】本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】
http状态码【原创内容,转载请注明出处】
【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。【本文受版权保护】本文版权归作者所有,未经授权不得转载。在上面的过程中,最后一步浏览器“得到响应本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】内容”中,包含了一个http状态码。状态【访问 www.tangshuang.net 获取更多精彩内容】【版权所有】唐霜 www.tangshuang.net码是http协议中对当前请求状态的规定。本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】它由数字表示:
著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】1xx:请求处理过程中,还没有处理结束,【原创不易,请尊重版权】【本文受版权保护】需要等待。2xx:请求处理成功。3xx:【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net请求被重定向到另外一个地址进行处理。4x【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】x:请求处理失败。5xx:服务器内部错误转载请注明出处:www.tangshuang.net原创内容,盗版必究。(程序报错)。
本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。有一些状态码需要稍微留意一下,因为经常用著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net到:200,201(创建成功),202(转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net异步处理时,表示当前还在计算,你需要再次【版权所有,侵权必究】【转载请注明来源】请求以获得结果),301(永久重定向),【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net302(临时性重定向),304(内容没变【版权所有,侵权必究】转载请注明出处:www.tangshuang.net,返回的消息体中不包含内容,请使用客户端著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。本地数据),401(授权、认证失败)、4【作者:唐霜】【本文受版权保护】03(禁止访问)、404(该资源不存在)【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net、406(无法满足请求头的要求,比如客户【原创不易,请尊重版权】【本文受版权保护】端请求json数据,但是服务端没有),5【未经授权禁止转载】【转载请注明来源】00(服务器错误,一般是程序代码出错)、【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。502(网关错误)、503(服务器维修或【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net过载)、504(代理超时)。
【作者:唐霜】【未经授权禁止转载】【本文受版权保护】转载请注明出处:www.tangshuang.net缓存相关原创内容,盗版必究。
【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】http协议里面有关缓存的,接触最多了是本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。304和cache-control。它们【本文受版权保护】【版权所有】唐霜 www.tangshuang.net都要涉及两端。
未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】【原创不易,请尊重版权】304&Last-Modifie【未经授权禁止转载】【未经授权禁止转载】d
【版权所有,侵权必究】【转载请注明来源】【原创不易,请尊重版权】在浏览器发起请求时,如果在请求头中发送一【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。个If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT,服务端就可以接收到这个请求头,并且根据本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】这个请求头信息与服务器上的资源修改时间进原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net行对比,如果发现在这个时间之后,资源被修【版权所有,侵权必究】【本文受版权保护】改过了,就返回200状态码,并且把资源信【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。息也返回,但是如果发现资源没有被修改过,原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。则返回304状态码,并且不返回资源的内容【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】,浏览器在接收到304状态码之后,就会直【作者:唐霜】著作权归作者所有,禁止商业用途转载。接使用本地的缓存,传输的内容小,而且使用转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net本地缓存,所以打开速度就很快。
但是浏览器的请求头中的If-Modifi【作者:唐霜】【本文受版权保护】ed-Since值是从哪里来的呢?是服务【原创内容,转载请注明出处】【本文首发于唐霜的博客】器在之前的请求中返回了一个Last-Modified响应头。这时返回的状态码可以是200,也【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】可以是304,但是最主要的是,这个响应头原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net让浏览器知道了这个资源上次更新时间,并且【原创内容,转载请注明出处】未经授权,禁止复制转载。浏览器会把它缓存到本地,并且把Last-【本文首发于唐霜的博客】【原创不易,请尊重版权】Modified的值赋值给本地的If-M【版权所有】唐霜 www.tangshuang.net【本文受版权保护】odified-Since,下次再请求这【原创内容,转载请注明出处】【转载请注明来源】个资源时,就会在请求头中加入If-Mod本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】ified-Since。
Last-Modified只能用于GET【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。或HEADER请求类型中,POST等其他【原创内容,转载请注明出处】原创内容,盗版必究。请求用不了。
【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。【原创不易,请尊重版权】【原创内容,转载请注明出处】【本文首发于唐霜的博客】304&Etag【本文首发于唐霜的博客】
本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】【本文受版权保护】【原创不易,请尊重版权】last-modified存在一些问题:
原创内容,盗版必究。【版权所有,侵权必究】【版权所有,侵权必究】- 一定情况下,资源的last-modifi【未经授权禁止转载】未经授权,禁止复制转载。ed变动并不代表它的实际内容的改动 本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。转载请注明出处:www.tangshuang.net
- last-modified是时间作为度量本文版权归作者所有,未经授权不得转载。【本文受版权保护】的,时间粒度仅为1s,小于1s的改动无法【本文受版权保护】转载请注明出处:www.tangshuang.net标识 【转载请注明来源】【原创内容,转载请注明出处】未经授权,禁止复制转载。【转载请注明来源】
- last-modified理论上讲,应该本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。是读取文件的最后更新时间,但是实际上,有【转载请注明来源】【本文受版权保护】两种情况,一种是读取到到这个时间可能存在【未经授权禁止转载】本文作者:唐霜,转载请注明出处。问题,还有一种是反规则,开发者自己伪造这未经授权,禁止复制转载。未经授权,禁止复制转载。个last-modified 转载请注明出处:www.tangshuang.net【版权所有,侵权必究】【本文首发于唐霜的博客】未经授权,禁止复制转载。原创内容,盗版必究。
- 某些情况下,资源的last-modifi本文作者:唐霜,转载请注明出处。【未经授权禁止转载】ed会定期刷新,但实际上它们并没有改变 未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。【作者:唐霜】
Etag返回的是一个标识码,而不是时间。【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net服务器端通过对资源进行计算,得到一个唯一【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net对标识符,例如hash, md5等,用以原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net对资源对内容进行标记。两个相同etag的原创内容,盗版必究。未经授权,禁止复制转载。资源表明它们的资源内容是相同的。这种情况著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】下,一个资源没有必要再次请求。
【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。转载请注明出处:www.tangshuang.net和last-modified有些相似,浏【未经授权禁止转载】原创内容,盗版必究。览器请求服务器时,如果采用etag机制,【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。那么服务器会返回当前资源但etag,浏览【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。器将该资源缓存起来,并且把这个etag作原创内容,盗版必究。【本文首发于唐霜的博客】为下一次请求的If-None-Match字段通过headers进行发送,服务器端【原创内容,转载请注明出处】【原创不易,请尊重版权】得到这个If-None-Match之后,【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。可以和当前的资源hash进行对比,如果相本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】同,可以返回304,这样浏览器端就会使用【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。缓存资源。
Last-Modified和Etag都是转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net浏览器和服务器交互的请求信息,浏览器并不转载请注明出处:www.tangshuang.net原创内容,盗版必究。依靠它们来决定是否使用缓存,而是依靠30【原创不易,请尊重版权】【关注微信公众号:wwwtangshuangnet】4,只有当服务器返回304时,浏览器才决【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】定使用缓存。但是还有一个问题,有了eta【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。g,last-modified还有必要吗【作者:唐霜】【原创不易,请尊重版权】?
转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。【作者:唐霜】转载请注明出处:www.tangshuang.net【转载请注明来源】一般而言,etag和last-modif未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】ied会同时使用,两者相辅相成。虽然et【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】ag是针对资源内容的,同一个资源的内容发未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】生来变化,etag就发生来变化,看上去我【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net们只需要etag就够了,不需要last-【原创内容,转载请注明出处】【作者:唐霜】modified。但是有这样一种情况,服【本文受版权保护】【未经授权禁止转载】务端架设来均衡负载类似的分布式部署方案,著作权归作者所有,禁止商业用途转载。【作者:唐霜】同一个资源在不同的设备上存在copy,请【作者:唐霜】【转载请注明来源】求达到哪一台设备是随机的。我们很难保证所未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。有设备上的同一资源的last-modif著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.netied和etag是相同的,etag可能存【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】在不同,因为服务器设备不同,hash算法【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net如果加入来服务器信息,那么etag就会不【作者:唐霜】本文版权归作者所有,未经授权不得转载。同。但是,我们知道,资源在不同设备之间是【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。同步的,因此,last-modified本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】在这种case下更有利于缓存。
【原创不易,请尊重版权】原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】原创内容,盗版必究。Cache-Control&Ex本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。pires
本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】【原创不易,请尊重版权】这两个都是响应头,浏览器第一次访问资源的【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net时候,如果服务器的响应头中有这两个其中之原创内容,盗版必究。原创内容,盗版必究。一,就会把它们记录在本地,下次再访问这个【本文首发于唐霜的博客】【访问 www.tangshuang.net 获取更多精彩内容】资源的时候,会先在本地进行时间上的对比,未经授权,禁止复制转载。【原创不易,请尊重版权】如果发现本地时间在响应头给出的过期时间之【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】前,就不再发出真实的http请求,直接使原创内容,盗版必究。【原创不易,请尊重版权】用本地的缓存,在chrome的conso【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。le中会看到200和from cache【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。的字样。
著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】原创内容,盗版必究。Expires的格式是未经授权,禁止复制转载。Expires: Thu, 10 Dec 2015 23:21:37 GMT,Cache-Control的格式是著作权归作者所有,禁止商业用途转载。Cache-Control: max-age=3600,所以两个不一样,前者是时间戳(过期时间【本文首发于唐霜的博客】【转载请注明来源】点),后者是时间长度(秒)。更大的不同是未经授权,禁止复制转载。未经授权,禁止复制转载。,Cache-Control仅支持HTT本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。P1.1以上的版本,所以一般情况下,会具转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net体指明响应是遵循HTTP1.1版本时才单著作权归作者所有,禁止商业用途转载。【作者:唐霜】独使用Cache-Control,否则会转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。考虑把它们俩混用。
Expires: Thu, 10 Dec 2015 23:21:37 GMTCache-Control: max-age=3600
但是因为Expires是时间点的形式,它本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net可能和本地时间存在时间差,所以并不可靠,本文作者:唐霜,转载请注明出处。【未经授权禁止转载】而使用max-age则是规定一个时长,跟【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。时间差没有关系,更靠谱一些。所以能用Ca著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】che-Control的情况下尽量用ma【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.netx-age。
转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。对比和混用本文作者:唐霜,转载请注明出处。
【本文受版权保护】【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】未经授权,禁止复制转载。上面两种缓存机制都经常被用到,但是他们之本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。间有区别。Cache-Control是强【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。制缓存,也就是说缓存之后不会发出真实的网本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。络请求,速度上更快,而Last-Modi本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。fied是协商缓存,是会发出真实的网络请【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】求的,只不过在交互后,如果得到304的话【原创内容,转载请注明出处】【版权所有,侵权必究】,才使用缓存。现代机器性能都很好,一般这本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。两种缓存在时间上不会给人造成太大的差距感转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】。
著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net但是他们都有不足,Cache-Contr本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。ol是时间限制,只要过了这个限制,不管资本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】源是不是真的更新了,都会完全重新再请求一原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】遍资源,这次会真的从服务端获取资源内容,【转载请注明来源】原创内容,盗版必究。速度就会慢一些,虽然再下一次就会使用新的【版权所有,侵权必究】【本文首发于唐霜的博客】缓存。而Last-Modified机制会转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】每次都和服务器交互,如果遇到网络问题,就【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】会导致迟迟得不到304。
【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。比较好的办法是将这两种混用,第一次请求发【版权所有,侵权必究】转载请注明出处:www.tangshuang.net生的时候,既按照Cache-Contro本文版权归作者所有,未经授权不得转载。【本文受版权保护】l的机制强制缓存,也在本地存上一个If-【版权所有,侵权必究】转载请注明出处:www.tangshuang.netModified-Since。当Cach原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。e-Control机制到期之后,使用If【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。-Modified-Since去请求,得【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。到一个304,使用协商缓存,并同时更新C【转载请注明来源】【版权所有】唐霜 www.tangshuang.netache-Control的缓存时长。具体【版权所有】唐霜 www.tangshuang.net【作者:唐霜】代码可以参考这篇文章著作权归作者所有,禁止商业用途转载。。本文作者:唐霜,转载请注明出处。
【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】Cookie和Session【原创不易,请尊重版权】
转载请注明出处:www.tangshuang.net【未经授权禁止转载】转载请注明出处:www.tangshuang.net【版权所有,侵权必究】Cookie是由浏览器保存起来的小段文件本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。,Session和Cookie类似,但是【本文首发于唐霜的博客】【版权所有,侵权必究】是保存在服务端。
【关注微信公众号:wwwtangshuangnet】【本文受版权保护】原创内容,盗版必究。【转载请注明来源】对于Cookie而言,当用户访问一个网站【作者:唐霜】【版权所有】唐霜 www.tangshuang.net时,服务器的响应头中如果存在一个Set-【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.netCookie,浏览器就会根据它的值创建c本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。ookie。而在浏览器第二次访问这个网站【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。时,就会在请求头中携带一个Cookie字转载请注明出处:www.tangshuang.net原创内容,盗版必究。段,并且把对应的cookie内容发送过去【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net。
原创内容,盗版必究。转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】由于cookie是保存在本地电脑上的文件【本文首发于唐霜的博客】著作权归作者所有,禁止商业用途转载。,所以用户自己可以通过找到浏览器的coo【关注微信公众号:wwwtangshuangnet】【本文受版权保护】kie保存目录,打开cookie查看co本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】okie的内容。其他软件也可以找到这些c转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。ookie文件,所以cookie常常被认【本文受版权保护】本文版权归作者所有,未经授权不得转载。为是不安全的。
本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】【本文受版权保护】而session是保存在服务端的。当用户【关注微信公众号:wwwtangshuangnet】【原创内容,转载请注明出处】访问一个网站时,由服务端的程序生成一个s本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。ession,这个session文件被放转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。在服务端对应的目录下,网站的管理员虽然可【版权所有】唐霜 www.tangshuang.net【本文受版权保护】以看到,但一般不会主动去使用,都是让网站【版权所有,侵权必究】未经授权,禁止复制转载。的程序去读取并使用。一个用户访问网站,他【本文受版权保护】【原创内容,转载请注明出处】就会产生一个session,但是怎么确定【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】这个session是这个用户的呢?有两种未经授权,禁止复制转载。【版权所有,侵权必究】形式,一种是把这个session对应的一未经授权,禁止复制转载。【本文首发于唐霜的博客】个唯一标识通过cookie的形式保存在浏【原创内容,转载请注明出处】【原创内容,转载请注明出处】览器端,浏览器下次访问的时候,会把这个c【版权所有,侵权必究】原创内容,盗版必究。ookie也发过去,服务端会自动去读取这著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】个标识对应的session;另一种是通过【转载请注明来源】转载请注明出处:www.tangshuang.neturl传递这个唯一标识,这样就不用依靠c【原创不易,请尊重版权】原创内容,盗版必究。ookie。
【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。【转载请注明来源】session不是http协议的内容,所【原创不易,请尊重版权】【转载请注明来源】以无法通过浏览器直接使用session,【原创内容,转载请注明出处】未经授权,禁止复制转载。因此才有了上面那两种形式。Javascr【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】ipt中也可以使用document.co【转载请注明来源】著作权归作者所有,禁止商业用途转载。okie实现cookie功能,但是这和h【作者:唐霜】本文作者:唐霜,转载请注明出处。ttp协议层面的cookie不同,而且它本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。们产生的过程也不同,所以不能通过docu【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】ment.cookie获取到由http请本文作者:唐霜,转载请注明出处。【作者:唐霜】求产生的cookie。
本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net了解更加细节的cookie参考转载请注明出处:www.tangshuang.net这篇文章【本文受版权保护】
未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】https【版权所有,侵权必究】
转载请注明出处:www.tangshuang.net【本文受版权保护】本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。前面都是再讲http协议,而https是本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。什么呢?https其实不是协议,而是应用转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】,http协议传输数据会存在一些问题:
未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】【作者:唐霜】【本文受版权保护】- 通信使用明文, 内容可能会被窃听【版权所有,侵权必究】 【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。
- 不验证通信方的身份, 因此有可能遭遇伪装 转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。【未经授权禁止转载】【原创不易,请尊重版权】
- 无法证明报文的完整性, 所有有可能已遭篡【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。改 【转载请注明来源】著作权归作者所有,禁止商业用途转载。【转载请注明来源】【关注微信公众号:wwwtangshuangnet】
而为了解决这种安全性问题,在http和T【原创不易,请尊重版权】【原创不易,请尊重版权】CP之间增加一道SSL(Secure S【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.netocket Layer,安全套接层)协议【版权所有】唐霜 www.tangshuang.net【转载请注明来源】的数据处理。阅读前面你已经知道,http本文作者:唐霜,转载请注明出处。【版权所有,侵权必究】是属于应用层的,数据处理之后会丢给传输层未经授权,禁止复制转载。原创内容,盗版必究。的TCP进行处理。但是为了安全,在这中间【未经授权禁止转载】【原创不易,请尊重版权】增加一道SSL协议的处理,也就对数据进行本文作者:唐霜,转载请注明出处。【作者:唐霜】了加密。当数据回来时,TCP也会将数据丢原创内容,盗版必究。原创内容,盗版必究。给SSL协议处理,处理完再交回给http【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。协议处理。因此,我们在访问一个http网【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。站和一个https网站时,虽然使用了相同【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。的url但是其实可以采用不同的应用程序来【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】进行处理,因为http和https是两个【原创内容,转载请注明出处】【关注微信公众号:wwwtangshuangnet】应用层的应用,不得不使用不同的端口来收发【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。数据。
【本文首发于唐霜的博客】【关注微信公众号:wwwtangshuangnet】

【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。
TLS(Transport Layer著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。 Security,传输层安全协议)和S【原创内容,转载请注明出处】未经授权,禁止复制转载。SL是同一类协议,也是用于加密的,即可以【转载请注明来源】【原创内容,转载请注明出处】用TLS代替SSL。
【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net
https请求握手的大致流程如下:【本文受版权保护】
- 浏览器将自己支持的一套加密规则发送给服务原创内容,盗版必究。【原创不易,请尊重版权】器(网站),服务器获得浏览器公钥【关注微信公众号:wwwtangshuangnet】 未经授权,禁止复制转载。【原创内容,转载请注明出处】【版权所有,侵权必究】【转载请注明来源】
- 服务器从中选出一组加密算法与HASH算法【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。,并将自己的身份信息以证书的形式发回给浏未经授权,禁止复制转载。【未经授权禁止转载】览器。证书里面包含了网站地址,加密公钥,【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.net以及证书的颁发机构等信息,浏览器获得服务器公钥本文版权归作者所有,未经授权不得转载。 原创内容,盗版必究。【本文首发于唐霜的博客】【版权所有,侵权必究】【未经授权禁止转载】转载请注明出处:www.tangshuang.net
- 获得网站证书之后,原创内容,盗版必究。浏览器验证->随机密码,并用服务器【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。的公钥加密->生成HASH握手,用转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】密码加密:a) 验证证书的合法性(颁发证书的机构未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。是否合法,证书中包含的网站地址是否与正在【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。访问的地址一致等),如果证书受信任,则浏未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。览器栏里面会显示一个小锁头,否则会给出证著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】书不受信的提示。b) 如果证书受信任,或转载请注明出处:www.tangshuang.net【转载请注明来源】者是用户接受了不受信的证书,浏览器会生成【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】一串随机数的密码(接下来通信的密钥),并转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】用证书中提供的公钥加密(共享密钥加密)。【本文受版权保护】著作权归作者所有,禁止商业用途转载。c) 使用约定好的HASH计算握手消息,【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】并使用生成的随机数对消息进行加密,最后将【作者:唐霜】未经授权,禁止复制转载。之前生成的所有信息发送给网站。 【本文首发于唐霜的博客】【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。
- 服务器接收浏览器发来的数据之后,本文版权归作者所有,未经授权不得转载。服务器用自己的密钥解出随机密码->著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】用密码解密握手消息(共享密钥通信)-&g本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.nett;验证HASH与浏览器是否一致(验证浏本文作者:唐霜,转载请注明出处。【本文受版权保护】览器):a) 使用自己的私钥将信息解密取出密码【原创内容,转载请注明出处】【本文首发于唐霜的博客】,使用密码解密浏览器发来的握手消息,并验本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。证HASH是否与浏览器发来的一致。b) 【原创内容,转载请注明出处】【转载请注明来源】使用密码加密一段握手消息,发送给浏览器。 【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。未经授权,禁止复制转载。【原创不易,请尊重版权】
- 浏览器解密并计算握手消息的HASH,如果【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】与服务端发来的HASH一致,此时握手过程结束【本文首发于唐霜的博客】,之后所有的通信数据将由之前浏览器生成的随机密码【本文受版权保护】并利用本文作者:唐霜,转载请注明出处。对称加密算法本文作者:唐霜,转载请注明出处。进行加密。【版权所有】唐霜 www.tangshuang.net 【未经授权禁止转载】【版权所有,侵权必究】【本文受版权保护】【本文首发于唐霜的博客】
使用https加密http请求数据,会消著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。耗cpu和系统资源,因此打开速度上会慢一【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。些。
转载请注明出处:www.tangshuang.net原创内容,盗版必究。未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net关于https的安全性,【原创内容,转载请注明出处】实际上,https无法解决的是两端做坏,【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】两端是客户端和服务端,也就是你的浏览器、【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。网页和服务器上,https解决的是传输过原创内容,盗版必究。原创内容,盗版必究。程中的安全性问题。数据消息在浏览器和服务原创内容,盗版必究。原创内容,盗版必究。器之间传输,中间需要经过非常复杂的网络节转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。点,而这些节点并不一定是好人,例如一些运本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】营商在网页中插入广告,就是因为直接对传输转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】的内容进行了修改。但是如果使用https【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。,理论上讲,经过这些节点的内容为加密数据【版权所有】唐霜 www.tangshuang.net【本文受版权保护】,只有浏览器和服务器双方有解密的钥匙,因原创内容,盗版必究。【版权所有,侵权必究】此,中间节点很难对内容进行篡改。当然,这著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】只是理论上。
原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net
http2.0将基于https,也就是【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net说,只有开启https的情况下才能使用h【版权所有】唐霜 www.tangshuang.net本文作者:唐霜,转载请注明出处。ttp2.0的特性。
如果你觉得本书对你有帮助,通过下方的二维码向我打赏吧,帮助我写出更多有用的内容。

2017-02-13 | http