网络编程相关
http协议中GET和POST有什么区别,cookie 和sessions有什么不同和联系? 2017音未公司
get相对于post的话不安全,传输的数据一般明文显示在url中,post一般用户表单的提交,数据通过ssl加密传输
get传送的数据有限制,不能大于2k,post传输的数据量大,而且一般不受限制
get虽说安全比较低,post安全性较高,但是执行的速度比post好
cookie的数据是放在客户端浏览器中,sessions是一般数据放在服务器上
cookie不是很安全,别人可以本地的cookie进行欺骗
session会在一定时间内存在服务器上
http与https的区别
1.http简称超文本传输协议端口是80,是一种网络链接传输文本协议,https是一种安全超文本传输协议端口是443
2.http传输信息是以明文显示;https采用了ssl加密传输,信息是加密传输
3.http的链接是没有状态的,(设计之初就是为了浏览文本信息的)
4.https协议需要到ca申请证书,一般免费证书很少,需要交费
简述三次握手和四次挥手?
三次握手:客户端会发送一个syn的数据包给服务器,称为第一次握手,服务器收到客户端的数据包后,会相应的产生一个ack的数据包发送给客户端,此为第二次握手,客户端收到后,会将ack的值再次返回给服务器,此为第三次握手
四次挥手:客户端第三次握手,会把发送2个数据包,一个通知包,一个数据包,服务器收到数据包后(代表三次握手完成),会发送2个包,一个通知包,一个数据包,客户端收到数据后,会自动调用close方法,给服务器发送一个通知包,服务器收到后会给客户端发送2个包,一个通知包,一个数据包(即告诉客户端服务器也close了),客户端收到后,会给服务器发送一个通知包,告诉服务器收到了
TCP/UDP比较
面向连接(确认有创建三方交握,连接已创建才作传输。)
有序数据传输
重发丢失的数据包
舍弃重复的数据包
无差错的数据传输
阻塞/流量控制
TCP的实现流程
客户端发起请求给DNS域名解析服务器,DNS会将请求的url转换为具体的IP地址,发送给服务器,如果向服务器请求的资源是静态资源比如说html/css/js/jpg等这些,服务器会直接返回内容给客户端,如果是动态资源,服务器会根据内容查询数据库中的数据,并且将查询的结果返回到服务器,服务器在将内容以及状态ma返回给客户端
为什么Python中有了GIL还要有同步互斥锁?
首先明确一点GIL是全局解释器锁,控制python中线程间的调用,保证同一时间片下每次只有一个线程在运行,保护内核的共享资源,线程的同步和互斥解决的是线程间数据的访问正确性问题,这是2个问题