初识网络原理

网络的迅速发展普及了计算的使用,网路由一开始的独立模式(计算机之间相互独立)到局域网(局域网内的主机之间能方便的进行网络通信)再到现在的广域网(通过路由器将多个局域网连接起来,在物理上组成很大范围的网络),很大程度的提升了网络通信,实现了数据传输,那么数据是如何在不同主机(计算机)之间实现传输的呢?

IP地址

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址,简而言之,IP地址用于定位主机的网络地址;例如我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

IP地址解决了网络通信时,定位网络主机的问题,但是还在一个问题,传输到目的主机之后,由哪个进程(即应用程序)来接收这个数据呢?这时就需要端口号来标识。

端口号

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程,简而言之,端口号用于定位主机中的进程例如发送快递时,不光需要指定的收货地址(IP地址),还需要指定收货人(端口号)。

端口号可以定位到主机中的进程,网络传输的数据类型可能有很多种,不同类型的数据其格式也不相同,那目的主机如何识别源主机传输的数据呢?这就需要使用到协议了。

协议

协议也叫网络协议,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵守的一组约定和规则,协议最终体现为在网络上传输的数据包的格式;这个协议控制了网络数据传输过程中建立连接、相互识别的问题。

协议分层

网络通信是一个比较复杂的事情,需求场景复杂了,实现功能也会比较复杂,如果一个协议太复杂,学习成本、使用成本、维护成本都会非常高,因此协议采取了分层协议的做法(即针对一个复杂的大协议拆分成若干个相对简单的小协议)。

协议分层的好处

  1. 一个复杂的大协议拆分成若干个简单的小协议,大大降低了学习成本、使用成本、维护成本;

  1. 可以灵活的针对一些小协议进行替换(有一些不同的小协议,诸多功能相似,此时可以灵活的替换掉相似的小协议);

  1. 分层最大的好处类似于面向接口编程时,使用者不需要知道接口的内部实现细节,只需在使用时实现相应接口即可。

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

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

应用层:应用程序,描述了传输的数据,负责应用程序间沟通;

传输层:负责两台主机之间的数据传输,端与端之间的传输,如TCP和UDP协议;

网络层:负责地址管理和路由的选择,如IP协议;

数据链路层:负责设备之间的数据帧的传送和识别;

物理层:负责光/电信号的传递方式,如以太网;

物理层属于硬件层面,考虑的较少,因此很多时候也称为TCP/IP四层模型。

网络数据传输过程示例

假设A在2023.1.1 12:00的时间给B发送了一条微信消息,消息内容是“在干嘛?”,那么这样一条消息是如何传输到B的设备上的呢?我们以发送方和接受方的过程来演示。

发送方

  1. 应用层

假设一个应用层协议的格式为一个字符串:发送方微信号 +发送时间 +接受方微信号 +消息内容

此时应用层会生成一个“应用层数据报”(本质上就是一个遵守了约定格式的字符串),程序要调用操作系统的api,把这个应用层数据交给传输层

  1. 传输层(操作系统内核)

在传输层中,就要把上述应用层数据构造成传输层的数据报,传输层中用到的协议最知名的就是UDP/TCP,假设此处使用的是UDP,就需要构造出UDP数据报(在应用层数据基础上加个UDP报头),传输层就把这个UDP数据报交给网络层

这里加报头是为了描述源端口和目的端口的信息!!!

  1. 网络层(操作系统内核)

最知名的协议是IP协议,IP协议要基于上述数据,打包成一个IP数据报,网络层数据准备好,还需要进一步的交给数据链路层

IP报头最核心的信息是源IP和目的IP!!!

  1. 数据链路层

最知名的协议是“以太网”,基于上述数据,还要打包成一个“以太网数据帧”,然后这个数据继续往下传输,交给物理层

  1. 物理层

把上述二进制的数据转换成电信号/光信号,此时就真正的把数据发送出去了

上述过程中,从应用层到物理层,层层加码,这个过程称为“封装”

接受方

  1. 物理层

网卡接受到的是光信号/电信号在物理层,物理层将这个信号转换成二进制数据,转回的数据是一个以太网数据帧,把这个数据交给数据链路层解析

  1. 数据链路层

数据链路层需要去掉帧头帧尾,取出中间的载荷交给上层的网络层(IP协议),以太网会记录这个载荷是不是一个IP数据报

  1. 网络层

IP协议会针对这里进行解析,解析出IP报头,取出IP协议的载荷,把这里得到的传输层数据报交给上层传输层,IP报头里会记录载荷是UDP还是TCP协议

  1. 传输层

UDP再进行解析,取出报头,取出载荷,再把这个载荷交给对应的应用层程序,UDP报头里有一个重要的字段“目的端口”,因此就可以把这个端口来把数据交给应用程序了

  1. 应用层

此时应用程序是微信,微信就会针对应用层协议进行解析,现实到界面上

上述,从物理层到应用层,层层解析的过程称为“分用”

总结:

整个网络协议中,协议分成很多层,上层协议要调用下层协议(上层协议把数据交给下层,继续封装),下层协议要给上层协议提供支持(下层协议解析好数据交给上层)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值