TCP和UDP的区别以及优缺点
TCP是面向连接的通讯协议,通过三次握手建立联系,通讯时完成四次挥手
优点:tcp在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证数据的正确性,较为可靠
缺点:tcp相对于udp速度慢,要求系统资源较多
UDP是面向无连接的通讯协议,udp数据包括目的端口号和源端口号信息
优点:udp速度快,操作简单,要求系统资源较少,由于通讯不需要连接,可以实现广播发送
缺点:udp传送数据前并不与对方建立联系,对接受到的数据也不发送确认信号,发送端不知道数据是否会正确接受,也不重复发送,不可靠
详述三次握手和四次挥手过程
三次握手:
1.建立连接时,客户端发送SYN包到服务器
2.服务器收到请求后,会向客户端发送一个SYN包,即SYN+ACK包,此时服务器进去SYN_RECV状态
3.客户端收到服务器的SYN+ACK包,向服务器发送一个序列号(seq=x+1),确认号为ack(客户端) = y+1,此包发送完毕,客户端和服务器进入ESTAB_LISHED(tcp连接成功)状态,完成三次握手
四次挥手:
1.首先,客户端发送一个FIN,用来关闭客户端到服务器的数据传送,人后等待服务器的确认
2.服务器接收到这个FIN。他发送一个ACK,确认ack为接收到的序号加一
3.关闭服务到到客户端的连接,发送一个FIN给客户端
4.客户端接收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加一,客户端就进去了TIME-WAIT(时间等待)状态。此时注意tcp的连接还没有释放,必须经过2*MSL(最长报文段寿命)的时间后,才进入CLOSED状态
5.服务器只要收到了客户端发出的确认,当前连接立即进入到CLOSED状态
HTTP和HTTPS却别
1.https协议需要到ca申请证书,一般免费的证书较少,因而需要一定的费用
2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
4.http连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,相对http更安全
POST和GET请求的区别
1.最直观的就是语义上的区别,get用于获取数据,post用于提交数据
2.get参数有长度限制(受限于url长度,具体的数值取决于浏览器和服务器的限制),而post无限制
3.Get请求,请求的数据会附加与URL之后,以?分割url和传输数据,多个参数用&连接,而post请求会把请求的数据放置在Http请求体重
HTTP协议状态码有什么用以及常见的Http协议的状态码
通过状态码告诉客户端服务器的执行状态,以判断下一步该执行什么操作。
常见的状态机器码有:
1.100-199 表示服务器成功接收部分请求,要求客户端继续几条其他请求才能完成整个处理过程
2.200-299 表示服务器成功接收请求并完成处理过程,常用200(OK请求成功)
3.300-399 为完成请求,客户需进一步细化请求,如302(所有其你去页面已经临时转移到新的url),304,307(使用缓存资源)
4.400-499 客户端请求有错误,如常见的404(服务器无法找到请求页面),403(服务器拒绝访问,权限不够)
5.500-599 服务器端出现错误 如500(请求未完成,服务器遇到了不可预知的错误)
HTTP常见的请求头
1.HOST(主机和端口号)
2.Connection(连接类型)
3.Upgrade-Insecure-Requests(升级为Https请求)
4.User-Agent(浏览器名称)
5.Accept(传输文件类型)
6.Refere(页面跳转出)
7.Accept-Encoding(文件编解码格式)
8.Cookie(cookie)
9.x-requested-with:XMLHttpRequest(是Ajax异步请求)
浏览器请求动态页面过程
1.http请求动态资源(浏览器到web服务器)
2.通过wsgi调用一个属性(web服务器到应用程序框架)
3.通过引用调用web服务器的方法,设置返回的状态和头信息(应用程序框架到web服务器)
4.调用返回,此时web服务器端保存了刚刚设置的信息(web服务器到框架)
5.框架自己查询数据库等,生成动态页面的body信息
6.把生成的body信息返回给web服务器的调用
7.web服务器吧数据返回给浏览器
WSGI的作用
web框架和服务器之间的通信协议
WSGI允许开发者将选择web框架和web服务器分开,可以混合匹配web服务器和web框架,选择一个适合的配对,