python 高级码农成才之路

python关于HTTP/HTTPS/TCP/UDP

2021-03-11  本文已影响0人  幼姿沫

1.HTTP 超文本传输协议 hyper text transfer protocol 是www world wide web

从万维网服务器传输超文本到本地浏览器的传输协议

HTTP协议是一个基于ip/tcp通信协议来传递数据的 html / 文件 /图片文件/查询结果

http协议是一个属于应用层的面向对象的协议

http协议工作于客户端和服务器端架构上。

浏览器作为HTTP客户端通过url向http发送请求服务器接收到请求之后,向客户端发送响应信息

2.基于TCP/IP

把与互联网相关连的协议集合起来总称为TCP/IP 基于TCP/IP的协议之上的应用层协议

基于请求request响应response

请求从客户端发出向服务器请求数据并且将该数据返回

无状态保存

HTTP本身就是一种无状态的协议 HTTP协议不对请求响应之间的数据做保存

无状态保存的话会使许多关键信息丢失比如用户登录到一家购物网站上时输入信息不会保存信息

而是通过session 的id 传送给cookie 再传递给客户端  有了cookie再用http协议通信就可以管理状态了

http协议不对请求的数据做保存可以大量处理数据确保协议的可伸缩性,而特意把HTTP协议特意设置为如此简单

3.JWT json web token json加密 签名

http的请求报文和响应报文格式

http://www.baidu.com

请求行  请求首部字段  请求内容实体

响应报文

状态行  响应首部字段  响应内容实体

http和https的区别是

http是不安全的  明文未加密的 因此使用http传输隐私数据信息是非常不安全的

https=http+ssl 加密 安全 密文 可进行加密传输身份认证 要比HTTP安全

https需要到CA申请证书  具有安全性的SSL加密传输协议 验证数据且对数据完整性保护

https协议是http+ssl协议构建的可进行加密传输,身份认证的网络协议比http协议安全

443端口 安全 加密 密文

HTTP和HTTPS的请求方式 POST 向指定路径资源上传提交数据提交表单或者上传文件/

GET向指定的路径资源

PUT 从客户端向服务器更新指定的资源 /PATCH 从客户端向服务器更新指定的部分资源

DELETE 请求服务器删除指定的资源    HEAD 向服务器索要与GET一样的请求,

但是不返回主体

options 查询相应的url支持的http方法

trace  返回服务器接收到的请求  主要用于测试和诊断

connect 协议中预留给能够将连接改为管道方式的代理服务

4.GET  和  POST  请求的区别

get                                                                                                                    post

本质      只是跑一次直接获取数据header+data一并发送出去            产生2个tcp包来回各一次 先收到header再收到data

请求形式  直接得到数据 数据可见不安全的 url传递的                        数据不可见 封装在request中的body 安全性较高

传输数据  数据量小但是效率高 只能进行url编码 ascii字符 中文乱码  传输较大数据量post方式  多种编码 标准字符集 中文不乱码

5.常见的HTTP相应状态码

1xx 指示信息 请求已经接收继续处理

2xx 成功 请求已经成功接收,理解

3xx 重定向 如果说想要完成操作继续进一步操作

4xx 客户端发生错误 请求有语法错误或者请求无法实现

5xx 服务器端错误 服务器未能实现合法的请求

6.如何对HTTP进行优化

http是基于ip/tcp进行传输数据的

1.tcp复用  tcp连接复用时将多个客户端的HTTP请求复用到一个服务器端的TCP连接上

http复用是一个客户端的多个http请求通过一个tcp连接进行处理

2.ssl加速  使用SSL协议对http协议进行加密更加安全在通道内加密并加速

3.压缩    将数据文本进行压缩,减少宽带

4.内容缓存 将经常用到的内容缓存到浏览器中,客户端使用的时候直接从内存中获取相应的数据

7.TCP传输控制协议和UDP用户数据报协议的区别

TCP 传输控制协议    提供的是面向连接,可靠的字节流服务 双方建立TCP连接之后再客户端浏览器

进行传输数据并且提供超时重发,丢弃重复数据,检验数据 流量控制。保证数据能完整地从一端传递到另外一端

必须建立连接之后才可以传输数据 ,确保数据传输的完整性,类比现实中的打电话

UDP 用户数据报协议  面向数据报的运输层协议,他不提供可靠性,只是把应用程序传给ip层的数据报,

但是不能保证数据到达服务器客户端

但是udp不会进行tcp连接之后才会传输数据到客户端,这样大大提高了速度。

简单说就是把单向的把数据传递出去了不论对方有没有收到,

类比现实生活中的收信

TCP 面向连接    可靠的 速度慢 效率低

UDP 面向数据报  不可靠的 速度快 效率高

8.TCP的三次握手四次挥手  

TCP三次握手就是建立连接传输数据  四次挥手就是传输最后一次数据断开连接close

第一次握手  建立连接之后,客户端向服务器端发送syn包并且进入同步已发送状态,等待服务器确认  syn 同步序列编号

第二次握手  服务器端接收到客户端传来的数据,同样需要向客户端传送数据 此时服务器已经进入接收数据状态

第三次握手  客户端收到服务器端的syn+ack包 向服务器发送确认包ack 服务器向客户端发送数据 客户端服务器进入TCP连接状态

第一次挥手  客户端进程发出连接释放报文,并且停止发送数据 进入等待状态

第二次挥手  服务器接收到释放报文,发出确认报文服务器端就进入了close

第三次挥手  服务器将最后的数据发送完毕,客户端发送释放报文

第四次挥手  当客户端收到释放报文之后,客户端进入了等待状态

TCP关闭的时候为什么是四次挥手

因为serve端 服务端接收到client客户端请求之后可以直接响应报文

但是在关闭连接的时候 当server器端接收到客户端传来的信息不会立即关闭socket

先回复一个ack报文 告诉客户端client端我已经收到了释放报文,但是必须等到所有的数据传输完毕之后我才能发送报文

因此说不能一起发送,故而需要四次挥手

9.TCP为什么会粘包和分包

分包的原因是 tcp建立连接之后,他会传送最大消息长度,

如果应用层数据包超过MSS就会把应用层数据包拆分分成两段来进行发送。

这时候接收端的应用层就要拼接这两个tcp包

粘包的原因是  tcp数据少的时候延迟发送,如果说数据多的时候会发送快速,

最后把应用层数据包粘连在一起会发生粘包,最后只是发送一个tcp数据包给接收端

10.HTTP和websocket的区别

http 网络传输协议 基于tcp/ip进行关联  使用万维网通过客户端向服务器端发送数据

websocket 允许服务器端主动向客户端发送数据

只需要在客户端服务器端创建一次链接就可以创建持久性的链接,

并且可以在浏览器和客户端建立双向数据传输

http和websocket的区别

http是浏览器向服务器端发送数据

websocket 是客户端可以向服务器端发送信息也可以服务器端主动向客户端推送信息,实现双工通信

http协议是用在应用层的协议是基于tcp的  http建立连接也必须要三次握手才可以发送信息

websocket  是为解决客户端与服务器端实时通信,浏览器和服务器之间做一次握手之后就可以随时相互进行通信

同时客户端与服务器端之间传递的头信息很小

HTTP的长连接 和 websocket的持久连接的区别

在一次tcp连接中可以进行多次http请求,但是对每个请求都要发送header,

keep-alive不会永久保持连接,只是有一个保持时间在不同的服务器软件中设定这个时间,

这种长连接是一种伪连接

websocket是一个持久化的协议  只需要建立一次request请求/response响应消息对

之后都是tcp连接 避免了需要多次建立请求响应的消息对而产生的冗余头部信息

上一篇下一篇

猜你喜欢

热点阅读