美文网首页
计算机网络知识总结

计算机网络知识总结

作者: Rachel_雷蕾 | 来源:发表于2020-11-03 15:28 被阅读0次

作为程序员,不论在大学还是在工作中,网络这个词是再熟悉不过了,作为移动端的一枚开发者,平时写业务需求,请求数据都要使用网络,那还记得网络的知识点么,今天就来回顾一下:

一、网络的基础知识

计算机网络:可以根据规模分WAN,Wide Area Network 广域网,和LAN局域网。通过电脑连接交换机再到路由器的连接。
TCP/IP机制:它是TCP/IP通信协议的统称。我们常听到协议入IP,TCP,HTTP等协议,记住:TCP/IP就是IP,TCP,HTTP等协议的集合。协议就是计算机与计算机之间通过网络实现通信时需要达成的一种的“约定”。这些协议就是让不同厂商的设备,不同的CPU和不同的操作系统组成的计算机之间进行通信

image.png
HTTPS:其实HTTP协议是承载于TCP协议之上的,在HTTPTCP之间添加一个安全协议层SSL或者TSL(ssl/tsl协议传输,包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等),则就是常说的HTTPS
它是面向连接的,可靠的,基于字节流传输层通信协议。

从一个HTTP请求来看网络分层原理


image.png

二、HTTP

HTTP方法
  • GET方法获取资源:请求获取Request-URI所标识的资源
  • POST方法传输资源:在Request-URI所标识的资源后附加新的数据
  • PUT方法更新资源
  • DELETE方法删除资源
  • HEAD方法获得报文首部
  • OPTIONS方法,用来跨域请求(OPTIONS 请求与 HEAD 类似,一般也是用于客户端查看服务器的性能)
  • CONNECT方法,用来建立连接,用于代理服务器

getpost的差别
缓存角度:GET请求后浏览器会主动缓存POST 默认情况下
参数角度: GET请求一般放在URL中,因此不安全POST请求放在请求体中,相对而言较为安全,但是在抓包的情况下都是一样的。
编码角度: GET请求只能进行URL编码,只能接受ASCII码,而POST支持更多的编码类型对数据类型限值
GET请求幂等,POST请求不幂等,幂等指发送 M 和 N 次请求(两者不相同且都大于1),服务器上资源的状态一致。

HTTP报文组成

1、请求报文:请求方法 ,请求URL,HTTP协议以及版本,报文头,报文体

  • 请求行:有请求方法,请求URL,http协议以及版本;
  • 请求头:一堆键值对
  • 空行:当服务器在解析请求头的时候,遇到了空行,表明后面的内容是请求体
  • 请求体:请求数据

2、响应文:报文协议以及版本,状态码以及状态描述,响应头,响应体

  • 状态行:http协议和版本,状态码以及状态描述
  • 响应头
  • 空行
  • 响应体


    image.png

3、持久连接
在http1.0中,客户端每隔很短时间会对服务器发出请求,查看是否有新的数据,只要轮询足够快,就可以造成交互实时进行,但这个做法,会对两端造成大量的性能浪费
对于http1.1中的长连接,使用connection:keep-alive进行长连接,客户端请求一次,但是服务器会将继续保持连接,再次请求时,避免重新建立连接
注意,keep-alive不会永久保持连接保持一个时间段。

4、HTTPS协议:由于HTTP天生“明文”的特点,整个传输过程完全透明,任何人都能够在链路中截获,修改或者伪造请求、响应报文,数据具有可信性。
使用HTTPS时,所有的HTTP请求和响应发送到网络前,都要进行加密。

image.png
https = http + ssl/tls

TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。

对称加密:加密 解密使用同一密钥

非对称加密:公钥-随意分发,私钥-服务器自己保持

公钥加密的数据,只能通过私钥解密
私钥加密的数据,所有公钥能解密(公钥都可以解开,指的是一对秘钥)
公钥可以发送给所有的客户端,私钥只保存在服务器端

5、URL统一资源定位符,URL的结构:


image.png

6、HTTP状态码
302:临时重定向
400:笼统地提示了错误
403:服务器禁止访问
405:请求方法不被服务器端允许
500:服务器报错
501:客户端请求的功能还不支持
503:服务器当时很忙,暂时无法响应服务

「1xx」: 代表请求已被接受,需要继续处理。
「2xx」: 表示成功状态。
「3xx」: 重定向状态。
「4xx」: 客户端错误。
「5xx」: 服务器端错误。

7、Accept字段理解


image.png
  • 数据格式
  • 压缩方式
  • 支持语言
  • 字符集

8、TCP和UDP的区别
TCP是一个面向连接可靠基于字节流传输层协议。

UDP是一个面向无连接的传输层协议。

TCP是面向连接的,客户端和服务器端的连接,双方互相通信之前,TCP需要三次握手建立连接,而UDP没有建立连接的过程

HTTPS请求过程

image.png
  • Client发起一个HTTPS请求,连接443端口。这个过程可以理解成是「请求公钥的过程」。
  • Server端收到请求后,通过第三方机构私钥加密,会把数字证书(也可以认为是公钥证书)发送给Client。
  • 浏览器(客户端)安装后会自动带一些权威第三方机构公钥,使用匹配的公钥对数字签名进行解密。
    根据签名生成的规则对网站信息进行本地签名生成,然后两者比对。
    通过比对两者签名,匹配则说明认证通过,不匹配则获取证书失败。
  • 在安全拿到「服务器公钥」后,客户端Client随机生成一个「对称密钥」,使用「服务器公钥」(证书的公钥)加密这个「对称密钥」,发送给Server(服务器)。
  • Server(服务器)通过自己的私钥,对信息解密,至此得到了「对称密钥」,此时两者都拥有了相同的「对称密钥」。‘
  • 接下来,就可以通过该对称密钥对传输的信息加密/解密啦,从上面图举个例子👇

Client用户使用该「对称密钥」加密'明文内容B',发送给Server(服务器)
Server使用该「对称密钥」进行解密消息,得到明文内容B。

  • 为了防止中间人截取、修改公钥,需要「第三方认证」,最重要的是「数字签名」,避免了获取的公钥是中间人的

数字签名:将网站的信息,通过特定的算法加密,比如MD5,加密之后,再通过服务器的私钥进行加密,形成「加密后的数字签名」。
浏览器会去安装一些比较权威的第三方认证机构的公钥,比如VeriSign、Symantec以及GlobalSign等等。验证数字签名的时候,会直接从本地拿到相应的第三方的公钥,对私钥加密后的数字签名进行解密得到真正的签名。然后客户端利用签名生成规则进行签名生成,看两个签名是否匹配,如果匹配认证通过,不匹配则获取证书失败。

相关文章

  • 面试基础知识

    计算机网络 计算机网络知识总结 2018/2019/校招/春招/秋招/算法/机器学习(Machine Learni...

  • 连肝7个晚上,总结了计算机网络的知识点!(共66条)

    前言 计算机网络知识,是面试常考的内容,在实际工作中也常常会涉及到。 最近总结了66条计算机网络相关的知识点,大家...

  • 计算机网络基础

    转自大佬博客: [Network] 计算机网络基础知识总结 - Poll的笔记 - 博客园

  • 【计算机网络1】分层模型

    这里总结一下计算机网络的分层模型,用于回顾计算机网络相关知识。 层次结构 OSI七层模型 TCP/IP四层模型 五...

  • 写给大忙人看的计算机网络参考模型

    @TOC 前言 冷月最近在学习谢仁希老师的《计算机网络》,为此将自己所学的知识点总结出来和大家分享。计算机网络这门...

  • 了解计算机网络原理知识(总览)

    作为一名程序猿,基础自然非常重要,那么就在这里总结一下计算机网络原理的一些知识,和大家一起探讨学习 计算机网络的应...

  • 计算机网络学习(一)

    前言:今天学习了下计算机网络基础知识,下面对这些基础知识做一下总结和归纳,方便自己的理解和记忆,便于今后的复习。 ...

  • 计算机网络系列之计算机网络学习入门攻略

    序言 在前面总结完了C语言系列,现在来总结一下计算机网络的知识,这部分我准备不会向C语言那样只找重点来讲,而是想要...

  • HTTP知识

    HTTP知识 [TOC] 1.计算机网络各层基础 计算机网络各层: 计算机网络各层作用: 2. HTTP简介 HT...

  • 自顶向下 | 带你遨游网络层

    前言 网络层的知识点非常繁多,本文仅是基于《计算机网络 自顶向下》而总结的一些重点知识点,如果想要详细了解网络层的...

网友评论

      本文标题:计算机网络知识总结

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