OSI七层网络模型
是ISO组织在1985年研究的网络互连模型。 目的就是推荐所有公司使用这个规范来控制网络,这样所用公司就有相同的规范,就能**互联**了。--- 互联网
- 实现两台机器互联,机器与机器间如何通信?(需求, 引入物理层)
- 物理层 .
- 互联物理链路,物理介质。网线(双绞线),光纤,无线电波—基本的连接。
- 形式存在—0101二进制,电信号(比特流)
- 物理层 .
- 010101比特流是没有含义的数据,如何变成有意义的数据?且知道数据发送到什么地方?(引入数据链路层)
- 数据链路层
- 比特流进行处理:分组。8位为一组(1个字节),依次顺序发送数据—帧
- MAC地址。网卡(类似身份证),唯一的。寄信人地址(源MAC地址) + 收信人地址(目的地址)
- 数据链路层
- 主机间通信的最优路线?以及如何知道收信方的MAC地址?(引入网络层)
- 网络层
- 获知MAC地址? —
ARP(address resolution protocol), 通过IP地址知晓MAC
。 - 判断是否在一个子网? — IP协议
- 怎么选择最优路径? — 组协议。路由协议。静态路由协议、动态路由协议(RIP, OSPF ,BGP)
- 获知MAC地址? —
- 网络层
- 发送的数据很多,数据包大。需要多长时间?中间网络中断、重传?数据包是完整的、正确的?(引入传输层)
- 传输层
- 对发送数据进行封装。— TCP协议,UDP协议,一个个按顺序依次发送
- 两个应用程序(QQ-Weixin) — 定义端口的概念,寻找到对应应用程序。进行数据的处理。
- 传输层
- 断点续传功能(引入会话层)
- 会话层
- 可以从校验点继续恢复数据进行重传。 — 大文件
- 自动收发、自动寻址的功能。
- 会话层
- 操作系统,win10、MACOS、linux,语法是不同的,不同系统间的通信(引入表示层)
- 表示层
- 翻译工作。提供一种公共语言,用于通信。
- 表示层
- 字节流的格式、不好识别,不好操作(引入应用层)
- 应用层
- 定义了各种应用协议规范数据格式:HTTP协议、HTTPS协议、FTP协议、DNS协议、TFTP、SMTP协议等。
- 应用层
TCP/IP四层模型 VS ISO七层模型
1. 把七层模型的应用层、表示层、会话层合并为TCP/IP的应用层中。
2. 七层模型中的数据链路层和物理层合并为TCP/IP的数据链路层。
3. 传输层和网络层,是重要的就没有变化。
4. 各层的原先相关协议没有变化,就是模型的划分发生了变化。
ARP协议
地址解析协议(Address Resolution Protocol), 实现通过对方的IP地址(域名) 寻找对方的MAC地址。
- ARP协议的工作流程(主机A与B间的通信)
- 主机A先看自己的ARP表,如果找到了主机B的MAC 地址 ,则直接对IP数据包进行帧封装,发送给主机B
- 如果主机A在ARP表中找不到主机B的MAC地址 ,则缓存数据报文, 以
广播
方式发送一个一个ARP请求报文 。报文中带着源IP地址和源MAC地址.(主机A)
,目标IP地址(广播的地址)和目标MAC地址为主机B的IP地址和全0的MAC地址
。该网段上的所有主机都可以接收到该请求, 但只有被请求的主机(主机B)会对请求进行处理。 - 主机B比较自己的IP地址和APR请求报文中的目标IP地址 , 当两者相同时进行以下处理:
- 将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中 。
- 之后以
单播
方式发送ARP响应报文给主机A,其中包含自己的MAC地址。
- 主机A收到ARP响应报文后, 将主机B的MAC地址加入到自己的ARP表中 ,用于后续报文的转发 , 同时将IP数据包进行封装后发送出去。
IP协议
IP(Internet Protocol), 分配给用户上网使用网际协议的设备的数字标签。分为IPV4(32位)和IPV6 。
IPV6 : 弥补IPV4地址池不够---数量有限 。128位,更多的地址.
- IP地址:
- 32bit , 4段并用. 如192.168.0.1
- IP地址 : 网络号(标识的是一个子网) + 主机号(子网中的某个主机)
- 子网掩码
- 作用: 用来标识子网 ,必须跟IP地址一起存在。
- 组成: 子网掩码和IP地址一样。连续的1 表示网络地址 , 连续的0表示主机地址。 只有网络地址相同的主机在同一个子网 , 才能直接通信。
- 实际上是IP地址与掩码进行逻辑位运算
- 路由协议(Route protocol) , 一组协议(静态、动态…)
- 指定数据包转送方式的网上协议
- 静态路由: 目的地址 —
指定下一跳
— 默认路由(0.0.0.0.0.0.0.0 — 匹配所有) - 动态路由协议(RIPv1v2 , OSPF , BGP): 配置后 , 动态学习路由条目 — 路由表 。
TCP协议
HTTP,HTTPS协议: 基于TCP协议 。 TCP协议的交互连接: 前提HTTP,HTTPS协议交互
序号(sequence number。seq) : TCP数据包过大,分段传输 ,按顺序重组。
确认号(acknowledge number。) : 服务响应的确认信息。与序号的关系,ack = seq +1 .表示服务器响应,客户端下次要发送的序列号。
状态控制码(code control flag):控制客户端与服务器端的状态(关闭、建立连接等状态).
表示标志位的信号灯 1---亮 , 0 ---灭 (表示数据包的类型)
ACK , 确认位 = 1 ,表示这个信息是一个确认信息。
RST-RESET: 重置 =1 ,表示这个信息释放连接 (TCP连接错误---主机服务器崩溃,断开连接。请重新建立连接。)
SYN(synchronous) : 同步 =1 ,表示这个信息是 :一个发起连接的消息 + 确认接受连接消息。
FIN(Final) 。终止 =1 ,表示发送报文结束了,释放这个连接。
- TCP三次握手(连接) 与 TCP四次挥手(断开连接)
UDP协议
特征点 | TCP | UDP |
---|---|---|
是否连接 | 面向连接(TCP三次握手) | 面向非连接 |
传输可靠性 | 可靠(有可靠的连接机制) | 会丢包、不可靠 |
应用场景 | 传输数据量大 | 传输量小 |
速度 | 慢 | 快 |
HTTP协议(Hyper Text Transfer Protocol)
- 基于TCP协议,默认是
80端口
— 可靠的协议 - 功能:
用于规定客户端和服务器的数据传输格式
- 特定: 基于请求与响应模式的、无状态的应用层协议。
- 无状态应用协议:
- 对事物处理没有记忆能力,服务器不知道客户端是什么状态;给服务器发送HTTP请求之后,服务器回应之后,不会有任何记录;
- 每个请求都是独立的。
- 解决方法(引入Cookies 、 Session)
- 问题: 发送数据是明文的;第三者会窃听,截取数据包 , 伪装客户端 。存在安全的隐患。
请求方法(请求行中有)
请求头
响应头
HTTPS协议
HTTP | HTTPS | |
---|---|---|
安全性 | 明文传输、易受攻击,无法确认双方身份,也无法保证数据的完整性—安全性低 | 使用SSL加密协议,信息是密文。可以用于验证双方的身份,防止信息被截取、纂改 — 安全性高。 |
TCP端口 | TCP80端口 | TCP 445端口 |
灵活度 | 简单快速、使用灵活 | 技术门槛高,多数个人或私人网站难以支撑。 |
速度 | 协议简单,HTTP服务器的应用程序规模小,因而通信速度快 | 加重了服务器的负担,需要更多的资源来支撑,降低了用户的访问速度。 |
经济 | 没有额外的费用要求 | CA机构颁发的证书都是要年费的。此外 对接HTTPS协议也需要额外的技术支持 |