测试 -- 网络基础知识一站详细

网络基础知识

阅读目录

1. OSI七层模型及数据传输
2. 网络层协议- 重点协议 -- ARP、IP、路由协议
3. 传输层重点协议 -- TCP、UDP
4. 应用层重点协议 -- Http、Https
5. Http和Https 协议的区别`

一: OSI七层模型及数据传输

目的: 推荐所有公司使用这个规范来控制网络

最开始的目的: 使用统一标准实现两台机器互联 --> 发展后: 实现多台机器互联
image 目前行业IT比较常用的 image

OSI七层模型解析

应用层: 定义了各种应用协议规范数据格式: HTTP协议、HTTPS协议、FTP协议、NDS协议

表示层

  1. 操作系统 -- windows、MACOS、Linux 等语法是不一样的,不用系统之间通信
  2. 提供翻译工作,提供一种公共语言、进行通信

会话层

  1. 可以从校验点继续恢复数据进行重传 -- 大文件
  2. 自动收发,自动寻址的功能

传输层

发数据很多,数据包很大,需要很长时间,中间网络中断,重传? 数据包时完整正确的?

  1. 对发送数据进行封装 -- TCP协议、UDP协议, 一个一个按顺序依次发送
  2. 两个应用程序(QQ -- QQ)?? -- 定义端口的盖帘,进行数据的处理

网络层

两主机之间通信, 有很多路径? 怎么选择最优? 怎么知道复方的MAC地址?

  1. 怎么知道对方的MAC地址 -- ARP(address resolution protocol), 通过IP地址知道MAC
  2. 判断选择最优路径: 一组协议 -- 路由协议、静态路由、动态路由(RIP、OSPF、BGP)

数据链路层

  1. 比特流进行处理: 分组-- 8位为一组 -- 1个字节 依次发送数据 -- 称为帧
  2. MAC地址: 网卡 -- 唯一的
    image 寄件人地址(源MAC地址) + 收件人地址(目的地址)

物理层

  1. 互联物理链路: 物理介质 -- 网线(双网线),光纤,无线电波 -- 基本链接
  2. 通信形式: 010101 二进制 -- 电信号 -- 比特流(网络里的称呼)

例子

image
image

二 网络层重点协议 -- ARP、IP、路由协议

ARP协议

概念: 地址解析协议,实现通过对方的IP地址(域名) 寻找到对方的MAC地址

工作原理: image image

IP协议

概念: 分配给用户上网使用国际协议的设备的数字标签,分为两大类: IPV4 和IPV6

IPV4:
32位 -- 二进制: 1(128)1(64)000000.10101000.00000001.00000001(2的0次方)
        对应的十进制: 192.168.1.1 --- 十进制(4个部分)

IPV6:
弥补 IPV4地址池不够
有128位 --  更多IP地址,  十六进制表达:2001::ffdd:abcd:dcdf --- 了解

IP地址组成: IP地址由32位bit组成,十六进制表达:2001::ffdd.abcd.dcdf -- 了解

结构: IP地址 = 网络号 + 主机号

  1. 网络号: 网络号标识的是一个子网
  2. 主机号: 主机号标识的是 子网中的某一台主机
  3. 在一个网段,网络号相同 == 子网是同一个
子网掩码:
用于确定两台主机是否在同一个子网,从而实现直接通信
(如下图所示)
作用: 用来表示子网,必需跟IP地址一起存在
组成: 子网掩码和IP地址一样,是由连续的1和0组成
       连续的 1 表示网络地址
       连续的 0 表示主机地址
注意: 只有网络地址相同的主机在同一个子网,才能直接通信
表示方式:  255.255.255.0
二进制:11111111.11111111.11111111.00000000
image
image

例子:

192.168.1.87  255.255.255.0  -- 机器1
192.168.2.77   255.255.255.0-- 机器2
机器1 和 机器2   他们能直接通信么?

答案: 要判断它们是否在同一个子网,我们可以比较它们的IP地址的网络部分(即子网掩码为255的位)。对于机器1和机器2,它们的网络部分分别是:

机器1的网络部分:192.168.1.x(其中x可以是1到254之间的任意数字) 机器2的网络部分:192.168.2.x(其中x同样可以是1到254之间的任意数字) 由于机器1的网络部分是192.168.1.x,而机器2的网络部分是192.168.2.x,它们的网络部分不同,这意味着它们不在同一个子网中。

路由协议(不在一个子网,实现通信)

概念: 指定数据包转送方式的网上协议,是一组协议

一组协议:

  1. 静态路由: 搭建测试环境 --- 目的地址,指定下一跳是哪里 -- 默认路由(特殊的静态路由 == 主机 -- 默认网关)
  2. 动态路由协议 (RIP、OSPF、BGP) -- 配置后,动态学习路由条目 -- 路由表
  3. 主机: 通过默认网关 --- 做详细的路由选择 -- 自带路由表

cmd中查找路由: 在cmd中输入:route print image 网关:在链路上 -- 表示直连状态

三: 传输层重点协议 -- TCP、UDP

TCP -- 传输控制协议,就是要对数据的传输进行一定的控制

TCP协议头部组成结构: image

  1. 序号: sequence number编号 -- TCP数据包过大,分段(10段:1,2,3...) -- 按顺序重组 seq==1
  2. 确认号: acknowledge number -- 服务器能够回应? -- 存在于确认消息里, 跟序号有什么关系? -- 依据序号, ak(确认号) == 1+1 =2 -- seq+1 <-- 表示服务器期望收到的下一个包的序号
  3. 状态控制码 code control flag: 标志位 -- 信号灯 1--亮,0--灭

ACK--ackonwledge: 确认位=1 表示这个消息是确认消息

TSR-- REST: 重置 =1 表示这个消息释放连接,TCP连接出现错误 -- 主机服务器奔溃、断开连接、请重新连接

SYN--synchronous: 同步=1 表示这个消息是: 1-- 一个发起连接的消息; 2-- 确认接收连接消息

FIN -- final: 终止=1 表示发送报告结束了完毕了, 释放这个链接 -- 意味着TCP四次握手开始了

实现原理过程

概念: http、https 协议是基于TCP协议上作用的 -- 例如: 百度网页 -- 先TCP协议进行交互和连接,然后再通过htttp和 https协议交互

TCP协议连接: image image

第一次:  请求消息   --  标志位 SYN = 1 ; seq = j
第二次: 确认消息 -- 标志位 ACK=1, SYN= 1 ;ack(确认号) =  j+1 , seq = k
第三次: 标志位: ACK  = 1 ACK(确认号) = k+1
后续 -- 数据发送报文

TCP断开连接,TCP四次握手 image image

第一次:释放连接请求   标志位 FIN = 1 seq=n
第二次: 确认消息  标志位 ACK= 1 ack(确认号) = n+1 
第三次: 释放连接请求  标志位 FIN = 1  seq = m
第四次: 确认消息  标志位 ACK = 1  ack (确认号) = m +1 

UDP协议

image
image
UDP协议不会建立连接  ===  无连接传输协议
丢包、出错  是被允许的
速度快、资源消耗小
使用场景:
1、不需要可靠机制,只要求速度快  --- UDP协议
2、流媒体、多媒体游戏、IP电话

四: 应用层重点协议 -- HTTP -- 超文本传输协议

注意: HTTP协议是基于TCP协议, 默认端口是80 -- 可靠的协议

功能: 用来规定客户端和服务端的数据传输格式

特点: 基于请求与响应模式的,无状态、无连接的应用层协议

http协议存在的问题: 发送数据都是明文的,第三者窃听、截取数据包、伪装成客户端 -- 无法确定双方身份, 存在数据被篡改

请求与响应模式

请求消息包含四个部分: 请求行、 请求头部、 空一行 -- 格式、请求头部结束,请求体(注意: get请求 没有请求体)

HTTP请求方法:
  GET -- 请求读取URL所标识的信息
  POST -- 给服务器发送数据
  HEAD -- 请求读取由URL所标识的信息的首部
  PUT -- 在指明的URL下存储一个文档 -- restful -- 替换资源
  DELETE -- 删除指明的URL所标识的资源
  CONNECT -- 用于代理服务器
  OPTION -- 请求一些选项的信息
  TRACE -- 用来进行环回测试的请求报文
HTTP请求头:
  User-Agent -- 产生请求的客户端类型 -- windows、 浏览器版本(内核)
  Accept -- 客户端可识别的内容类列表
  Host -- 请求的主机名,允许多个域名同一处IP地址,即虚拟主机
  Accept-Encoding -- 客户端使用的编码环境和编码方式
  Accept-Language -- 客户端语言环境
  Accept-Charset -- client接收的字符集
  Authorization -- 授权信息, 一般用于存放授权之后的信息
  Authorication -- 时客户端提供给服务器,进行权限认证的信息
  connection -- 表示是否需要持久连接
  Content_Length -- 表示请求数据正文的长度
  *cookie -- 与服务器做交互的,存储保持会话的重要信息 -- login(用户名 + 密码)
  Refer -- 表示该次请求的来源,一般用于做防盗链
  Content - Type -- 传给服务器的内容的格式,请求体的内容类型 如: application/x-www-form-urlencoded
  Content-control -- 缓存机制: CAche-control: no chach
  Pragma -- 防止页面被缓存,和CAche- control: no chach 一样
image
image

响应报文: 响应行 + 响应头部 + 空一行 + 响应正文

状态码:
  1xx -- 接收的请求正在被处理
  2xx -- 请求正常被处理完毕 例:200
  3xx -- 重定向: 例:302、304 缓存 --- 没有改动,不处理
  4xx -- 客户端的问题导致的报错, 例: 网址错误 404
  5xx -- 服务器问题  例: 503

附录: HTTP服务器响应码定义:

响应头:
  Server -- http服务器的软件信息
  Data -- 响应报文的时间
  Expires -- 指定缓存过期时间
  *Set- Cookies -- 设置cookies, 服务器返回的文本
  Last-modify -- 资源最后修改时间
  Content- type -- 响应的类型和字符集: content-type :  text / html   charset = utf-8
  Content-length -- 内容长度
  Connection -- 一般都是Keep-alive , 保持TAP连接不关闭,但是不会长久保持连接,服务器可设置
  Location -- 指明重定向的设置, 新的URL地址
  

image image

无协议链接应用协议

概念:

  1. 限制每次链接只能处理一个请求
  2. 服务器处理完客户的请求,并收到客户的应答后,即断开链接
  3. 涉及初衷: 解决 用户量(十万、上百万)页面的请求,单个用户间接性大(突发性、瞬时性),数据没有关联性 -- 资源浪费 <== 设计: 释放链接

问题

网页越来越复杂,-- 图片 -- 效率很低 === connection: keep alive(目的: 保持长链接) keep-Alive 设置

  1. 开启: connection: keep-alive,会发起keep-alive的链接请求-- 长连接
  2. 关闭: 在http头中设置 Connection:即可关闭
  3. 设置连接时间: 在http header 中设置 Keep-Alive: timeout=5, max= 1000 (timeout是超时时间,单位: 秒, 超过这个时间后就断开链接 -- 释放

max 是最多的链接此时,若超多这个次数就强制断开链接)

无状态引用协议

概念:

  1. 对事物处理没有记录能力,服务器不知道客户端是什么状态: 给服务器发送Http请求之后,服务器回应之后,不会有任何记录
  2. 每个请求都是独立的
  3. 服务器处理后续请求 -- 前面的请求需要重传
  4. 优点: 释放了服务器压力 缺点: 重传 -- 重读内容 ,增大数据量 -- 浪费资源

例子:

动态交互: 淘宝--购物车--商品信息: login -- 后续操作(充值) === cookies、session

Cookies:
  将前面请求信息保存成一个临时文件 -- cookies值 -- 存放在浏览器中
  关闭浏览器时,会被删除、清楚历史 === 清除cookies
  例如: 淘宝购物车--不同商品信息写进cookies
  例如:登录 -- 充值: login -- 充值 可以把登录的账号信息写进cookie -- cookie值
  
Session:
  永久的cookies值,session ID (会话编号) --- 保存在服务骑上 -- 传递给客户端,保存在内存里
  问题: 出现资源占用的情况:
  解决: 设置session超时时间,超时则清楚session ID

五:应用层重点协议 -- HTTPS -- 超文本传输安全协议

概念:

超文本传输安全协议, 是以安全为目的HTTP通道,是HTTP的安全版,其加数据加密并确保其机密性,可保护用户在与网站交互时免于被窃取个人信息和计费数据

特点:

  1. 加密、数据密文
  2. 身份认证
  3. 防止信息被篡改 -- 完整性
  4. *默认端口号:443

综上: 披着SSL外衣的HTTP协议 -- SSL协议来实现 === HTTP + 加密 + 身份认证 + 完整性保护 ==> HTTPS

HTTPS结构
image
image
HTTPS工作原理

image image

1. 客户请求建立SSL链接,并将自己支持的一套加密规则发送给服务器
2. 网站从中选出一组加密短发与HASH算法,并将自己的身份信息以证书的形式发回给浏览器,证书里面包含了网站地址,加密公钥,以及证书的颁发机构等  ---- 一对钥匙: 公钥 -- 公布 -- 加密; 私钥 -- 私有 -- 解密的
3. 获得网站证书之后浏览器要做一下工作:
  1、验证证书的合法性 -- 服务器身份: 如证书受信任,浏览器会生成一串随机数密码,并用证书中提供的公钥加密
  2、把密码发送网站
  3、告诉网站后续报文要加密了 -- 捂手结束
4. 网站接收浏览器发来的数据之后要做一下操作:
  1、使用自己的公将信息解密取出密码 -- 加密了
  2、告诉客户端后续报文要机密了,握手结束

HTTP 和 HTTPS 的对比

image
image

本文由 mdnice 多平台发布

  • 32
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周承森

敲键盘不易~ 给点鼓励~ 感恩

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值