网络相关知识

作者: huoshe2019 | 来源:发表于2019-10-19 22:15 被阅读0次
标题

一、HTTP

问题1:HTTP是什么?

  • HTTP是超文本传输协议。
  • 包含请求/响应报文(具体说出报文包含的字段)。

1.1、请求/响应报文

  • 请求报文

    请求报文
    注意:
    1、get请求没有实体主体。
    2、post请求实体主体。
  • 响应报文


    响应报文

问题2:HTTP的请求方式有哪些?

请求方式

问题3:GET和POST请求方式的区别?

答案1(比较初级):

答案1

高级答案:

高级答案

安全性解释:

安全性

幂等性解释:

幂等

可缓存性解释:

可缓存性

问题4:你都了解哪些状态码,它们的含义是什么?

状态码
  • 200:响应成功。
  • 301、302:网络重定向。
  • 401、404:客户端本身请求有问题。
  • 501、502:服务端本身有异常。

1.2、连接建立流程

tcp的三次握手四次挥手

tcp
HTTP请求是建立在TCP通道上的

三次握手:

  • 客户端发送一个同步报文
  • 服务端收到以后,发送给客户端一个同步确认报文
  • 客户端收到以后,向服务端发送一个确认报文

四次挥手:

  • 客户端发送一个终止报文
  • 服务端收到以后,发送给客户端一个确认报文

此时,由客户端服务端的连接断开了。
但是,服务端还可能向客户端发送数据。

  • 还需服务端客户端发送终止报文
  • 客户端服务端发送确认报文

问题5:HTTP连接建立流程?

  • 三次握手
  • HTTP请求报文和响应报文
  • 四次挥手

1.3、HTTP特点

  • 无连接
    指的是HTTP有一个建立连接释放连接的过程。
    通过HTTP持久连接方案,来解决无连接
  • 无状态
    指的是同一个用户发送多次HTTP请求,服务端是不知道是同一个用户的。
    通过Cookie/Session方案,来解决无状态

1.4、HTTP持久连接

非持久连接
  • 每发送一次HTTP响应,都要重新建立一个TCP通道,经历三次握手四次挥手
持久连接
  • 多个HTTP响应都在一个TCP通道上,只有经过一定时间才会重新建立一个新的TCP通道

1.5、HTTP持久连接头部字段

头部字段
  • Connection
    代表客户端期望持久连接
  • time
    代表持久连接持续时间
  • max
    代表持久连接允许的最多HTTP请求

问题6:怎样判断一个请求是否结束?

因为一个TCP上有多个HTTP请求,判断前一个是否结束很关键。


结束
  • Content-length
    响应报文的头部字段
    根据返回结果大小是否达到Content-length来判断。
  • chunked
    响应报文中的头部字段
    POST请求
    碰到为空,代表请求结束。

问题7:Charles抓包原理是怎么样的?

利用HTTP的中间人攻击漏洞来实现的。

中间人攻击

二、HTTPS与网络安全

2.1、HTTPS概念

HTTPS 层级
  • IP:网络层
  • TCP:传输层
  • HTTP:应用层
  • SSL/TLS:应用层下面、传输层上面

问题8:HTTPS连接建立流程是怎样的?

HTTPS
解释:
1、客户端向服务端发送:TLS版本号、支持的加密算法、随机数C
2、服务端向客户端发送:商定的算法、随机数S、server证书。
3、用服务端公钥 对客户端私钥进行加密,然后发送给服务端。
4、在服务端,服务端私钥 对客户端私钥进行解密。
5、之后HTTP请求就通过被非对称加密保护的对称秘钥展开了
备注:
客户端的秘钥是对称加密
服务端对对称秘钥的保护是通过非对称加密

会话秘钥

会话秘钥

问题9:HTTPS都使用了那些加密手段?为什么?

加密手段

2.2、非对称加密

非对称加密
  • 加密和解密用的是不一样。
  • 公钥加密、私钥解密
  • 私钥加密、公钥解密

2.3、对称加密

对称加密
  • 用同一个秘钥
  • 秘钥在网络传递过程中,被劫持了,就会造成安全隐患。
  • 非对称加密,只有公钥在网络中传输,私钥不传输,所以比较安全。

三、TCP/UDP

TCP/UDP

3.1、UDP(用户数据报协议)

问题10:你是否了解UDP协议?

从特点和功能方面回答。

3.1.1、特点
UDP协议特点
  • 无连接
    发送UDP数据报的时候,不需要事先建立好连接,也就没有释放连接的过程。
  • 尽最大努力交付
    不能保证可靠传输
  • 面向报文
    既不合并,也不拆分。就是有什么就传递什么
    面向报文
    解释:
    应用层的报文无论大小,直接全部作为传输层UDP用户数据报的数据部分,之后将UDP数据报作为IP数据报的数据部分。
3.1.2、功能
功能
  • 复用/分用
    复用
    复用

计算机数据传输是通过网络套接字(socket)。
网络套接字(socket)是IP地址与端口的组合。
一台电脑(同一个IP地址)有不用应用(不同端口号)。
但是不同的应用进行数据传输时,可以通过同一个UDP数据报,再经过IP层。

分用

分用
IP层接收了IP数据报数据,将数据拆分成UDP数据报,每个UDP数据报都包含有原端口目的端口,根据目的端口进行分发数据。
  • 差错检测


    差错检测
UDP头部

解释:
发送端UDP会对数据报文进行以下处理:

  • 以16位字为一个单元。
  • 按照二进制反码计算出这些16位字的和。
  • 和的二进制反码写入检验和位

接收方接收到数据报,再按照上述流程走一遍,如果和UDP首部的检验和位一致,则数据没有错误;反之,代表有错误。

UDP只能检测是否有错误,对恢复错误无能为力。

问题11:UDP是怎样进行差错检测的?

看上面图解!

补充:IM等通信软件,都是利用的是UDP用户数据报协议。

3.2、TCP(传输控制协议)

问题12:你是否了解TCP协议?

从特点和功能方面回答。

3.2.1、特点
TCP特点
1、面向连接
面向连接

问题13:为什么要进行三次握手?

三次握手
解释:
客户端发送一个同步报文丢失/超时,会造成新建一个TCP通道角度回答。回答步骤如下:
  1. 客户端发送同步报文超时了。
  2. 客户端启用超时重传机制,重新发送一个同步报文。
  3. 服务端收到第二次发送的报文,会发送给客户端一个确认报文如果是两次握手,至此TCP通道已经建立了。
  4. 客户端超时的报文,到达了服务端,服务端又会给客户端发送一个确认报文如果是两次握手,又建立一个TCP通道。

你看看是不是多建立了一个TCP通道,浪费!!!
通过三次握手就可以解决上述问题,当超时报文➡️服务端➡️客户端,此时客户端不给服务端发送确认报文,就不会新建一个TCP连接。

问题14:为什么要进行四次挥手?

四次挥手
解释:
从客户端到服务端建立的TCP通道是全双工的
全双工的概念:客户端可以给服务端发送和回复,服务端可以给客户端发送和回复。
所以需要双方都进行中断。
2、可靠传输

问题15:TCP是怎样保证可靠传输的?

通过停止等待协议实现的;有以下特点:

停止等待协议
  • 无差错情况(正常情况)

    无差错情况
    客户端➡️服务端报文,服务端➡️客户端确认报文
    一直循环下去。
  • 超时重传(服务端收不到报文)

    超时重传
    解释:
    1、由于网络环境比较差,客户端丢失/滞留了报文;或者报文被篡改了等等。会被服务端判定为有差错的报文。此时,服务端不会发送确认报文。
    2、客户端收不到确认报文,一定时间后,会重新发送报文。
  • 确认丢失(客户端收不到确认报文)

    确认丢失
    解释:
    1、服务端发送的确认报文,客户端没有收到。
    2、客户端启动超时重传,重新发送。
    3、客户端丢弃重传的报文,重新发送确认报文
    4、客户端收到确认报文,一切正常进行。
  • 确认迟到(服务端的确认报文迟到了)

    确认迟到
    解释:
    1、前面过程和确认丢失过程类似。
    2、收到迟到的确认报文什么也不做。
3、面向字节流
面向字节流
解释:
发送方发送给TCP的字节,会被拆分成不同的字节进行发送,而不是有多少发送多少,由TCP决定。
4、流量控制

基于滑动窗口协议来完成的。

滑动窗口协议
解释:
由于接收方的接收窗口/接收缓存,没有那么大;此时,通过由接收方向TCP报文首部字段中更改窗口值,发送方解析出来后,调整发送窗口大小,从而达到流量控制

简单理解就是:接收方通过告知发送方,自己当前缓存区的大小情况,让发送方减少或增大发送量。

问题16:什么是滑动窗口协议?你是怎么理解的?

见上图解。

5、拥塞控制

1、两个策略


概念 拥塞控制
解释:
1、横轴代表交互次数、纵轴代表窗口值大小。
2、开始,先发送一个报文,如果没有发生网络拥塞;接着,发送两个报文,如果还没有发生网络拥塞,就以指数规律成倍发送报文。
3、增长到窗口门限值后,会采用拥塞避免的策略,采用线性增长
4、当增长到一定值时,发生了网络拥塞,采用拥塞避免乘法减小的策略,来恢复到只发送一个报文。 同时,把拥塞窗口门限值降为原来的一半
5、此时,从新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始

问题17:请简单描述TCP慢启动的特点?

慢开始、拥塞避免角度回答。
见上图解。

问题18:TCP的快恢复、快重传?

新的门限值位置开启拥塞避免的策略,采用线性增长;而不会重新慢开始

四、DNS解析

4.1、概念

DNS解析
解释:
DNS解析特点:UDP数据报明文

问题19:你是否了解DNS解析?

见上图解

4.2、解析过程

解析过程
  • 客户端通过DNS协议DNS服务器进行域名解析
  • DNS服务器返回解析出来的IP地址
  • 客户端根据IP地址发送网络请求。

4.2、DNS解析查询方式

问题20:DNS解析查询方式?

查询方式
  • 递归查询
    含义:我去给你问一下

    递归查询
  • 迭代查询
    含义:我告诉你谁可能知道

    迭代查询

4.2、DNS存在问题

问题21:DNS解析存在哪些常见的问题?

DNS问题
  • DNS劫持
    DNS劫持
    解释:
    因为DNS请求采用UDP数据报文,且是明文。很容易被劫持的。

问题22:DNS劫持与HTTP的关系是怎样的?

关系
  • DNS解析转发
    DNS解析转发
    解释
    通俗来讲,你用的电话卡是移动的,此时进行DNS查询的时候,会去移动的DNS服务器去查询。但是这个移动的DNS服务器为了节约资源,转发到电信的DNS服务器,此时就形成了DNS解析转发。

4.3、怎样解决DNS劫持

解决
  • httpDNS
    httpDNS
    解释
    不产生正常的DNS解析了,就不会产生DNS解析的问题了。

示例图如下:

httpDNS解析图
  • 长连接
    长连接
    这里的长连Server指的是代理服务器。

五、Session / Cookie

5.1、作用

HTTP协议无状态特点的补偿。

图解

5.2、Cookie

5.2.1、Cookie概念

问题23:Cookie的概念?

Cookie的概念

Cookie整个流程

流程

客户端和服务端设置Cookie

设置Cookie

问题24:怎样修改Cookie?

修改Cookie

问题25:怎样删除Cookie?

删除Cookie
备注
删除Cookie:覆盖+ 设置过期时间等

问题26:怎样保证Cookie的安全?

安全

5.3、Session

5.3.1、Session概念

问题27:Session的概念?

Cookie的概念

问题28:Session和Cookie的关系怎样?

  • 区别
    Session存在服务端,Cookie存在客户端
  • 联系
    Session需要依赖Cookie机制。

5.3.2、Session工作流程

流程

六、网络整体总结

题目

问题29:TCP和UDP有什么区别?

1、特点不同
TCP

TCP

UDP

UDP

2、功能
TCP
提供了流量控制拥塞控制

UDP
只提供了复用/分用差错检测基本功能。

其它答案:见上文。

相关文章

  • 网络相关知识

    前言 主要是参考其他人写的文章,做一个手抄记录,加深印象,后面都会附上原文链接。 1、 DNS介绍篇(原文(htt...

  • 网络相关知识

    计算机基础知识掌握TCP和HTTP相关知识即可。 这是一份详细 & 清晰的计算机网络基础 学习指南计算机网络:这是...

  • 网络相关知识

    一,常用协议与端口 FTP 文件传输协议,20传输数据,21控制telnet 远程控制协议 23smtp 简单...

  • 网络相关知识

    虽然一直在做开发,但对于网络知识了解还不是太深,做下笔记方便以后查阅 一、http的介绍 http 超文本传输协议...

  • 网络相关知识

    一、HTTP 问题1:HTTP是什么? HTTP是超文本传输协议。 包含请求/响应报文(具体说出报文包含的字段)。...

  • 网络相关知识

    IP 地址与路由控制 IP地址的网络地址这一部分是用于进行路由控制。 路由控制表中记录着网络地址与下一步应该发送至...

  • Socket网络相关知识

    Socket网络相关知识 端口号(用来定位程序),有效端口065535其中01024是被系统使用或者保留的端口. ...

  • 前端知识:网络相关

    OSI 七层模型与 TCP/IP 五层模型 OSI 七层模型:物理层、数据链路层、网络层、传输层、会话层、展示层、...

  • 网络爬虫相关知识

    2019年12月19日 一.爬取数据 二.使用urllib爬取数据 1.获取静态数据 2.获取动态数据 http:...

  • 网络存储相关知识

    目前高端服务器使用的专业网络存储技术大概分为四种,有DAS、NAS、SAN、iscsl,它们可以使用RAID阵列提...

网友评论

    本文标题:网络相关知识

    本文链接:https://www.haomeiwen.com/subject/bmfvmctx.html