网络编程篇

191 阅读8分钟

HTTP

什么是Http协议?

Http协议是对客户端和服务器端之间数据之间实现可靠性的传输文字、图片、音频、视频等超文本数据的规范,格式简称为“超文本传输协议” Http协议属于应用层,及用户访问的第一层就是http

image.png

Socket和http的区别和应用场景

Socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;Socket适用场景:网络游戏,银行持续交互,直播,在线视屏等。 http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断开等待下次连接 http适用场景:公司OA服务,互联网服务,电商,办公,网站等等等等

什么是http的请求体?

HTTP请求体是我们请求数据时先发送给服务器的数据,毕竟我向服务器那数据,先要表明我要什么吧 HTTP请求体由:请求行 、请求头、请求数据组成的, 注意:GET请求是没有请求体的

1. POST请求

image.png

2. GIT请求是没有请求体的

image.png

http的响应报文有哪些?

  • http的响应报是服务器返回给我们的数据,必须先有请求体再有响应报文
  • 响应报文包含三部分 状态行、响应首部字段、响应内容实体实现

image.png

http和https的区别?

  • 其实HTTPS就是从HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护
  • 区别:
    1. http需要拿到ca证书,需要钱的
    1. 端口不一样,http是80,https443
    1. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    1. http和https使用的是完全不同的连接方式(http的连接很简单,是无状态的;HTTPS 协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。)

HTTPS工作原理

  • 一、首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;
  • 二、客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);
  • 三、消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;
  • 四、发送给服务端,此时只有服务端(RSA私钥)能解密。
  • 五、解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)。

一次完整的HTTP请求所经历几个步骤?

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

    1. 建立TCP连接 怎么建立连接的,看上面的三次捂手
    1. Web浏览器向Web服务器发送请求行 一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET /sample/hello.jsp HTTP/1.1。
    1. Web浏览器发送请求头 浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
    1. Web服务器应答 客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。
    1. Web服务器发送应答头 正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
    1. Web服务器向浏览器发送数据
  • Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
    1. Web服务器关闭TCP连接

常用HTTP状态码是怎么分类的,有哪些常见的状态码?

HTTP状态码表示客户端HTTP请求的返回结果、标识服务器处理是否正常、表明请求出现的错误等。
状态码的类别:

image.png

常见的状态码:

image.png Http协议中有那些请求方式

image.png

GET方法与POST方法的区别

  • 区别一: get重点在从服务器上获取资源,post重点在向服务器发送数据;
  • 区别二: Get传输的数据量小,因为受URL长度限制,但效率较高; Post可以传输大量数据,所以上传文件时只能用Post方式;
  • 区别三: get是不安全的,因为get请求发送数据是在URL上,是可见的,可能会泄露私密信息,如密码等; post是放在请求头部的,是安全的

http版本的对比

  • HTTP1.0版本的特性:
  • 早先1.0的HTTP版本,是一种无状态、无连接的应用层协议。
  • HTTP1.0规定浏览器和服务器保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。
  • HTTP1.1版本新特性
  • 默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求
  • 管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应
  • 断点续传原理
  • HTTP2.0版本的特性
  • 二进制分帧(采用二进制格式的编码将其封装)
  • 首部压缩(设置了专门的首部压缩设计的HPACK算法。)
  • 流量控制(设置了接收某个数据流的多少字节一些流量控制)
  • 多路复用(可以在共享TCP链接的基础上同时发送请求和响应)
  • 请求优先级(可以通过优化这些帧的交错和传输顺序进一步优化性能)
  • 服务器推送(就是服务器可以对一个客户端请求发送多个响应。服务器向客户端推送资 源无需客户端明确的请求。(重大更新))

什么是对称加密与非对称加密

  • 对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;
  • 而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。 由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,非常的慢

cookie和session对于HTTP有什么用?

  • HTTP协议本身是无法判断用户身份。所以需要cookie或者session

什么是cookie

  • cookie是由Web服务器保存在用户浏览器上的文件(key-value格式),可以包含用户相关的信息。客户端向服务器发起请求,就提取浏览器中的用户信息由http发送给服务器
  • 什么是session
  • session 是浏览器和服务器会话过程中,服务器会分配的一块储存空间给session。服务器默认为客户浏览器的cookie中设置 sessionid,这个sessionid就和cookie对应,浏览器在向服务器请求过程中传输的cookie 包含 sessionid ,服务器根据传输cookie 中的 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

cookie与session区别

    1. cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高
    1. 单个cookie保存的数据不能超过4K,session无此限制 信息后,使用自己的私钥进行解密。 由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,非常的慢

cookie和session对于HTTP有什么用?

HTTP协议本身是无法判断用户身份。所以需要cookie或者session

什么是cookie

cookie是由Web服务器保存在用户浏览器上的文件(key-value格式),可以包含用户相关的信 息。客户端向服务器发起请求,就提取浏览器中的用户信息由http发送给服务器

什么是session

session 是浏览器和服务器会话过程中,服务器会分配的一块储存空间给session。服务器默认为客户浏览器的cookie中设置 sessionid,这个sessionid就和cookie对应,浏览器在向服务器请求过程中传输的cookie 包含 sessionid ,服务器根据传输cookie 中的 sessionid 获取出会话中存储的信息,然后确定会话的身份信息。

cookie与session区别

    1. cookie数据存放在客户端上,安全性较差,session数据放在服务器上,安全性相对更高
    1. 单个cookie保存的数据不能超过4K,session无此限制
    1. session一定时间内保存在服务器上,当访问增多,占用服务器性能,考虑到服务器性能方面,应当使用cookie。