网络基础
Posted 九月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络基础相关的知识,希望对你有一定的参考价值。
网络基础
协议栈 TCP/IP( Transmission Control Protocol /Internet Protocol)
- TCP/IP模型与OSI参考模型的共同之处是:他们都采用了层次结构的概念,在传输层定义了相似的功能,但是二者在层次划分与使用的协议上是有很大差别的,也正是这种差别对两个模型的发展产生的两个截然不同的局面,OSI属于国际意义上的协议,TCI/IP属于实际人们用到的协议。
OSI参考模型与TCP/IP模型对照图
OSI参考模型 | TCP/IP模型 | |
---|---|---|
应用层 | --------> | 应用层 |
表示层 | --------> | 应用层 |
会话层 | --------> | 应用层 |
传输层 | --------> | 传输层 |
网络层 | --------> | Internet层 |
数据链路层 | --------> | 数据链路层 |
物理层 | --------> | 物理层 |
用户发送数据时发送方每层都会依次给数据进行封装,接受方收到时会依次解封装查看数据是否完整。就好比寄快递自己要给快递封装一下,快递员也会给快递封装一层包装,收件人会依次拆开包装才能看到快递。这种封装称为“HDR=报头”
应用层:网络进程访问层,直接与人打交道,
- 为应用程序进程 例如:电子邮件、文件传输和终端仿真,提供网络服务
- 提供用户身份验证
表示层:数据表示
- 确保接受系统可以读出该数据
- 格式化数据
- 构建数据
- 协商用于应用层的传输语法
- 提供加密
会话层:主机之间通信
- 建立管理和终止在应用程序之间的会话
传输层:(单位为“段”)传输问题
- 确保数据传输的可靠性
- 建立、维护和终止虚拟电路
- 通过错误检查和恢复
- 信息流控制来保障可靠性
网络层:(单位为“包”)数据传输
- 路由数据包
- 选择传递数据的最佳路径
- 支持逻辑寻址和路径选择
数据链路层:(单位为“帧”)访问介质
- 定义如何格式化数据以便进行传输以及如何控制对网络的访问
- 支持错误检测
物理层:(单位为“比特 bit”)二进制传输
- 为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范和功能规范
三次握手四次挥手
建立TCP数据传送链接需要三次握手才能建立,而断开连接则需要四次握手。(画图会比较直观,原谅我画图废柴)
三次握手 建立连接
发送方和接受方默认处于CLOSED关闭状态
-
建立第一次握手:
- client将标志位SYN(发起一个新链接)=1,随机产生一个值seq(序号)=x,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
-
第二次握手:
- Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK(确认序号有效)都置为1,ack=x+1,随机产生一个值seq(序号)=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
-
第三次握手:
-
Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
-
双方此时处于EXTAB-LISHED 已建立连接模式
四次挥手 解除连接
发送方和接受方默认处ESTAB-LISHED建立连接状态
-
第一次挥手:
- Client发送一个FIN(释放一个连接)=1和seq=u,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1(终止等待状态)状态。
-
第二次挥手:
- Server收到FIN后,发送一个ACK=1给Client,确认序号ack=u+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
-
第三次挥手:
- Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
-
第四次挥手:
-
Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号ack=w+1,Server进入CLOSED状态,完成四次挥手。 Client进入TLME-WAIT 时间等待2MSL 。
-
双方进入CLOSED状态
以上只是模拟大概挥手过程,有些情况下会有例外。
IP地址
-
每台主机(计算机、网络设备、外围设备)它们可唯一标识网络中的每台设备,相当于每个人的身份证,必须具有唯一性。
-
IP地址由两部分组成
- 网络ID
- 标识网络
- 每个网段分配一个网络ID
- 主机ID
- 标识单个主机
- 由组织分配给各设备
- 子网掩码
- 标识网络位位数
- 网络ID
-
IP地址为32位二进制数,可将32位二进制数划分为四组8位二进制八位数,每组二进制八位数(或字节)均可转换为十进制数,转换结果就是平时人们见到的样子。
-
公式
- 32位IP=网络ID+主机ID
- 一个网络中IP数量=2^主机位ID-2
- 网络ID值=IP “于”子网掩码
- 子网数=2^(网络ID位数) 损失IP数=(2^n-1)*2
划分子网:将一个大网划分成多个小网,网络ID向主机ID借n位,意味着划分成2^n个子网 由于网络细分的情况太严重,为了担心路由信息过于庞大导致网络效能不佳,有的时候我们反而把网络位借给主机位
划分超网:将多个小网合并成一个大网,主机ID向网络ID借n位
IP分类
- A:特征 0开头 前8位网络ID 1-126
- B:特征10开头 前16位网络ID 128-191
- C:特征110开头 前24位网络ID 192-223
子网掩码
子网掩码是一个32位的地址,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
IP:172.16.0.100/16 转换为二进制
二进制IP:10101100.00010000.00000000.01100100
子网掩码:11111111.11111111.00000000.00000000
网络ID:10101100.00010000.00000000.00000000
网络ID转换为十进制:172.16.0.0
二进制转换一个不麻烦的小公式
1 0 0 0 0 0 0 0 = 128
1 1 0 0 0 0 0 0 = 192
1 1 1 0 0 0 0 0 = 224
1 1 1 1 0 0 0 0 = 240
1 1 1 1 1 0 0 0 = 248
1 1 1 1 1 1 0 0 = 252
1 1 1 1 1 1 1 0 = 254
1 1 1 1 1 1 1 1 = 255
以上是关于网络基础的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段14——Vue的axios网络请求封装
[vscode]--HTML代码片段(基础版,reactvuejquery)