作为一名python后端程序员,以下这些网络相关问题是你必须要了解的。欢迎道友提出补充问题。
1."三次握手"是指什么?
(1).客户端通过向服务器发送一个SYN来创建一个主动打开,作为三路握手的一部分。客户端把这段连接的序号设定为随机数A。
(2).服务器应当为一个合法的SYN回送一个SYN/ACK。ACK的确认码应为A+1,SYN/ACK包本身又有一个随机序列号B。
(3).最后,客户端再发送一个ACK。当服务器端接受到这个ACK的时候,就完成了三路握手,并进入连接创建状态。此时包序号被设定为收到的确认号A+1,而相应则为B+1。
2."四次挥手"是指什么?
CP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。
(1).客户端A发送一个FIN,用来关闭客户端A到服务器B的数据传送。
(2).服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号+1。和SYN一样,一个FIN将占用一个序号。
(3).服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4).客户端A发回ACK报文确认,并将确认需要设置为收到的序号加1。
3.ARP协议是什么?
地址解析协议(Address Resolution Protocol):根据IP地址获取物理地址的一个TCP/IP协议。
4.urllib和urllib2的区别
(1).urllib提供urlencode方法来GET查询字符串的产生,而urllib2没有。这就是为何urllib常和urllib2一起使用的原因。
(2).urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL。这就意味着,你不可以伪装你的User Agent字符串等。
5.Post和Get区别
Get后退按钮/刷新无害,POST数据会被重新提交(浏览应该告知用户数据会被重新提交)。
GET书签可收藏,POST为书签不可收藏。
GET能被缓存,POST不能缓存。
GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。
GET对数据长度有限制,当发送数据时,GET方法向URL添加数据;URL的长度是受限制的(URL的最大长度是2048个字符),POST无限制。
GET只允许ASCLL字符。POST没有限制。也允许二进制数据。
与POST相比,GET的安全性较差,因为所发送的数据是URL的一部分。在发送密码或其他敏感信息时绝对不要使用GET!!!POST比GET更安全,因为参数不会被保存在浏览器历史或web服务器日志中。
GET的数据在URL中对所有人都是可见的。POST的数据不会显示在URL中。
6.简述Cookie和Session的作用和区别
存储位置:
Cookie:客户端;Session:服务器端。
目的:
Cookie:跟踪会话,也可以保存用户偏好设置或者保存用户名密码等;Session:跟踪会话。
安全性:
Cookie:不安全;Session:安全
session技术是要使用到cookie的,之所以出现session技术,主要是为了安全。
7.apache和nginx的区别
nginx相对apache的优点:
(1).轻量级,同样起web服务,比apache占用更少的内存及资源
(2).抗并发,nginx处理请求是异步非阻塞的,支持更多的并发连接,而apache则是阻塞型的,在高并发下nginx能保持低资源消耗高性能。
(3).配置简洁。
(4).高度模块化设计,编写模块相对简单。
(5).社区活跃。
apache相对nginx的优点:
(1).rewrite,比nginx的rewrite强大
(2).模块超多,基本想到的都可以找到
(3).少bug,nginx的bug相对较少
(4).超稳定
8.简单谈一下网站用户密码保存方式
(1).明文保存
(2).明文hash后保存,如md5
(3).MD5+Salt方式,这个salt可以随机
(4).知乎使用了Bcrypy(好像)加密
9.简述HTTP和HTTPS
超文本传输协议(HTTP-Hypertext transfer protocol)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
10.CSRF和XSS是什么?
CSRF(Cross-site request forgery)跨站请求伪造。
XSS(Cross Site Scripting)跨站脚本攻击
CSRF重点在请求,XSS重点在脚本。
11.SOAP是什么?
SOAP(原为Simple Object Access Protocol的首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构信息。SOAP为了简化网页服务器(Web Server)从XML数据库中提取数据时,节省去格式化页面时间,以及不同应用程序之间按照HTTP通信协议,遵从XML格式执行资料互换,使其抽象于语言实现、平台和硬件。
12.RPC是什么?
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络计数的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨域传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
总结:服务提供的两大流派.传统意义以方法调用为导向通称RPC。为了企业SOA,若干厂商联合推出webservice,制定了wsdl接口定义,传输soap.当互联网时代,臃肿SOA被简化为http+xml/json.但是简化出现各种混乱。以资源为导向,任何操作无非是对资源的增删改查,于是统一的REST出现了.
进化的顺序: RPC -> SOAP -> RESTful
13.CGI和WSGI是什么?
CGI是通用网关接口,是连接web服务器和应用程序的接口,用户通过CGI来获取动态数据或文件等。
CGI程序是一个独立的程序,它可以用几乎所有语言来写,包括perl,x,lua,python等等。
WSGI(Web Server Gateway Interface)是Python应用程序或框架和Web服务器之间的一种接口,WSGI的其中一个目的就是让用户可以用同一的语言(Python)编写前后端。
14."中间人攻击"是指什么?
在GFW(长城防火墙)里屡见不鲜的。
中间人攻击(Man-in-the-middle attack,通常缩写为MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。
15.c10k问题是什么?
所谓c10k问题,指的是服务器同时支持成千上万个客户端的问题,也就是concurrent 10 000 connection(这也是c10k这个名字的由来)。
16.socket是什么?
Socket是应用层与TCP/IP族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket = IP address + TCP/UDP + port
image.png
17.浏览器缓存
浏览器缓存机制,其实主要就是HTTP协议的缓存机制(如: Expires; Cache-control等)
Expires策略
Expires是web服务器相应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。
Cache-control策略(重点关注)
Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更过,设置更细致,如果同时设置的话,其优先级高于Expires。
18.HTTP1.0和HTTP1.1之间的区别(1.1的相对与1.0的变化)
(1)请求头Host字段,一个服务器多个网站
(2)长链接
(3)文件断点续传
(4)身份认证,状态管理,Cache缓存
想了解更多推荐查看这篇文章:https://www.jianshu.com/p/95a521b006a8
19.Ajax是什么技术?
Ajax(Asynchronous JavaScript and XML——异步的javaScript和XML),是与在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。
网友评论