小言_互联网的博客

网络基础架构(从数据传输理解网络)

163人阅读  评论(0)

1. 网络与系统关系

将数据放到网络里,把数据从网络拿出来,全部依赖于网卡。

2. 网络背景

  • 独立模式:
    早年开始为独立模式,由于每个人业务不同,多人共享时需要人手动操作。

  • 网络互联:
    在发展时,通过一个服务器,每个人将数据上传到一个服务器中,然后实现共享。

  • 局域网(LAN):
    后来由于计算机数量越来越多,通过交换机将路由器全部连接在一起
    交换机:数据链路层
    路由器:网络层

  • 广域网(WAN):
    将每个大局域网中,远隔千里的计算机连接起来

在学习网络的同时一定不能忽略硬件设备。

3. 认识协议

其实我们所学的网络和计算机体系结构中的网络,唯一区别就是。线变长了,那么一定会带来一大批问题。计算机网络就是解决这些问题。

"协议"是一种约定,计算机之间擅长处理数据,一台计算机向一台计算机发协议信息,另一台计算机就会解析出来。

计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。

  • 计算机生产厂商有很多;
  • 计算机操作系统, 也有很多;
  • 计算机网络硬件设备, 还是有很多;
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议。

不同地方有不同地方的方言,但是国家规定了普通话让我们学习,从而可以交流。

而实际上,计算及内部也有网络。与我们现在理解的网络,无非就是“线变长了”,那么带来的问题也有很多,总结一下就是,1.效率,2.定位3.可靠性

协议实际大部分用操作系统实现的,先描述在组织,协议本质就是用结构体来完成的。所以他也可以定义变量。

在实际中,我们收到一个快递,而快递会被包装,上面有着单号,名字等信息。所以当我们实际收到一件商品,所得到的东西比商品本身要多,而多的东西就可以看做是“协议”,而协议解决了这些问题,协议+数据,就构成了,数据段,数据帧,数据报。拼接其实很简单,协议用结构体描述,可以定义变量,在和数据拼接在一起。

4. osi七层协议

计算机网络最开始分为七层协议

分太多,既复杂又不实用,后来实际在实现的时候将七层协议转换成五层,不谈物理层就只有四层,物理层属于硬件

5. Tcp/Ip五层协议

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

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

应用层就代表应用程序,传输层和网络层,是操作系统内核实现。数据链路层在网卡驱动层实现。

为什么要分成这么多层呢,本质是为了解耦,替换一层不会影响另一层。可维护性强,便于分批组装。

6. 网络传输流程

6.1 局域网

  1. 数据包=报头+数据(有效载荷)

  2. 报头也是一种数据,将来要分开,怎么分开呢。几乎所有的协议都会解决报头和有效载荷的分接问题

  3. 怎么确定把自己的有效载荷交给头顶的哪个协议呢?几乎所有的协议也会解决,当确认数据包分离后,去掉本协议的报头,将自己的有效载荷交给上层哪个协议,这叫做分用。

    应用层最终解包拿到hello

  4. 局域网中所有的主机可以直接通信,那么怎么确定那个最终封包后的数据包是传给对应主机的呢?在数据链路层有着唯一的mac地址,这个地址具有唯一性。就像在一个教室里,老师叫张三回答问题,你也听到了这个声音,但经过你分析这个问题不是传输给你的,你就不会站起来。网络中当别的主机检测到这个数据不是发给自己的,就会丢弃掉数据。

  1. 教室中有多人说话,张三给你说的话,你没听清,由于别人说话声大,产生了碰撞,所以这个时候张三需要再说一遍,而传输的数据也是一样,这时就需要重发。这叫做碰撞检测。但是有可能别的同学声音大,你又不听到。这个时候就需要等一会,让张三再给你说话。这在网络中叫碰撞避免。三个概念,碰撞域,碰撞检测,碰撞避免。
  2. 第四条+第五条就是局域网的通信原理
    一个局域网,主机越多碰撞越多。一直塞垃圾数据,局域网就会瘫痪,但是用户层塞垃圾数据,驱动层有避免算法。这时就需要一种绕开网络链路层的算法来实现。

6.2 广域网

从硬件层面来看,路由器有两个接口。连接两个局域网。这是路由器可以看做一台主机。
当用户向路由器发数据时,左边局域网中,所有的主机都会收到数据,不过第一次解析时就会丢弃,因为链路层封包的是路由器的mac地址。
路由器收到数据向上分用然后路由,再加上目标主机的mac地址。最终实现解包

在此过程中,以太网协议(链路层)在不断地变化,自网络层往上的,包括网络层,传输层,应用层都不会变化。

  • mac地址分为原mac地址,和目标mac地址。
    左侧,原mac地址为用户主机,目标mac地址为左侧局域网路由器的网卡驱动的mac地址。经过路由,原mac地址变成了右边路由器的网卡驱动的mac地址,目标mac地址变成目的主机网卡的mac地址。
  • Ip地址分为原ip地址,目的ip地址

所以说,即使底层的局域网标准实现有差异,但是ip地址是不会变化的,即可以理解ip将以太网协议封装了一层虚拟化技术。
两套地址是不冲突的,IP地址决定了,从哪开始,到哪去。mac地址决定了当前在哪,下一站到哪。
而且所有的数据转发都必须经过物理层,而且传输的过程就像上楼和下楼的过程。

6.3 数据封包和使用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理即分用

7. 网络中的地址管理

7.1 IP

IP协议有两个版本, IPv4和IPv6.
IP地址是在IP协议中, 用来标识网络中不同主机的地址;对于IPv4来说, IP地址是一个4字节, 32位的整数;我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255。

  • IPV4为32个比特位,2^32大概42亿多
  • IPv6为128个比特位2^128太大了

公网当中的IP是绝对不能重复的,IPV4即将被耗尽,所以需要推广IPV6,但是由于Pv6的升级必然会淘汰一些不支持IPv6协议的网络基础设备,同时很多软件开发商还要基于IPv6做重开发,运营商也不得不考虑到用户在面对升级时带来的经济问题,所以是不会轻易地去升级的,但是IPv6已经开始走向社会了。

7.2 mac地址

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

7.3 网络相关的两个命令

ifconfig查看本机IP

lspci查看硬件驱动


转载:https://blog.csdn.net/qq_45928272/article/details/116423790
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场