计算机网络基础

目录

  • 认识"协议"
  • 计算机网络层状结构
  • 操作系统和协议分层
  • 网络传输(TCP/IP通信过程)
    • 同一网段内的主机可以直接通信,不需要路由器。
    • 跨网段通信
    • 数据报的封装和分用
    • 网络中的地址管理

认识"协议"

  • ""协议"是一种约定。是为进行网络中的数据交换而建立的规则、标准或约定。每台计算机都有数据,而计算机之间要想进行数据通信就需要协议,如果没有协议那么别人就不知道你发的是什么东西。而且协议需要统一,大家应该使用同一份协议。
  • 协议需要规定一些东西,是描述某些信息的集合体,那么在C语言中协议就是一种结构体。发送的数据比我们想要的要多,多出来的就是协议。

计算机网络层状结构

计算机网络是一种层状结构。我们知道计算机网络需要硬件来帮助我们完成,而一旦两台计算机相距较远,就会引发一系列问题:

  • 网线的加长必然会导致效率的损失,如何保证效率?
  • 传输的距离变化必然会导致安全性降低,如何保证可靠性?
  • 如何识别你的目的主机,即如何找到你要发送数据的主机?

解决这些问题而产生的学科就叫做计算机网络。而我们希望用不同的方法解决这些问题,而不是混为一起,所以就有了层状结构,每一层都有自己的作用,不同层之间互不干涉,只能通过接口来相互配合,这叫做解耦

好处

  • 各层之间是独立的:某一层并不需要知道它的下一层是如何实现的,仅仅需要知道该层通过层间的接口所提供的服务。
  • 灵活性好:当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或者以下均不受影响。
  • 结构上可以分割开:每一层可以使用合适的技术实现。
  • 易于实现和维护:整个系统被分解为若干个子系统,使得复杂的系统变得易于处理。

OSI7层协议模型
计算机网络基础_第1张图片

TCP/IP5层协议模型

  • OSI考虑的层数太多,后来又出现了TCP/IP模型,大手一挥,将OSI的上三层合并到了一层,即应用层。

  • TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

  • TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于物理层属于硬件,考虑的比较少,因此也成为TCP/IP四层协议模型。
    计算机网络基础_第2张图片

  • 负责光/电信号的传递方式,在物理层上传输的数据的单位是比特。

  • 数据链路层:负责设备之间数据帧的传送和识别。在链路层一般叫做数据帧。

  • 网络层:负责地址管理和路由选择

  • 传输层:负责两台主机之间数据的传输。

  • 应用层:负责应用程序间的沟通。

操作系统和协议分层

计算机网络基础_第3张图片

网络传输(TCP/IP通信过程)

同一网段内的主机可以直接通信,不需要路由器。

计算机网络基础_第4张图片

  • 当我们想在应用层发送信息的时候,比如发送hello,那么在应用层会增加一个FTP报头,然后将封装过的数据传入TCP层,然后封装TCP的报头,然后封装IP的报头,然后封装以太网的协议,然后通过物理层,传给目标主机。
  • 目标主机拿到报文,向上层层交付,先交给数据链路层,分离出以太网协议,然后交给网络层,分离出IP报头,然后向上交付,知道分离出来hello。

局域网中的数据冲突

  • 当局域网中的多个主机同时发送数据可能会产生干扰,这种干扰就称作碰撞。

  • 一个局域网就可以认为是一个碰撞域。

  • 为了降低局域网中的数据干扰,在发送数据时会对网络中进行检测,判断是否有其他主机也在发送数据,从而进行碰撞避免。

广播
在局域网中,可以发数据给某一台机器,也可以发数据给所有计算机,只需要在协议中规定一个MAC地址是共同的就可以,一般是全f。

跨网段通信

计算机网络基础_第5张图片

  • 不同网段上的主机之间发送数据需要经过中间设备路由器进行转发, 不能直接通信,因为底层的协议可能不一致。
  • 在A网段看来,路由器是它网段的一台计算机,于是将报文发送给路由器,路由器接受到报文,先解包出以太网协议,然后向上交给IP层,实现路由。然后再向下交付,封装一层令牌环的报头,发送给B网段。
  • 注意:在跨网络通信中,路由器连接了至少两个局域网,对于使用该路由器连接的所有局域网来说,路由器也属于这些局域网中的一个主机。对于发送方来说,在数据链路层给数据加上MAC地址,这个MAC地址是发送端所在的局域网中的某一主机的物理地址,也就是某一个路由器的物理地址。路由器收到该数据后,在根据要发送的目标主机对数据重新使用新的MAC地址进行封装转发到下一个局域网中,最终到达目标局域网(到达目标局域网后就相当于同一网段的通信)。
  • IP相当于封装了下层,在上层看来,只能看到IP地址,而对于下层的实现并不关系。

数据报的封装和分用

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

封装
发送端将用户数据发送到网络的过程称为封装。经过每一层时,会给应用数据加上相应的协议首部。
计算机网络基础_第6张图片

分用
分用和封装是两个相反的过程,传送到网络中的数据对首部进行解析,从而找到目的主机。

网络中的地址管理

IP地址

  • IP协议有两个版本, IPv4和IPv6,IPv4是32位,而IPv6是128位。
  • IP地址是在IP协议中, 用来标识网络中不同主机的地址;
  • 对于IPv4来说, IP地址是一个4字节, 32位的整数;
  • 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255。
    MAC地址(硬件地址或网卡地址,具有唯一性:)
  • 用来识别数据链路层中相连的节点;
  • 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
  • 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).
  • 在跨网络数据传输中,MAC地址是动态变化的,而IP地址是不变的。发送段发送数据会在网络层会对数据进行IP封装,其中包含了数据的源IP地址和目的IP地址,源IP地址表明了该数据来自哪一个主机,目的IP地址表明该数据需要发送到那个主机。发送到网络中的数据,会为其指定特定的传输路径,在数据链路层主要就是将来自目的IP的数据通过路由器转发到目的网络中,在转发的过程中使用MAC地址表明下一跳的路由地址,当传输到目标网络中在通过IP地址找到对应的接收端主机即可。

两个命令

ifconfig  #查看网络IP地址
lspci     #查看硬件设备信息

你可能感兴趣的:(计算机网络,网络,网络协议)