计网面经整理

这篇博客详细梳理了计算机网络中的应用层协议,重点讨论了HTTP与HTTPS的差异,包括版本演变、安全性对比、工作流程。还介绍了输入网址后的网络通信过程,GET和POST方法的区别,以及常见的HTTP状态码。此外,提到了DNS域名解析、FTP、TCP粘包问题和运输层的TCP与UDP特性。
摘要由CSDN通过智能技术生成

1. 应用层

1.1 http超文本传输协议

如何避免服务器没有反应:保证服务器的稳定性,如果服务器没反应就认为服务器挂了,可以新建起一个服务器运行这部分服务的代码

1.1.1 http版本
  1. http/0.9 只有GET命令,只支持纯文本内容
  2. http/1.0 任何形式的内容都可以发送,不只是文字,包括了图像、视频、二进制文件等;引入了POSTHEAD命令;http请求和回答的格式改变,除了数据部分,没次通信都必须包含头信息,用来描述一些元数据
  3. http/1.1 主流http,引入了持久链接,TCP链接默认不关闭,可以被多个请求复用;引入了管道机制,在同一个TCP连接里,客户端可以同时发送多个请求,进一步改进了http协议的效率;新增了PUTPATCHOPTIONSDELETE方法;http协议不带有所有状态,每次请求都需要附上所有信息,请求的很多字段都是重复的,浪费带宽,影响速度。

http/1.x 问题

  1. 在数据传输时,所有传输都是明文传输,无法保证数据的安全性;
  2. 1.1版本允许复用TCP链接,但是同一个TCP链接里,所有的数据通信是按次序进行的,服务器只有处理完一个回应才会处理下一个回应;
  3. http/1.x 支持了keepalive,来弥补多次创建链接产生的延迟,但是keepalive使用多了同样会给服务端带来大量的性能压力。
  1. http/2.0 二进制协议,头信息和数据体都是二进制;复用TCP链接,在一个连接里客户端和浏览器都可以同时发送多个请求或回应,且不需要按照顺序一一对应,避免了对头堵塞(多工);允许服务器未经请求主动向客户端发送资源(服务推送);引入头部信息压缩机制
1.1.2 http与https

HTTP 超文本传输协议,但是HTTP是以明文方式发送内容,不提供任何方式的数据加密。端口号80

HTTPS 为了改进HTTP的不安全的明文传输,在HTTP基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS协议的主要作用分为两种:一种建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTPSWeb服务器通信时步骤:

  1. https发送链接请求,要求与Web服务器建立SSL链接

  2. Web服务器收到客户端请求后,会将网站的证书信息(证书中的信息包含公钥)传送一份给客户端

  3. 客户端与Web服务器商量SSL链接的安全等级,也就是信息加密的等级

  4. 根据双方的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站

  5. Web服务器解析出密钥,并利用密钥与客户端通信

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JvbR0w0T-1616860497961)(C:\Users\23585\Desktop\TyporaWorkSpace\2012071410212142.gif)]

HTTPHTTPS的区别

  1. https协议需要ca申请证书,一般免费证书比较少,需要收费
  2. http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议
  3. httphttps使用的是完全不同的链接方式,默认端口也不一样,前者是80,后者是443
  4. http的连接很简单,是无状态的;https是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http安全
1.1.3 输入网址回车后发生了什么
  1. DNS解析
  2. 建立TCP连接
  3. 浏览器发送http请求
  4. 服务器发送http响应
  5. 浏览器解析渲染页面
    1. 浏览器显示HTML
    2. 浏览器想服务器发送求情获取嵌入在HTML中的对象
    3. 浏览器发送异步AJAX请求
  6. 关闭TCP连接
1.1.4 get方法与post方法
  1. 一般来说get是获取数据的,post是提交数据的
  2. get传输数据的时候是在url中进行传输的,对所有人可见,是不安全的、有浏览器缓存记录的;post传输的时候是放在请求体之中的,并且经过urlencode编码的,所以相对安全
  3. get只能传输ASCII,不能进行编码;post没有数据类型限制,二进制数据也可以
  4. 实际上HTTP并没有对get和post方法的长度进行限制,但是get受浏览器对url长度的限制,post受服务器配置或者内存大小限制
  5. get比post快,post执行过程是,三次握手、收到服务器100continue相应、发送数据、收到200成功;get过程是,三次握手、收到200成功。所以get比post少了一次数据传输
  6. get是获取数据的所以get请求安全,不会对数据造成影响,无论多少次得到的资源都是一样的;post是想服务器传输数据,数据会被重新提交,会对原有数据造成伤害
1.1.5 http状态码

1xx:请求正在处理

2xx:请求正常处理完毕

3xx:需要进一步操作

4xx:客户端请求出错

5xx:服务器出错

常见状态码

​ 100:部分请求已接收,客户端应该继续发送请求的剩余部分

​ 200:表示成功接受请求,并返回请求的结果

​ 202:表示服务器已经接受请求,但是还没有处理,而且这个请求最终会不会处理还不确定

​ 204:表示服务器成功处理了请求,但没有反回任何实体内容,可能会返回新的头部元素

​ 301:客户端请求的页面已经永久移动到新的位置,并告诉客户端新的连接

​ 404:请求失败,客户端请求的资源没有找到或者不存在

​ 500:服务器产生未知错误

​ 503:由于服务器在维护或是过载,无法解决当前请求

1.2 DNS域名解析协议

本机想本地域名服务器查询通常采用递归查询;本地域名服务器向更高级的域名服务器查询时采用迭代查询

为什么不采用TCP,减轻网络压力,并且TCP传输需要建立连接释放连接,建立和释放连接的过程显然没有没要,UDP端口号53,用来将域名转化为IP地址

1.3 FTP文件传输协议

1.4 TELNET远程终端协议

1.5 DHCP动态主机配置协议

2. 运输层

2.1 TCP

2.1.1 TCP粘包问题

tcp粘包:就是指发送方发送的若干数据到接收方时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包的数据的尾

本质产生原因:tcp协议是面向字节流的,应用层协议没有定义消息的边界导致数据的接收方无法拼接数据

产生情况:

  1. tcp连接复用造成的粘包问题
  2. Nagle算法导致的粘包问题
  3. 数据包过大导致的粘包问题
  4. 流量控制、拥塞控制也可能导致粘包
  5. 接收方不及时接收缓冲区的包,造成多个包接收

解决方法:

  1. 发送方解决,关闭Nagle算法
  2. 应用层解决,尾部添加结束标记;发送数据定长

2.2 UDP与TCP的关系

  1. tcp面向连接的,udp面向无连接的

  2. tcp面向字节流的,udp面向报文的

  3. tcp提供可靠的传输服务,保证数据按序、无差错、不丢失、无重复到达;udp尽最大努力交付。

    tcp的可靠传输靠检验和,确认与重传机制,序号标识,流量控制,拥塞控制

  4. tcp链接是端到端的服务,udp支持一对一、一对多、多对一、多对多的通信

  5. tcp对系统资源要求多,udp对系统资源要求少

2.3 UDP的可靠传输

udp协议在运输层无法实现可靠传输,可以在应用层来实现,具体可以参考tcp在运输层的流量控制,拥塞避免,窗口和确认重传等机制

2.4 运输层攻击

  1. TCP攻击

    1. SYN Flood攻击

      发送大量SYN报文,服务器收到并发送SYN+ACK报文,但是此时不发送ACK报文,服务器一直处于半连接状态,直到超时。

    2. SYN-ACK Flood攻击

      假冒服务器发送大量SYN-ACK报文到目标攻击网络,如果网络有依靠会话转发网络,降低该网络设备处理性能

    3. ACK Flood攻击

      链路拥塞、消耗依赖于会话转发设备性能、造成服务器处理性能耗尽,拒绝正常服务

    4. FIN/RET Flood攻击

      原理跟ACK一样

    5. TCP连接耗尽攻击

      不断建立连接、释放连接,占用服务器的TCP连接资源

    6. TCP分片攻击

      网络设备或服务器收到大量的TCP分片报文,会进行重组,导致网络设备或服务器的性能降低

    7. TCP异常报文攻击

      随即组合TCP标志位,发送非法TCP,对主机造成危害

  2. UDP攻击

    1. UDP Flood攻击

      发送大量伪造UDP报文来拥塞链路,消耗设备和服务器性能

    2. UDP分片攻击

      攻击者向攻击目标发送大量的UDP分片报文,与TCP分片一样

网络层

数据链路层

MTU最大传输单元,也就是IP数据报的长度,结点只转发小于等于MTU长度的ip数据报,否则就要进行分片,如果不允许分片,那么报文就被丢弃,一般设置为1500

物理层

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值