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记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
Http与Https的区别
1、https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。(原来网易官网是http,而网易邮箱是https。)
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
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地址
- 数据到达数据链路层
- 服务器接收数据
- 服务器响应数据
- 服务器返回响应的文件
- 连接建立完成关闭TCP连接
计算机分层体系结构

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依靠部署在各地的边缘服务器,包括中心平台的负载均衡 内容分发 调度等功能模块