Http和Https

HTTP长连接和短连接

HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。

但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive      //服务器和客户端都要设置

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

长连接:建立连接——数据传输...(保持连接)...数据传输——关闭连接

TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作。

短连接:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接

什么时候用长连接和短连接?

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

HTTP长短连接:Connection:keep-alive

这种方式由于连接一直存在,所以被称为长连接。经常用于P2P通信

从输入网址到获得页面的过程

Step1:根据输入的网址查询DNS(Domain Name System),获取域名对应的IP地址;

 查询DNS的先后顺序为:浏览器搜索自身的DNS缓存,搜索操作系统的DNS缓存,读取本地的HOST文件,发起一个DNS的系统调用(带宽运营服务器查看本身缓存,运营商服务器发起一个迭代DNS解析请求)。

Step2:浏览器获得域名对应的IP地址后,向目标服务器发起三次握手连接请求;

Step3:TCP/IP连接建立起来之后,浏览器就向服务器发送Http请求;

Step4:服务器接收到请求之后,根据路径参数,经过后端的一些处理生成HTML页面代码返回给浏览器;

Step5:浏览器拿到完整的HTML页面代码开始解析和渲染,如果遇到引用的外部JS,CSS,图片等静态资源,它们同样也是一个一个的Http请求,都需要经过上面的步骤;

Step6:浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户。

基本的Http流程

Http是Hyper Text Transfer Protocol(超文本传输协议)的缩写,主要负责服务器与浏览器之间的通信。Http把客户端浏览器的请求发送到服务器,并把响应的网页内容由服务器返回到客户端浏览器。

Http协议的特点:

① Http是一种无状态协议;

② Http协议在应用层,在服务器每个Http都需要启动独立的线程去处理;

Http会话有四个过程:

① 客户端与服务器建立tcp连接;

② 客户端向服务器发出请求文档;

③ 服务器向客户端发出响应文档;

④ 释放tcp连接。

Socket编程

Socket在计算机中提供了一种通信接口,可以通过这个端口与任何一个具有socket接口的计算机通信,应用程序在网络上传输,接收的信息都通过这个socket接口来实现。

Socket通信原理如下:

服务器端实现监听连接→客户端实现发送连接请求→连接建立→发送和接收数据进行通信。

Http与Https的区别

  • http是Http协议运行在TCP之上,所有传输的内容都是明文,客户端和服务端都无法验证对方的身份;
  • https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密处理,加密采用对称加密,但对称加密的秘钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份;
  • https协议需要到ca申请证书,一般免费证书很少,需要交费;
  • http是超文本传输协议,信息明文传输,https则是具有安全性的ssl加密传输协议;
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;
  • http的连接很简单,是无状态的;
  • https协议是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议要比http协议更加安全。

参考HTTP与HTTPS的区别,详细介绍

HTTP状态码

5种可能取值:

  • 1xx:指示信息——表示请求已接受,继续处理
  • 2xx:成功——表示请求已被成功接收、理解、处理
  • 3xx:重定向——要完成请求必须进行更进一步的操作
  • 4xx:客户端错误——请求有语法错误或请求无法实现
  • 5xx:服务端错误——服务器未能实现合法的请求

滑动窗口

TCP引入了一些技术和设计来做网络流控,Sliding Window是其中一个技术。 前面我们说过,TCP头里有一个字段叫Window,又叫Advertised-Window,这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。

拥塞控制主要是四个算法:1)慢启动,2)拥塞避免,3)拥塞发生,4)快速恢复。

参考TCP 的那些事儿

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值