网络基础知识
阅读目录
1. OSI七层模型及数据传输
2. 网络层协议- 重点协议 -- ARP、IP、路由协议
3. 传输层重点协议 -- TCP、UDP
4. 应用层重点协议 -- Http、Https
5. Http和Https 协议的区别`
一: OSI七层模型及数据传输
目的: 推荐所有公司使用这个规范来控制网络
最开始的目的: 使用统一标准实现两台机器互联 --> 发展后: 实现多台机器互联
目前行业IT比较常用的
OSI七层模型解析
应用层: 定义了各种应用协议规范数据格式: HTTP协议、HTTPS协议、FTP协议、NDS协议
表示层:
-
操作系统 -- windows、MACOS、Linux 等语法是不一样的,不用系统之间通信 -
提供翻译工作,提供一种公共语言、进行通信
会话层:
-
可以从校验点继续恢复数据进行重传 -- 大文件 -
自动收发,自动寻址的功能
传输层:
发数据很多,数据包很大,需要很长时间,中间网络中断,重传? 数据包时完整正确的?
-
对发送数据进行封装 -- TCP协议、UDP协议, 一个一个按顺序依次发送 -
两个应用程序(QQ -- QQ)?? -- 定义端口的盖帘,进行数据的处理
网络层:
两主机之间通信, 有很多路径? 怎么选择最优? 怎么知道复方的MAC地址?
-
怎么知道对方的MAC地址 -- ARP(address resolution protocol), 通过IP地址知道MAC -
判断选择最优路径: 一组协议 -- 路由协议、静态路由、动态路由(RIP、OSPF、BGP)
数据链路层:
-
比特流进行处理: 分组-- 8位为一组 -- 1个字节 依次发送数据 -- 称为帧 -
MAC地址: 网卡 -- 唯一的
寄件人地址(源MAC地址) + 收件人地址(目的地址)
物理层:
-
互联物理链路: 物理介质 -- 网线(双网线),光纤,无线电波 -- 基本链接 -
通信形式: 010101 二进制 -- 电信号 -- 比特流(网络里的称呼)
例子

二 网络层重点协议 -- ARP、IP、路由协议
ARP协议
概念: 地址解析协议,实现通过对方的IP地址(域名) 寻找到对方的MAC地址
工作原理:
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地址 = 网络号 + 主机号
-
网络号: 网络号标识的是一个子网 -
主机号: 主机号标识的是 子网中的某一台主机 -
在一个网段,网络号相同 == 子网是同一个
子网掩码:
用于确定两台主机是否在同一个子网,从而实现直接通信
(如下图所示)
作用: 用来表示子网,必需跟IP地址一起存在
组成: 子网掩码和IP地址一样,是由连续的1和0组成
连续的 1 表示网络地址
连续的 0 表示主机地址
注意: 只有网络地址相同的主机在同一个子网,才能直接通信
表示方式: 255.255.255.0
二进制:11111111.11111111.11111111.00000000

例子:
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,它们的网络部分不同,这意味着它们不在同一个子网中。
路由协议(不在一个子网,实现通信)
概念: 指定数据包转送方式的网上协议,是一组协议
一组协议:
-
静态路由: 搭建测试环境 --- 目的地址,指定下一跳是哪里 -- 默认路由(特殊的静态路由 == 主机 -- 默认网关) -
动态路由协议 (RIP、OSPF、BGP) -- 配置后,动态学习路由条目 -- 路由表 -
主机: 通过默认网关 --- 做详细的路由选择 -- 自带路由表
cmd中查找路由: 在cmd中输入:route print 网关:在链路上 -- 表示直连状态
三: 传输层重点协议 -- TCP、UDP
TCP -- 传输控制协议,就是要对数据的传输进行一定的控制
TCP协议头部组成结构:
-
序号: sequence number编号 -- TCP数据包过大,分段(10段:1,2,3...) -- 按顺序重组 seq==1 -
确认号: acknowledge number -- 服务器能够回应? -- 存在于确认消息里, 跟序号有什么关系? -- 依据序号, ak(确认号) == 1+1 =2 -- seq+1 <-- 表示服务器期望收到的下一个包的序号 -
状态控制码 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协议连接:
第一次: 请求消息 -- 标志位 SYN = 1 ; seq = j
第二次: 确认消息 -- 标志位 ACK=1, SYN= 1 ;ack(确认号) = j+1 , seq = k
第三次: 标志位: ACK = 1 ACK(确认号) = k+1
后续 -- 数据发送报文
TCP断开连接,TCP四次握手
第一次:释放连接请求 标志位 FIN = 1 seq=n
第二次: 确认消息 标志位 ACK= 1 ack(确认号) = n+1
第三次: 释放连接请求 标志位 FIN = 1 seq = m
第四次: 确认消息 标志位 ACK = 1 ack (确认号) = m +1
UDP协议

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 一样

响应报文: 响应行 + 响应头部 + 空一行 + 响应正文
状态码:
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地址
无协议链接应用协议
概念:
-
限制每次链接只能处理一个请求 -
服务器处理完客户的请求,并收到客户的应答后,即断开链接 -
涉及初衷: 解决 用户量(十万、上百万)页面的请求,单个用户间接性大(突发性、瞬时性),数据没有关联性 -- 资源浪费 <== 设计: 释放链接
问题
网页越来越复杂,-- 图片 -- 效率很低 === connection: keep alive(目的: 保持长链接) keep-Alive 设置
-
开启: connection: keep-alive,会发起keep-alive的链接请求-- 长连接 -
关闭: 在http头中设置 Connection:即可关闭 -
设置连接时间: 在http header 中设置 Keep-Alive: timeout=5, max= 1000 (timeout是超时时间,单位: 秒, 超过这个时间后就断开链接 -- 释放
max 是最多的链接此时,若超多这个次数就强制断开链接)
无状态引用协议
概念:
-
对事物处理没有记录能力,服务器不知道客户端是什么状态: 给服务器发送Http请求之后,服务器回应之后,不会有任何记录 -
每个请求都是独立的 -
服务器处理后续请求 -- 前面的请求需要重传 -
优点: 释放了服务器压力 缺点: 重传 -- 重读内容 ,增大数据量 -- 浪费资源
例子:
动态交互: 淘宝--购物车--商品信息: login -- 后续操作(充值) === cookies、session
Cookies:
将前面请求信息保存成一个临时文件 -- cookies值 -- 存放在浏览器中
关闭浏览器时,会被删除、清楚历史 === 清除cookies
例如: 淘宝购物车--不同商品信息写进cookies
例如:登录 -- 充值: login -- 充值 可以把登录的账号信息写进cookie -- cookie值
Session:
永久的cookies值,session ID (会话编号) --- 保存在服务骑上 -- 传递给客户端,保存在内存里
问题: 出现资源占用的情况:
解决: 设置session超时时间,超时则清楚session ID
五:应用层重点协议 -- HTTPS -- 超文本传输安全协议
概念:
超文本传输安全协议, 是以安全为目的HTTP通道,是HTTP的安全版,其加数据加密并确保其机密性,可保护用户在与网站交互时免于被窃取个人信息和计费数据
特点:
-
加密、数据密文 -
身份认证 -
防止信息被篡改 -- 完整性 -
*默认端口号:443
综上: 披着SSL外衣的HTTP协议 -- SSL协议来实现 === HTTP + 加密 + 身份认证 + 完整性保护 ==> HTTPS
HTTPS结构

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

本文由 mdnice 多平台发布