http和https区别
笼统说:HTTP是明文传输的,传输过程中容易被拦截、修改或者伪造请求;HTTPS则是在HTTP基础上进行进行了一些信息保护,相比HTTP来说更为安全。 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 两者区别:
1. http明文传输,https 有ssl加密传输 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议 2. 端口不一样 http80,https 443 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 3. http连接是无状态的,https是由SSL+Http http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
HTTP的通信原理:
- 客户端浏览器通过网络与服务器建立连接(通过TCP实现,一般端口号为80),建立连接后客户端可发送请求给服务器(请求的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容)
- 服务器接收到请求之后会返回一定的相应(其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容)
HTTP的缺点: - 使用明文通信,一些重要的内容会被 窃听(密码)
- 不能验证对方的身份,可能是伪造的信息
- 无法验证报文的完整性,有可能已经被修改
HTTPS如何解决HTTP的问题:
HTTPS 只是在 HTTP 的基础之上增加了加密处理、认证机制和完整性保护,即 HTTPS = HTTP + 加密 + 认证 + 完整性保护, 加密:对数据加密。 因为数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整的传输到服务端,保证用户发的是什么,服务器接收的就是什么。 身份认证,是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。 HTTPS 不是应用层的一种新协议,只是 HTTP 协议的改进(HTTP协议中的部分通信接口被ssl/tls协议代替),通常 HTTP 直接与 TCP 进行通信,当使用 ssl 协议时则先与 ssl 通信,再由 ssl 和 tcp 通信, 通过上面的分析可以看出来,HTTPS 只是在 HTTP 的基础上增加了 ssl 协议;
死锁问题
什么是死锁 是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
a线程持有a想获取b,b线程持有b还想获取a俩都不撒手 产生原因 1、资源竞争 分为两个 1 对于不可剥夺资源的竞争或产生死锁,2 对于临时资源的竞争会产生死锁通常消息通信顺序进行不当。 临时资源(包括硬件中断、信号、消息、缓冲区内的消息等) 系统中的资源分为两类:1 可剥夺资源(某进程拿到这个资源别的进程还可以拿如内存cpu)2 不可剥夺资源 (进程拿到后只能它用完自己释放,不能强制回收如磁带机打印机)。 2、进程间推进顺序非法 如a线程保持资源A,b线程保持资源B。系统将处于不安全的状态。因为如果a想用B或者b想用A都不可用了。 产生的条件
- 互斥条件:(我用你先别用)
进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。 - 请求和保持条件:(不要吃碗里看锅里)
当进程因请求资源而阻塞时,对已获得的资源保持不放。 - 不剥夺条件:(别人用着我先不用)
进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。 - 环路等待条件:(不成环)
在发生死锁时,必然存在一个进程–资源的环形链。 解决死锁 简单总结就是要给资源一次性给全,有资源给不了别的也先不给,分配资源要有顺序。 - 资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)
- 只要有一个资源得不到分配,也不给这个进程分配其他的资源:(破坏请保持条件)
- 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)
- 资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)
TCP和UDP的区别
TCP | UDP |
---|
TCP 是面向连接的(有三次握手) | UDP 是面向无连接程序结构较简单 | TCP 是面向字节流的 | UDP 是基于数据报的 | TCP 保证数据正确性(累计确认及超时重传机制) | UDP 可能丢包 | TCP 保证数据顺序(顺序问题,丢包问题,流量控制都是通过滑动窗口) | UDP 不保证 |
UDP
包头文件其中只有个源端口号和目的端口号 所以特点有 1、沟通简单,不需要大量数据结构 2、不会建立连接 任何人可以给他传 他也可以给任何人传 3、不会根据网络拥塞就不发了 不考虑是否会丢包。 如:直播 实时游戏等对实时性要求高的
TCP
-
源端口和目标端口是不可少的。 -
序号 解决乱序 接下来是包的序号。主要是为了解决乱序问题。不编好号怎么知道哪个先来,哪个后到 -
确认序号 解决是否送到了发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题 -
状态位 解决是否建立好了连接SYN 是发起一个链接,ACK 是回复,RST 是重新连接,FIN 是结束连接。因为 TCP 是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更 -
窗口大小 解决流量控制TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力
TCP三次握手四次挥手
三次握手
建立连接时 客户端和服务器的状态也要说 就是closed listend或是syn-sent
四次挥手
|