第5章 第2节 网络协议 - 入门(下)

大家好,上一小节我们介绍了一些基础的网络协议和面试中的高频考点。本节我们继续介绍基础网络协议相关知识点,主要知识点包括HTTP和HTTPS相关协议,路由汇聚以及子网掩码的求法等。
 

(1)HTTP和HTTPS的区别有哪些?(掌握)

答:HTTP和HTTPS的主要区别可以总结如下:

  • HTTP是超文本传输协议,数据明文传输;HTTPS在HTTP的基础上加入了SSL协议,实现数据的加密传输;
  • HTTPS需要区申请证书,一般是收费的;
  • HTTP默认使用80端口,HTTPS默认使用443端口

 

解析:

这是一网络协议的基础题目,请大家务必掌握。在这里我们一起更加详细的进行学习吧。既然HTTPS = HTTP + SSL,那么我们先来看何为HTTP协议吧。
 

HTTP协议:

HTTP是超文本传输协议,是一种无状态的协议,是常见的一种应用层协议。HTTP是一个通信规则,规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。

HTTP请求信息:HTTP请求头中可以看到当前请求支持的语言,压缩格式,编码格式以及何种类型的返回文件,Connection以及Cookie,Content-Type等信息。

HTTP返回信息:HTTP返回信息中包括响应协议,HTTP Code以及Content-Type,时间和Cookie等信息。

(HTTP请求和返回的具体信息,大家可以任意打开一个网址,F12查看每一个具体的HTTP请求的请求和返回信息)

第5章 第2节 网络协议 - 入门(下)
 

面试官:“HTTP请求中的Get和Post方法有哪些区别?”

  • Get一般用来从服务器上查询获取资源;Post一般用来更新服务器上的资源;
  • Get方法将参数直接拼接在了URL后边,明文显示,可以通过浏览器地址栏直接访问;
  • Post请求用于提交表单,数据不是明文的,安全性更高;
  • Get请求有长度限制,Post请求没有

 

面试官:“常见的HTTP Code有哪些?”

  • 1xx(临时响应)
  • 2xx(成功)
  • 3xx(重定向):表示要完成请求需要进一步操作
  • 4xx(错误):表示请求可能出错,妨碍了服务器的处理
  • 5xx(服务器错误):表示服务器在尝试处理请求时发生内部错误

 

接着,我们可以给出具体的状态码。

常见HTTP协议的状态码:

  • 200(成功)
  • 302 (重定向):请求重定向到指定网页
  • 304(未修改):自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容
  • 401(未授权):请求要求身份验证
  • 403(禁止):服务器拒绝请求(比如死循环了,一直访问)
  • 404(未找到):服务器找不到请求的网页
  • 405 (方法禁用):Post请求当成了Get请求直接访问
  • 500 (服务器内部错误):有bug导致程序嗝屁了
  • 502 (错误网关):服务器从上游接到了无效响应
  • 504 ( 网关超时):nginx请求超时,请求一直没有返回

 

这里简单阐述304的含义,304表示上次请求结束到现在,目标网页内容未改变,客户端可以直接显示上次的内容。通过客户端和服务端之间的一个Last-Modified来判断。如下所示:

第5章 第2节 网络协议 - 入门(下)

前面我们说到了HTTP是一种无状态的协议,也就是说每一次请求都是一个独立的会话,那么会话状态(比如说用户的登录状态)该如何保持呢?
 

面试官:“cookie和session有了解吗?“

HTTP协议是一种无状态的协议,我们可以使用cookie和session来保持会话状态。用户发起请求,服务端收到请求处理后可以生成一个sessionId,并且将sessionId存入cookie中返回给客户端,将session的内容存储在服务器上。在下一次的请求中,客户端带着cookie来请求服务器,服务端从cookie中取出sessionId,实现了用户会话状态的保持。

这样做有一个缺点就是将一些东西存在了服务器上,在用户量较大的情况下,服务器容量会不足。实际情况中,经常是将所需要的会话状态,比如说登录态直接存入cookie并且返回给客户端,下次请求时,服务端直接取出cookie中的信息和参数信息进行比较,保持HTTP会话状态。

 

总结:session保存在服务端。cookie保存在客户端,并且cookie有大小限制。
 

基本了解了HTTP协议之后,我们再来简单看下何为SSL协议吧~
 

SSL协议:

HTTPS协议在HTTP的基础上加入了SSL(安全套接字层)协议,SSL逐渐演变为了TLS协议,但是业界习惯仍然称其为SSL协议。

SSL协议在传输控制层的基础上建立了安全的连接,它作为一种通用可靠的安全解决方案,可与多种应用层协议结合使用,实现应用数据的安全传输。SSL协议分为记录协议,握手协议,警告协议和密码规范改变协议

记录协议:接收上层协议或下层协议的消息并进行一系列的处理,然后再将处理后的消息继续向下或向上传递。主要包括对消息进行加解密,压缩解压缩,分段或者重组等操作。

握手协议:建立在三次握手之后,为通信双方确立安全连接所需要的安全参数,通常也会在此阶段对通信双方身份的真实性进行验证。

警告协议:无论是在握手阶段还是在对应用层数据的传输阶段,都有可能出现差错。警告协议规定了在SSL协议工作过程中可能出现的差错、错误的严重等级以及相应的处理方式。

密码规范改变协议:在SSL握手刚开始的时候,加密参数还没确定,消息都是明文传送的。双方协商好加密参数之后,在发送握手结束消息之前,需要发送一个密码规范改变消息(Change Cipher Message)来通知对方随后的消息都使用刚刚协商好的加密算法和加***进行加密。

 

(2)HTTP1.0,HTTP1.1以及HTTP2.0协议的区别:

答:主要区别和特点可以概括如下:

  • HTTP1.0:

HTTP1.0是一种无状态,无连接的协议。浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。也就是默认使用Connection: close

  • HTTP1.1:

HTTP/1.1中默认使用Connection: keep-alive,避免了连接建立和释放的开销。但服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。通过Content-Length字段来判断当前请求的数据是否已经全部接收。不允许同时存在两个并行的响应。

  • HTTP2.0:

HTTP2.0协议新增了二进制分帧,多路复用,头部压缩和服务器推送等功能,进一步提高了传输效率。

 

接下来,我们再来介绍路由汇聚和子网掩码相关的知识点吧,这块知识点常见于笔试题目中,要求我们计算出正确的答案。
 

(3)路由汇聚:

答:路由汇聚是指把一组路由汇聚为一个单个的路由广播。路由汇聚优点是可以缩小网络上的路由表的尺寸。

算法实现:

  • 将各子网地址的网段以二进制写出。
  • 比较,从第1位比特开始进行比较,将从开始不相同的比特到末尾位填充为0。由此得到的地址为汇总后的网段的网络地址,其网络位为连续的相同的比特的位数。

 

举例:

假设下面有4个网络:

复制代码

1

2

3

4

172.18.129.0/24

172.18.130.0/24

172.18.132.0/24

172.18.133.0/24

这四个进行路由汇聚,那么能覆盖这四个网络的汇总地址是:172.18.128.0/21

具体计算方式如下:

  • 129的二进制代码是10000001
  • 130的二进制代码是10000010
  • 132的二进制代码是10000100
  • 133的二进制代码是10000101

 

这四个数的前五位相同都是10000,所以加上前面的172.18这两部分相同的位数,网络号就是8+8+5=21。而10000000的十进制数是128,所以,路由汇聚的IP地址就是172.18.128.0。所以最终答案就是172.18.128.0/21

 

(4)子网掩码的求法:

答:笔试中关于子网掩码的求法一般考察下边的两种。

根据划分的子网数:

算法实现:在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。

  • 将子网数目转化为二进制来表示
  • 取得该二进制的位数,为 N
  • 取得该IP地址的类子网掩码,将其主机地址部分的前N位置1 即得出该IP地址划分子网的子网掩码。

 

举例:

如欲将B类IP地址168.195.0.0划分成27个子网,则其子网掩码为255.255.248.0

  • 27=11011
  • 该二进制为五位数,N = 5
  • 将B类地址的子网掩码255.255.0.0的主机地址前5位置1(B类地址的主机位包括后两个字节,所以这里要把第三个字节的前5位置1),得到 255.255.248.0

 

根据每个子网中的主机数:

算法实现:利用主机数来计算。

  • 将主机数目转化为二进制来表示
  • 如果主机数小于或等于254(注意去掉保留的两个IP地址),则取得该主机的二进制位数,为 N,这里肯定N<8。如果大于254,则 N>8,这就是说主机地址将占据不止8位。
  • 使用255.255.255.255来将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。

 

举例:

如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台,则其子网掩码为:255.255.252.0

  • 700=1010111100
  • 该二进制为十位数,N = 10
  • 将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255
  • 然后再从后向前将后10位置0,即为: 11111111.11111111.11111100.00000000
  • 即255.255.252.0。

 

总结:

本小节中,我们主要介绍了HTTP和HTTPS等相关知识点。在文章的最后,对于路由汇聚以及子网掩码的求法也做了简单的介绍,希望大家可以有效理解和掌握。下一小节中,我们将介绍关于Web安全的常见攻击方式,主要包括XSS攻击和CSRF攻击等。