UDP和TCP的区别:
TCP/IP协议族:
- 应用层:负责用户应用
- 传输层
- 网络层
- 链路层
TCP:
1、TCP是面向连接的:应用程序在使用TCP协议前,要先建立TCP连接,在传送数据完毕之后再释放连接。 2、每一条TCP连接只有两个端点。 3、TCP提供可靠交付的服务。 4、TCP提供全双工通信。
UDP:用户数据报
1、UDP无连接:发送数据前不需要建立连接; 2、UDP是不可靠的:发送前,不建立连接也就不可靠。想发就发,并且发了之前不管对方是是否收到。 3、UDP面向报文:对应用程序交下来的报文,既不拆分,也不合并。在添加首部之前就交付给IP层。 4、UDP没有拥塞控制:网络的堵塞不会使UDP发送速率降低。所以适合于实时应用。 5、UDP支持一对多,多对多,多对一,一对一的交互通信 6、UDP的首部开销小。只有8字节,比TCP的20个字节的首部要短很多。
三次握手
第一次:客户端发送SYN报文到服务端,客户端进入SYN_SEND状态等待服务端确认。
第二次:服务端接收并处理客户端发送的报文,并返回ACK+SYN报文,服务端进入SYN_RECV状态,等待客户端的确认。
第三次:客户端接收报文,返回确认的ACK报文,发送完毕,客户端和服务端都进入ESTABLISHED的状态。
需要三次握手的原因:防止已经失效的连接请求报文突然又传送到服务端。或者是防止网络中存在延迟的重复分组
HTTP和HTTPS的区别:
1、HTTP的通信是明文传输的,会被窃取信息。但是HTTPS传输过程是加密的(http+ssl)
2、HTTP通信不验证身份,会遭遇伪装。HTTPS需要到CA申请证书,有了证书就可判断身份。证书并且一般不免费。
3、HTTP响应的速度比HTTPS快,因为HTTP使用三次握手就建立连接了,客户端和服务端交换了三个包,但是HTTPS除了三次握手的3个包外,还有ssl握手的9个包
4、HTTP和HTTPS的连接方式不一样, 端口号也不一样,HTTP是80端口,HTTPS是443端口。
5、HTTPS是建立在SSL/TSL上的HTTP协议,所以HTTPS比较HTTP浪费服务器资源。
HTTPS的工作原理:
对称加密:
加密和解密都是用同一把密匙。安全性不高,容易被黑客截取。
非对称加密:
加密和解密用的是不同的密钥。成对出现,分别是公钥和私钥。用密钥加密的只能用公钥解密,用公钥加密的也只能用密钥解密。解决了密钥泄露和保存的问题,安全性高,速度慢。但是存在服务端向客户端通信时,有第三方截取了这个包,并且之前也截取了公匙,那么信息就会被第三方截取。
过程:首先客户端向服务端请求公钥,服务端返回公钥给客户端。客户端拿到公钥对明文进行加密后,发送给服务端,服务端收到并用私钥解密,就拿到了数据。
对称性和非对称性加密混合
分为建立通信部分和通信部分;
建立通信:
首先客户端请求公钥,服务端收到返回公钥。
客户端收到公钥,生成随机数用公钥进行加密,生成rendKey密文后发送给服务端;服务端收到用密匙解密,
拿到随机数。
通信:接下来客户端就用rendKey对明文进行对称加密发送给服务端。服务端拿到后用rendKey解密,拿到明文。
数字签名及数字证书:
1、服务端根据RSA算法生成公钥和私钥。
2、对文件进行哈希运算,得到文件哈希值H,使用私钥根据RSA解密公式对对哈希值进行数字签名运算,得到数字签名S。
3、公钥、文件、S数字签名发送到网上。
4、如果需要数字签名验证,则用公钥根据RSA加密公式对文件进行数字签名进行验证,得到文件哈希值H。然后对这两个文件哈希值进行对比,两者相同,则签名成立。
5、怎么证明私钥的拥有者是正确的?
则需要用到数字认证。因为公钥和私钥是对应的,只需证明公钥的生产者是正确的。将公钥和及部分个人信息发送给认证机构CA,核实身份后,返回一个证书,这个证书含有公匙和个人的身份信息。则这个证书证明了公钥是它的。则就证明了私钥的拥有者是正确的。
6、将证书发到互联网上,则就知道了这个公匙是谁的了。
7、怎么知道数字证书是正确的?
数字证书不可伪造。CA自己有自己的私钥和公钥。使用私钥对其公钥和个人信息进行数字签名,并放到数字证书中,数字证书含有数字签名和文件。这个数字证书放到互联网中。
每个人的手机和电脑的系统中都有根证书,根证书中有CA机构信息和它的公钥。预先安装在系统中的根证书可以杜绝公钥被伪造的可能。
通过CA机构的公钥就可以验证数字证书里的数字签名。从而数字证书不可伪造。
xss、sql攻击:
xss攻击:浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。
1、利用虚假表单骗取用户个人信息
2、利用脚本窃取用户的cookie值,帮助在被害人不知情的情况下发送恶意请求
3、显示伪造的图片或文章