http协议以及与https的区别
http概念:超文本传输协议,是互联网上应用最为普遍的一种网络协议.算法
工做原理:
首先客户机与服务器须要创建链接,只要单击某个超级连接,http的工做就开始了
创建链接后,客户机发送一个请求给服务器.请求方式的格式:统一资源定位符,协议版本号,后面是MIME的信息
服务器接收到请求后,给与响应的响应信息,其格式为一个状态行,包括信息的版本号,一个呈贡 或者错误代码.
客户端接收到服务器所返回的信息经过浏览器显示在用户的显示屏上,而后客户机和服务器断开链接
注意:若是在以上过程当中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏显示
复制代码
http特色
简单快速
灵活
http0.9和1.0使用非持续链接
无状态
支持B/S和C/S模式
http请求消息
一个请求消息包括:请求行 请求头 请求主体浏览器
http响应消息
一个响应消息包括: 状态行 响应头 响应主体缓存
http和https
Http:超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为普遍的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可使浏览器更加高效。Http协议是以明文方式发送信息的,若是黑客截取了Web浏览器和服务器之间的传输报文,就能够直接得到其中的信息。安全
Https:是以安全为目标的Http通道,是Http的安全版。Https的安全基础是SSL。SSL协议位于TCP/IP协议与各类应用层协议之间,为数据通信提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol),它创建在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),它创建在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交换加密密钥等。bash
Http与Https的区别
一、https协议须要到CA申请证书,通常免费证书较少,于是须要必定费用。(原来网易官网是http,而网易邮箱是https。)服务器
二、http是超文本传输协议,信息是明文传输,https则是具备安全性的ssl加密传输协议。网络
三、http和https使用的是彻底不一样的链接方式,用的端口也不同,前者是80,后者是443。负载均衡
四、http的链接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无链接的意思是指通讯双方都不长久的维持对方的任何信息。)post
TCP/IP协议(三次握手及缘由/四次挥手)
(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义以下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置链接。
(E)SYN:发起一个新链接。
(F)FIN:释放一个链接。
复制代码
TCP协议是网络协议中最基本的协议之一,TCP是一种面向链接的.可靠的,基于字节流的传输层通讯协议.加密
深刻理解TCP协议
因为TCP是全双工的,所以在每个方向都必须单独关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的链接。
收到一个FIN只意味着这个方向上没有数据流动,一个TCP链接在接收到一个FIN后仍能发送数据。
首先进行关闭的一方将执行主动关闭,而另外一方执行被动关闭。 TCP协议的链接是全双工链接 ,一个TCP链接存在双向的读写通道。简单来讲,是“先关读,再关写” ,总共须要4个阶段。以客户机发起关闭链接为例:
1.服务器读通道关闭;
2.客户端写通道关闭;
3.客户端读通道关闭;
4.服务器写通道关闭。
关闭行为是在发起方数据发送完毕以后,给对方发出一个FIN(finish)数据段,直到接收到对方发送的FIN,且对方收到了接收确认的ACK以后,双方的数据通讯彻底结束,过程当中每次都须要返回确认数据段ACK。
三次握手
第一次握手:创建链接时,客户端发送syn(同步序列编号)包到服务器,
第二次握手:服务器收到syn(同步序列编号)必须确认客户的syn,同时服务器本身也发送一个syn(syn+ack).
第三次握手,客户端收到服务器的syn+ack包,向服务器发送确认包,确认完毕以后TCP链接成功
四次挥手(别名:链接终止协议)
先由客户端向服务器端发送一个FIN,请求关闭数据传输。
当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ
而后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。
当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ
为何是四次挥手?
确保数据可以完整传输。
当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。
但未必被动方全部的数据都完整的发送给了主动方,因此被动方不会立刻关闭SOCKET,它可能还须要发送一些数据给主动方后,
再发送FIN报文给主动方,告诉主动方赞成关闭链接,因此这里的ACK报文和FIN报文多数状况下都是分开发送的。
UDP协议
概念:无链接协议,也称透明协议,也位于传输层。
TCP和UDP的区别
1) TCP提供面向链接的传输,通讯前要先创建链接(三次握手机制); UDP提供无链接的传输,通讯前不须要创建链接。
2) TCP提供可靠的传输(有序,无差错,不丢失,不重复); UDP提供不可靠的传输。
3) TCP面向字节流的传输,所以它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。
4) TCP提供拥塞控制和流量控制机制; UDP不提供拥塞控制和流量控制机制。
UDP协议主要特色:
1.UDP是无链接的,发送数据以前不须要创建链接(结束以后天然也不用释放链接),减小了开销和发送数据的时延
2.UDP使用尽最大努力交付,即不保证可靠交付,不须要维持复杂的链接状态表
3.UDP是面向报文的,对应用层交下来的报文,添加首部后直接向下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来 UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。
UDP协议优点:
1.UDP没有拥塞控制,网络出现的拥塞不会使源主机的发送速率下降,在容许网络发生拥塞时丢失一些数据而且维持较低的时延时,UDP符合这种要求
2.UDP支持一对一,一对多,多对一和多对多的交互通讯
3.UDP的首部开销小,只有8个字节,比TCP的20个字节首部要短
UDP协议应用场景:
要发送的内容少,一个数据包就能发送所有内容。
即时通讯(聊天对数据准确性和丢包要求比较低,但速度必须快),在线视频( 速度必定要快,保证视频连续,可是偶尔花了一个图像帧,人们仍是能接受的),网络语音电话(VoIP 语音数据包通常比较小,须要高速发送,偶尔断音或串音也没有问题)等等。
get和post的区别
get是从服务器上请求数据,post是发送数据到服务器.
事实上,get方法是把数据参数队列放到一个url里面,值和表单是一一对应的,在队列里面,值和表单用一个&符号分开,空格用+号替换,特殊符号用十六进制转换
队列的参数就能看到,能够被记录或者更改
get方式还限制字符的大小(256k)
post方法能够没有时间限制的传递数据到服务器,用户在浏览器端是看不到这一过程的,因此post方式比较适合发送一个保密或者是比较大的数据到服务器
get 的方式的安全性较post方式较差一些,包含机密信息的话建议用post方式
在作数据查询的时候,建议使用get方式,可是在作数据的增删改的时候建议使用post方式
常见的状态码
1××:保留
2××:表示请求成功地接收
3××:为完成请求客户需进一步细化请求
4××:客户错误
5××:服务器错误
复制代码
200 请求被正常处理
204 请求被受理但没有资源能够返回
206 客户端只是请求资源的一部分,服务器只对请求的资源执行GET方法,相应报文中 经过Content-Range 指定范围的资源
301 永久性重定向
302 临时重定向
303 与302状态码有类似的功能,只是它希- 望客户端应使用GET方法定向获取请求的资- 源
304 发送附带条件的请求时,条件不知足时- 返回,与重定向无关
307 临时重定向,与302相似,只是强制要求使用post方法
400 请求报告语法有误,服务器没法识别
401 请求须要认证
403 请求的对应的资源禁止被访问
404 服务器没法找到对应的资源
410(已删除)若是请求的资源已永久删除,服务器就会返回此响应。
500 服务器内部错误
503 服务器正忙
从输入网址到得到页面的过程
在浏览器中输入url(解析url地址)
在应用层DNS解析域名
应用层客户端发送http请求
传输层TCP传输报文(3次握手)
网络层IP协议查询MAC地址
数据到达数据链路层
服务器接收数据
服务器响应数据
服务器返回响应的文件
计算机分层体系结构
OSI七层参考模型
(1)物理层(Physical,PH)传递信息须要利用一些物理传输媒体,如双绞线、同轴电缆、光纤等。物理层的任务就是为上层提供一个物理的链接,以及该物理链接表现出来的机械、电气、功能和过程特性,实现透明的比特流传输。在这一层,数据尚未组织,仅做为原始的比特流提交给上层——数据链路层。
(2)数据链路层(Data-link,D)数据链路层负责在2个相邻的结点之间的链路上实现无差错的数据帧传输。每一帧包括必定的数据和必要的控制信息,在接收方接收到数据出错时要通知发送方重发,直到这一帧无差错地到达接收结点,数据链路层就是把一条有可能出错的实际链路变成让网络层看起来像不会出错的数据链路。实现的主要功能有:帧的同步、差错控制、流量控制、寻址、帧内定界、透明比特组合传输等。
(3)网络层(Network,N)网络中通讯的2个计算机之间可能要通过许多结点和链路,还可能通过几个通讯子网。网络层数据传输的单位是分组(Packet)。网络层的主要任务是为要传输的分组选择一条合适的路径,使发送分组可以正确无误地按照给定的目的地址找到目的主机,交付给目的主机的传输层。
(4)传输层(Transport,T)传输层的主要任务是经过通讯子网的特性,最佳地利用网络资源,并以可靠与经济的方式为2个端系统的会话层之间创建一条链接通道,以透明地传输报文。传输层向上一层提供一个可靠的端到端的服务,使会话层不知道传输层如下的数据通讯的细节。传输层只存在端系统中,传输层以上各层就再也不考虑信息传输的问题了。
(5)会话层(Session,S)在会话层以及以上各层中,数据的传输都以报文为单位,会话层不参与具体的传输,它提供包括访问验证和会话管理在内的创建以及维护应用之间的通讯机制。如服务器验证用户登陆即是由会话层完成的。
(6)表示层(Presentation,P)这一层主要解决用户信息的语法表示问题。它将要交换的数据从适合某一用户的抽象语法,转换为适合OSI内部表示使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩、加密和解密等工做都由表示层负责。
(7)应用层(Application,A)这是OSI参考模型的最高层。应用层肯定进程之间通讯的性质以知足用户的需求,以及提供网络与用户软件之间的接口服务。
TCP/IP四层体系结构
五层体系结构(最经常使用)
DNS的工做原理
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,若是有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第三步:若是本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,而后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,而后接受请求的服务器查询本身的缓存,若是没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
CDN托管
概念:CDN的全称是Content Delivery NetWork,即内容分发网络
复制代码
CDN是构建在网络之上的内容分发网络
CDN使用户就近获取所需内容,下降网络拥塞,提升用户访问响应速度和命中率
CDN依靠部署在各地的边缘服务器,包括中心平台的负载均衡 内容分发 调度等功能模块