【Linux】网络基础知识

网络相关基础知识前置


一、计算机网络发展背景

网络发展背景:单机—>多用户远程操作—>网络

  1. 独立模式:计算机之间相互独立。
    在这里插入图片描述
  2. 网络互联:多台计算机连在一起,完成数据共享。
    在这里插入图片描述
  3. 局域网LAN:计算机数量变多,通过交换机和路由器连接在一起。
    在这里插入图片描述
  4. 广域网WAN:将远隔千里的计算机连接到一起。
    在这里插入图片描述

局域网 :小范围(1000m以内)内的私有网络,如一个家庭内的网络、一个公司内的网络、一个校园内的网络。
广域网:覆盖范围在20km以内,把不同地域的局域网互相连接起来的网络。运营商搭建广域网实现跨区域的网络互连。
中继器:进行信号的放大,在信号传输的时候是有距离限制的,在传输过程中信号是不断衰减的,中继器在中间起到将信号进行放大来进行发送的过程。其端口只有两个,即输入端和输出端,将输入的信号进行放大再发送出去。
集线器:端口更多的中继器。一个机器发送进来的消息进行广播给所有的设备。网络中数据很多,如果每台机器都进行发送,那么效率就很低。
交换机:端口更多,且支持广播,组播,单播。
路由器:对数据进行路由选择,对数据发送给哪一台设备,发送到哪个网络中去进行路径规划。

二、网络协议

1 何谓协议

协议:实际上就是一种“约定”,就是网络通信中的数据约定,不同的主机必须遵循相同的网络通信协议栈才可以实现实质通信。

计算机之间的传输媒介是光信号和电信号,通过频率和强弱来表示0和1这样的信息,要想传递各种不同的信息,就需要规定好双方传输的数据格式。
而计算机的生产厂商、操作系统、网络硬件设备等都有很多,如何确保不同厂商生产的计算机之间能够顺畅的互相通信,故而就产生了一个大家都共同遵守的标准,即为网络协议。
ISO 制定了一个国际标准 OSI ,其中的 OSI 参考模型常被用于网络协议的制定。

2 协议分层

为何要协议分层呢?
在这里插入图片描述
如上,要使两用户能够顺畅地进行沟通,就得遵循同一种协议;而使用工具的不同,远程沟通的两人得将自身的信息转化成光电信号进行发送给对方,以便对方可进行数据的接收。
网络中分层有:OSI七层模型、TCP/IP五层(四层)模型。

3 OSI七层模型

  1. OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
  2. 把网络从逻辑上分为了7层,每一层都有相关相对应的物理设备,比如路由器,交换机。
  3. OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输。
  4. 优点:将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
  5. 缺点:复杂,不实用。

在这里插入图片描述在这里插入图片描述

4 TCP/IP五层(四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇,TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求 。

  1. 物理层
    负责光/电信号的传递方式。
    典型协议:以太网协议(与组网技术有关)。典型设备:集线器。
    比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。
    物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。
  2. 数据链路层
    负责数据之间数据帧的传送和识别。
    典型协议:ETH协议(以太网协议,内部描述了相邻设备的Mac地址)。典型设备:交换机。
    例如网卡设备的驱动帧同步(即从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作,有以太网、令牌环网,无线LAN等标准。
    交换机(Switch)工作在数据链路层。
  3. 网络层
    负责地址管理和路由选择。
    典型协议:IP协议(内部描述了源端IP和对端IP)。典型设备:路由器。
    例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。
    路由器(Router)工作在网路层。
  4. 传输层
    负责两台主机之间的数据传输。
    典型协议:TCP、UDP(内部描述了源端端口和对端端口)。
    如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  5. 应用层
    负责应用程序间的沟通。
    典型协议:HTTP、SSH、SMTP、FTP等。
    如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,网络编程主要就是针对应用层。
    在这里插入图片描述

实际上TCP/IP五层模型,是将OSI七层模型中应用层,表示层和会话层简化为应用层。
实际过程中物理层考虑的也较少,所以也称TCP/IP四层模型。

一般而言:
在这里插入图片描述
当然也不是绝对的,很多交换机也实现了网络层的转发;很多路由器也实现了部分传输层的内容,如端口转发。

三、网络传输基本流程

1 网络传输流程

(1)同一个网段内的两台主机进行文件传输。
在这里插入图片描述
(2)跨网段的两台主机的文件传输,数据从一台计算机到另一台计算机传输过程要经过一个或多个路由器。
在这里插入图片描述

2 数据包的封装和分用

  1. 不同协议层对数据包有不同的称谓。在这里插入图片描述
  2. 封装:应用层数据通过协议栈发到网络上时,每层协议都会加上一个数据首部,称为封装。
  3. 首部信息:包含了一些,如首部有多长,载荷有多长,上层协议是什么等信息。
  4. 数据封装成帧后发送到传输介质上,到达目的主机后每层协议再去除掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议进行处理。

数据封装:
在这里插入图片描述
数据分用:
在这里插入图片描述

四、网络中的地址管理

1 IP地址

网络中每一台主机的唯一标识。
且在网络传输数据过程中,必然包括两个要素:源端IP地址和目的端IP地址。标识了数据传输的起点和终点,表示数据从哪儿来到哪儿去。目标地址,使得目标网络明确,从而进行网络中路径规划;源端地址,让对方知道数据来源于何处,以便于进行信息回复。

IP协议有两个版本,IPv4和IPv6。 IPv4:uint32_t类型的数据,无符号32位的整型数字。 IPv6:uint8_t ip[16],128位的数据。
IPv4,uint32_t类型数据最大为2^32-1,即4294967295,实际上的IP地址是不够用的。

● “点分十进制”字符串表示IP地址:192.168.0.1;用点分割的每一个数字表示一个字节,范围0-255。

IPv6,uint8_t ip[16],数据非常的大,但是并不向前兼容IPv4,即若直接使用IPv6进行通信,那么原来基于IPv4的设备程序都用不了,所以推广很慢,当前主要的网络通信还是基于IPv4的通信。
那如何解决IP地址不够用情况?

DHCP技术:动态地址分配技术,即谁上网就给谁分配地址,

虽然这样数量有所减少,但上网的人数依旧很多。

NAT技术:网络地址转换技术,主要用于私网的组建,即私网中大量主机可以使用同一个公网地址进行上网。

2 端口(port)

在一台主机上用于唯一标识一个网络通信进程。
uint16_t,无符号16位的整数。
网络传输过程中,不仅得有源端IP,对端IP,还需要源端端口和对端端口。
源端端口和对端端口描述了,是两台指定的主机上的哪两个进程之间的通信,实际上网络通信也是一种进程间通信。其中,一个端口只能属于一个网络通信进程,一个网络通信进程可以使用多个端口。
在这里插入图片描述
实际的网络通信中,必然有一端主机的地址和端口是固定的,同时是让所有人都知道的,这端称为服务器端(为用户提供服务的一端),网络应用提供商,都会搭建自己的服务器,向外发布的客户端程序中都封装了自己的服务器地址信息在里面。

如,一些固定的端口号:ssh服务器,使用22端口;ftp服务器,使用21端口;telnet服务器,使用23端口;http服务器,使用80端口;https服务器,使用443端口。

3 Mac地址

每个网卡都有一个物理硬件地址,Mac地址,本质为uint8_t mac[6],6字节无符号整数。
网络层中的IP地址,描述通信的起点和终点,而在实际的传输过程中,数据部是直接就从起点到达终点,而是中间经过了大量的中间设备来转发出去。中间相邻设备进行转发时,就是使用Mac地址来作为唯一标识。

● MAC地址用来识别数据链路层中相连的节点。
● 长度为48位,及6个字节,一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
● 在网卡出厂时就确定了,不能修改,mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址) 。

4 网络字节序

字节序:CPU对内存中的数据以字节为单位进行存取的顺序。
(1)分类
内存地址有高低之分,数据二进制有高低位之分,数据在内存中存储,从低地址开始存储,先存高位还是低位来进划分为,小端字节序和大端字节序。
在这里插入图片描述
(2)字节序所针对的类型是存储单元大于1字节的数据类型,short、int、long、float、double等。
网络通信过程中,若两主机字节序不同,那么在数据上就会产生二义性,所以在网络传输的时候使用统一的字节序标准,即大端字节序。
编写网络程序时要考虑跨平台的问题,存储单元大于1字节数据类型的数据就得使用网络字节序来进行通信。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值