网络笔试面试

一、Http和https的区别:

   http是http协议运行在TCP之上。所有传输内容为明文,客户端和服务器端都无法验证对方的身份。

   https是http协议运行在SSL(安全套接层)/TLS(传输层安全)之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的秘钥用服务器方的证书进行非对称加密。此外客户端可以验证服务器端身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。

   https协议需要到ca申请证书,一般免费的证书很少,需要交费。

   http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议

   http和https使用的是完全不同的连接方式用的端口也不同,前者为80端口,后者为443

   http的链接很简单,是无状态的

   https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

 

二、tcp如何保证可靠传输

    1、数据包校验  2、超时重传机制  3、应答机制   4、对失序数据包重排序  5、tcp还能提供流量控制

 

三、tcp三次握手原理

   第一次握手:主机A发送位码为syn=1(同步信号),随机产生seqnumber=1234567(序列号)的数据包到服务器,主机B由SYN=1知道,A要求建立联机。

   第二次握手:主机B收到请求后要确认联机信息,向A发送acknumber(应答码)=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

   第三次握手:主机A收到后检查acknumber是否正确,即第一次发送的seqnumber+1,以及位码ack是否为1,若正确,主机A会在发送acknumber=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

    三次握手后,主机A与主机B开始传输数据。

  (疑问:如果第三次握手中主机A传回的acknumber恰好等于主机C第一次握手传给主机B的seqnumber的话怎么办?)

 

四、tcp四次分手原理

  由于tcp链接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成他的数据发送任务后就能发送一个FIN来终止这个方向的链接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

  1、客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。

  2、服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。

  3、服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6).

  4、客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7).

 

五、为什么TCP采用四次挥手关闭连接,而建立连接是三次握手?

  这是因为服务器端的LISTEN状态下的SOCKET当收到SYN报文的建立连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有数据都发送给对方了,所以你可以未必马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以他这里ACK报文和FIN报文多数情况下都是分开发送的。

 

六、为什么tcp连接要三次握手两次不可以么?为什么?

  为了防止已失效的链接请求报文段突然又传送到了服务端,因而产生错误。

  已失效的链接请求报文段的产生在这样的一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络节点长时间的滞留了,以至延误到连接释放以后的某个时间才到达server。本来这事一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样server的很多资源就会白白浪费掉了。采用”三次握手“的方法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。

 

七、如果客户端不断地发送请求连接会怎样?

  服务器端会为每个请求创建一个链接,然后向client端发送创建链接时的回复,然后进行等待客户端发送第三次握手数据包,这样会白白浪费资源。

 

八、DDos攻击

  简单的说就是向服务器发送链接请求,首先进行

  第一步:客户端向服务器端发送链接请求数据包(1)

  第二步:服务器向客户端回复链接请求数据包(2),然后服务器等待客户端发送tcp/ip链接的第三部数据包(3)

  第三步:如果客户端不向服务器端发送最后一个数据包(3),则服务器需等待30s到2min才能将此链接进行关闭。当大量的请求只进行到第二步,而不进行第三步,服务器又大量的资源等待第三个数据包。则造成DDos攻击。

 

九、DDos预防(没有根治的方法,除非不用TCP/IP链接)

  1、确保服务器的系统文件是最新版本,并及时更新系统补丁

   2、关闭不必要的服务

   3、限制同时打开SYN的半连接数目,缩短SYN半连接的time out时间

   4、正确设置防火墙,启用防DDos的属性

   5、禁止对主机的非开放服务的访问

   6、限制特定IP地址的访问  

   7、严格限制对外开放的服务器的向外访问

   8、运行端口映射程序和端口扫描程序,要认真检查特权端口和非特权端口

   9、认真检查网络设备和主机/服务器系统日志,只要日志出现漏洞或是时间变更,那这台机器就可能找到了攻击。

   10、限制在防火墙外与网络文件共享。这样会给黑客截取系统文件的机会,主机信息暴露给黑客,给对方入侵机会

 

十、GET和POST的区别

  从语义上说:GET从服务器获取信息;POST提交表单到服务器

  GET:   

  1、GET被强制服务器支持

  2、浏览器对URL的长度有限制,所以GET请求不能代替POST请求发送大量数据

  3、GET请求发送数据更小

  4、GET请求是不安全的

  5、GET请求是幂等的

  6、书签可收藏

  POST:

  1、POST请求不能被缓存

  2、POST请求相对GET请求是安全的

  3、书签不可收藏

  在以下条件下,请使用POST请求:

  1、无法使用缓存文件(更新服务器上的文件或服务器)

  2、向服务器发送大量数据(POST没有数据量限制)

  3、发送包含未知字符的用户输入时,POST比GET更稳定也更可靠。

  4、post比get安全性更高

 

十一、TCP和UDP的区别?

    区别:

    1、UDP是无连接的,即发送数据之前不需要建立连接

    2、UDP使用尽最大的努力交付,即不保证可靠交付,同时也不使用拥塞控制。

    3、UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信要求。

    4、UDP支持一对一、一对多、多对一和多对多的交互控制

    5、UDP的首部开销小,只有8个字节

    6、TCP是面向连接的运输层协议

    7、每一个TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一的)

    8、TCP提供可靠交付的服务

    9、TCP提供全双工通信

    10、TCP是面向字节流

    11、首部最低20个字节。

    

十二、滑动窗口协议基本原理

    滑动窗口协议的基本原理就是在任意时刻,发送方都维持一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。

 

十三、TCP的拥塞处理

  1、慢启动

  2、拥塞避免

  3、拥塞发生

  4、快速恢复

 

十四、从输入网址到获得页面的过程

  首先根据输入的网址根据DNS协议查询DNS,获取域名对应的IP地址

  浏览器搜索自身的DNS缓存

  搜索操作系统的DNS缓存

  读取本地的HOST文件

  发起一个DNS的系统调用

    宽带运营服务器查看本身缓存

    运营商服务器发送一个迭代DNS解析请求

 

    然后利用获得的IP地址,利用tcp协议进行HTTP三次握手

 TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求

 服务器接收到这个请求后,根据路径参数,经过后端的一些处理生成HTML页面代码返回浏览器

  浏览器拿到完整的HTML页面代码开始解析和渲染,如果遇到引用的外部JS,CSS,图片的静态资源,他们同样也是一个个的HTTP请求,都要经过上面的步骤

  浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户

 

  

posted @ 2018-01-22 20:48  彩电  阅读(136)  评论(0编辑  收藏  举报