IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络知识点集合 -> 正文阅读

[网络协议]网络知识点集合

1、网络划分

(1)局域网

局域网,某个小范围组建的网络,内部可以传输数据;
典型代表:家用路由器;

(2)广域网

广域网:多个局域网构建的大型网络;
公认的广域网,一般是通过网络运营商提供的网络服务来进行网站访问的;

能否访问到对应主机,使用Ping命令来检验;

能够Ping通,说明能够访问!

在这里插入图片描述


2、网络通信

(1)IP地址

1. 概念:IP地址是指互联网协议地址,又译为网际协议地址;
2. 格式:IP地址是一个32位的二进制数,通常被分割为48位二进制数(也就是4个字节),常用 点分十进制表示,即 a.b.c.d格式(a,b,c,d都是0~255之间的十进制整数);

3. 作用:用于标识网络中唯一的一台主机;

4. 组成:网络号 + 主机号

  • 网络号:用来标识网段,保证相互连接的两个网段具有不同的标识;
  • 主机号:用来标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

通过合理设置 网络号主机号,就可以保证在相互连接的网络中,每台主机的IP地址都是唯一的,那么,如何划分网络号和主机号呢

IP地址分类A~E 五类

从上到下表示,A类,B类,C类,D类,E类,如下图所示
在这里插入图片描述

各类地址的表示范围

在这里插入图片描述

注意

  • 局域网IP是内部才可以使用(内部唯一),不同的局域网IP可能重复;
  • 广域网IP是全局唯一;
  • 本机IP127.0.0.1

特殊IP

IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网;
IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;

上述分类中,存在IP地址浪费的问题,因此,为了避免浪费,引入了 子网掩码

子网掩码:与IP地址格式相同,也是32位二进制数;其中,左边为网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边为主机位,用二进制数字“0”表示,0的数目等于主机位的长度;

作用

  • 划分A,B,C三类IP地址子网;
  • 网络通信时,子网掩码结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分子网后的主机号),一般用于判断目的IP与本IP是否为同一个网段;下面为计算方式:

计算方式

  • IP 地址和子网掩码进行“按位与”操作,得到的结果就是网络号;
  • 将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号;

(2) MAC地址

  1. 作用:用来标识网络设备的硬件物理地址;
  2. 网络通信,即网络数据传输,本质上是网络硬件设备来传输数据,硬件要发送数据到另一个硬件上,只认识硬件的物理地址(MAC地址);
  3. 主机有一个或多个网卡(多数情况只使用一个网卡);
    (如使用WiFi就是使用无线网卡来接收发送数据;使用网线,就是用有线网卡来接收发送数据);
  4. 一个网卡具有全球唯一的MAC地址(出厂时设置好)

IP地址 VS MAC地址

IP地址:标识整个路途的起点与终点,供用户使用的逻辑地址;
MAC地址:标识每一跳的起点与终点,供网络硬件设备使用的物理地址

网络数据传输是一跳一跳的传输过程,如下简单所示:
在这里插入图片描述

对于从B到F,源MAC就是主机BMAC,目的MAC就是路由器FMAC

特殊的MAC地址

  • 广播数据报的MAC地址为: FF:FF:FF:FF:FF:FF

(3)端口号

  1. 作用:用于标识主机中的进程;
  2. 格式:端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送和接收网络数据;

(4)网络协议

网络协议:网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则;(如怎么样建立连接、怎么样互相识别等),只有遵守这个约定,计算机之间才能相互通信交流。
通常由三要素组成
(1)语法:数据与控制信息的结构或格式(如规定公共场所使用普通话);
(2)语义:需要发出何种控制信息,完成何种动作以及做出何种响应;
(3)时序:事件实现顺序的详细说明,先干什么,再干什么…

协议最终体现为在网络上传输的数据包的格式!

知名协议的默认端口

系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号;

  • 80端口http 协议
  • 443端口https 协议
  • 22端口ssh 协议

(5)五元组

TCP/IP协议中,用五元组来标识一个网络通信

五元组包括

  1. IP:标识源主机;
  2. 源端口号:标识源主机中该次通信发送数据的进程;
  3. 目的IP:标识目的主机;
  4. 目的端口号:标识目的主机中该次通信接收数据的进程;
  5. 协议号:标识发送进程和接收进程双方约定的数据格式;

类似于发快递:

在这里插入图片描述
查看五元组信息

  • windowsnetstat -ano | findstr 过滤字符串
  • linuxnetstat -anp | grep 过滤字符串

3、网络分层两种方式

网络分层的好处:便于扩展和维护

两种划分方式

方式1: OSI七层模型

从低到高分别有(从下到上):

  1. 物理层:网络/WiFi传输 0,1 数据
  2. 数据链路层:识别数据帧
  3. 网络层:地址与路由选择
  4. 传输层:确保数据传输的可靠性
  5. 会话层:建立会话
  6. 表示层:接收端的展示方式
  7. 应用层:应用程序所处的分层

特点:并没有实际落地,属于理论上的模型;

方式2: TCP/IP五层(四层)模型

从低到高分别有:

分层代表硬件设备或软件代表协议
物理层网线、电磁波、集线器传输 0 ,1数据
数据链路层交换机以太网帧,ARP(介于网络层与数据链路层的协议)
网络层路由器IP协议
传输层主机(操作系统)UDPTCP协议
应用层应用程序HTTPHTTPSSMTP(邮电协议)

网络设备所在分层

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于集线器,它只实现了物理层;

注意点

  1. 这里的交换机和路由器是传统意义上的,也称为二层交换机,三层路由器;
  2. 网络通信时,经过的所有网络设备,不同的设备在相同的网络分层,都需要使用一致的协议;

4、封装和分用

  • 封装

发送数据时,需要把数据包装成某个协议的格式,再发送;(一个网络设备,按从高到低的顺序,使用对应分层的协议来进行包装数据);

下图为数据封装的过程:

在这里插入图片描述

  • 分用

接收数据时,需要把数据按照某个协议格式来解析,再使用;
(一个网络设备,按从低到高的顺序,按对应分层的协议解析,使用数据)
过程与封装相反;


5、网络设备

(1)集线器

在这里插入图片描述

集线器是工作在物理层的网络设备,发送到集线器的任何数据,都只是简单的将数据复制并转发到其他所有端口

(2)交换机

在这里插入图片描述

交换机:内部维护了一个MAC地址转换表(每一台主机与交换机相连时,交换机就纪录主机的MAC和连接的端口),MAC地址转换表:记录主机MAC地址与端口的映射关系

发送数据报时,发送端主机都需要先根据网络分层从上到下封装(从高到低),如下所示:

在这里插入图片描述

如果封装到数据链路层,不知道目的MAC,怎么办?

解决方案:以广播的方式,发送数据到其他所有主机(此时是知道目的IP的),此时目的IP的主机再返回自己的MAC地址给交换机(如,在群里找人聊天);

发送数据时,分两种情况:

  • 情况1:同一个网段:下一跳的过程就是目的主机;

  • 情况2:不同网段(知道目的ip,不知道目的MAC):需要发送数据到网关设备(通常的网关设备是路由器);

因此,首先需要判断发送端主机(源主机)与接收端主机(目的主机)是否属于同一网段

判断方式:使用子网掩码
(1)子网掩码+源ip 就是源主机的网络号
(2)子网掩码+目的ip 就是目的主机的网络号
(3)判断 源主机网络号=目的主机的网络号,相等就是一个网段,否则就不是;

(3)主机&路由器

主机与路由器中包含一种技术:ARP缓存表

ARP缓存表作用纪录IP地址与MAC地址的映射关系

使用场景:

  • 源主机与目的主机不在同一个网段,使用源主机中的ARP缓存表(通过网关的IP找网关的MAC);
  • 源主机与目的主机在同一个网段,也可以使用源主机中的ARP缓存表(通过目的主机IP找目的主机MAC);

路由器

  • (1)路由器具有一个wan口(连接公网,具有公网IP);
  • (2)路由器搭建了一个局域网,但具有多个不同网段(这些不同网段的主机,处于一个局域网),由路由器多个LAN口来划分;

此时,当源主机发送数据到目的主机时,有以下三种情况

(1)源主机与目的主机处于同一网段

(2)源主机与目的主机处于同一个局域网,但不同网段

(1)(2)两种情况,使用ARP缓存表就可以找到目的主机(通过目的IP找对应的MAC地址);

(3)源主机与目的主机处于不同的局域网(公网上的其他主机)

此时路由器也可能不知道目的IP的主机在哪里,就需要NAPT技术转换局域网IP和端口为路由器公网IP和端口;

路由功能:规划路线(路由器中存在一个路由表,纪录IP和坐标点,用于计算目的IP的最短路径);

路由器小结

  • (1)划分子网(一个局域网,划分为不同网段);
  • (2)ARP缓存表:纪录路由器所在的局域网所有主机的IPMAC地址;
  • (3)具有wan口,绑定公网IP,目的主机不在局域网内,使用NAPT技术,将源IP和端口从局域网主机的转换为路由器公网的IP和端口;
  • (4)路由功能:如果目的IP是公网主机,通过路由功能就能够计算出那个方向更近;

补充:冲突域与广播域

冲突域:同一时间,多台主机同时发送数据,如果产生冲突,这个范围就是冲突域;

表现

  • 集线器:所有端口构成一个冲突域;
  • 交换机:一个端口构成一个冲突域;

广播域:发送广播数据报(MAC地址全为FF),能到达的范围; 表现:

  • 集线器:所有端口处于一个广播域;
  • 交换机:所有端口处于一个广播域;
  • 路由器:LAN口(不同网段),隔离广播域;

6、网络套接字

套接字分类:

  • 流套接字:传输层使用TCP协议
  • 数据报套接字:传输层使用UDP协议
  • 原始套接字:传输层协议自定义

Java编程时,应用层协议自定义(以上三个)!


7、广域网数据传输流程<?>

应用层重点协议:DNS协议,全球DNS服务器/DNS缓存,构成了一个树形结构(多个根节点,每个根节点就是一棵树);

DNS协议:通过域名找IP(从下到上来查找)

因为IP地址不方便记忆,且不能表达地址组织信息,于是就有了域名,可以通过域名系统来映射域名和IP地址;

如在浏览器地址栏输入URL(www.baidu.com),就会有以下步骤过程

步骤过程1:

通过DNS协议,查找 www.baidu.com 这个域名对应的IP地址;

步骤过程2:

  • 源主机:从上到下封装

首先需要判断下一跳设备是那个?

方法:通过子网掩码计算,目的主机与源主机是否处于同一网段?
如果是同一网段,下一跳设备就是目的主机;
如果不是同一网段,下一跳设备就是网关路由器;
然后,需要设置目的MAC为下一跳设备的MAC(此时源MAC为源主机的MAC)

如何设置目的MAC?
基于本机ARP缓存表,通过网关IP查找MAC地址;

  • 交换机接收到数据报:转发到目的MAC对应的端口(路由器相连的端口),此处是基于交换机的MAC地址转换表,通过MAC找端口;

步骤过程3: 路由器接收到数据报

路由器接收到数据报,做以下事情:

  1. 先从下到上分用:物理层到网络层(路由器是工作在下三层);
  2. 基于NAPT协议,将源IP和源端口号(局域网源主机的IP和端口)修改为路由器公网的IP和端口;
  3. 基于路由功能,根据目的IP,计算出下一跳设备是那个设备,且到目的主机的方向那个更近;

2,3步骤目的IP不在路由器局域网内,路由器也不知道这个主机在哪;

  1. 从上到下封装:修改源IP为路由器公网IP,源端口为路由器公网端口;修改源MAC为路由器的MAC,目的MAC为下一跳设备的MAC

步骤过程4: 路途中经过的其他多个设备

与步骤过程3类似

步骤过程5:目的主机接收到数据报

目的主机接收到数据报,需要做以下事情:

  1. 从下到上分用:

分用到网络层:目的IP 与我的一致,就再次分用;
分用到传输层:根据目的端口将数据报交给对应端口的进程(如tomcat)来处理;
分用到应用层:tomcat程序根据应用层HTTP协议来进行解析;
此时的数据报:

  • IP:路由器公网IP
  • 源端口:路由器端口
  • 目的IP:目的主机IP
  • 目的端口:目的主机tomcat端口
  1. tomcat 处理请求
  2. tomcat返回响应

返回响应时,从上到下封装,再发送数据到起点(先发送数据给路由器,路由器查找局域网内的主机,将数据发送给对应主机);

此时数据报:

  • IP:百度服务器IP

  • 源端口:百度服务器进程的端口

  • 目的IP:路由器的公网IP

  • 目的端口:路由器的端口

小结

  • 局域网:集线器相连

步骤

(1)源主机:从上到下封装;
(2)集线器转发数据报到其他所有端口;
(3)目的主机:从下到上分用;

  • 局域网:交换机相连

步骤

(1)源主机:从上到下封装;
(2)交换机转发数据报到对应的一个端口;
基于下一跳设备的MAC,通过交换机中MAC地址转换表,查找对应端口;
(3)目的主机:从下到上分用;

  • 局域网,交换机+路由器(一个局域网,跨网段)

步骤

(1)源主机:从上到下封装,到链路数据层,发现主机源IP与目的IP 处于不同网段时(子网掩码计算而来),此时,下一跳的设备就要设置为网关设备(目的设备设置为网关设备,即就是网关路由器),采用本机ARP缓存表通过网关IP查找MAC

(2)路由器
先分用:获取目的IP
再封装:修改源MAC,目的MAC
(3)目的主机:从下到上分用;
其中,从源主机到网关设备(路由器),涉及有

  • 目的IP:目的主机的IP
  • MAC:源主机的MAC
  • 目的MAC:路由器的MAC

其中,从网关设备(路由器)到目的主机,涉及有

  • 目的IP:目的主机的IP
  • MAC:路由器的MAC
  • 目的MAC:目的主机的MAC
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:40:35  更:2022-04-15 00:41:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:37:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码