Linux网络编程学习(网络基础)
创始人
2024-05-29 14:15:07
0

文章目录

  • 网络基础
    • 浅谈计算机网络背景
    • 了解协议
    • 网络传输基本流程
      • 局域网传输基本流程
      • 跨网络的数据传输流程

网络基础

浅谈计算机网络背景

​ 计算机最早是没有网络的,当时想要数据之间交互就需要人来传递,但是这样效率非常低,而且也容易出错;

​ 后来为了提高效率,通过一根总线和集线器,将小范围的计算机链接在一起(教室大小的范围),其中有一台计算机当作共享服务器,其他计算机负责数据处理,再利用共享服务器做数据交互

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-om9dUUJs-1677869761395)(G:\Typora\图片保存\image-20221230230240244.png)]

​ 再后来,就由这种简陋的模型发展成了局域网;假设将一个教室大小看作一个整体,里面有多台计算机经交换机连接在一起组成局域网,那么多个教室之间互相交互就由路由器连接各个教室交换机,就可以实现跨网络传送

局域网不断的发展,变得越来越大,就发展成了“广域网”,(这只是一个相对概念,为了区分局域网的区别)例如,一个省分为好多区,把每个区看作一个局域网,那么站在省的角度,就可以说是广域网。

了解协议

​ 协议是一种约定,例如两台计算机之间约定进行通信,计算机A给计算机B发数据之前先发送三个1三个0,计算机B收到信号后,先回复三个0三个1,之后开始接收数据。例如生活中的遥控器,每个按键按下的时候,都会发送一串由2进制组成的红外波,电视接收后再把红外波解析成二进制码。

​ 一般咋网络通信协议上的制定,都是由这个邻域的领头企业,例如5G华为;而想要提高效率就只能跟随制定的协议,要么厂商就只能自己发展,并且使用协议的用户多了,也就决定了市场,其他不想跟随的企业也只能跟随,这样就达到了相对统一。

实际的网络通信非常复杂, 需要分很多的层次,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vEk9yueo-1677869761396)(G:\Typora\图片保存\image-20221231024612646.png)]

OSI七层模型

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

七层模型相对复杂且不实用,一般都按4层或者5层区分

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

网络传输基本流程

局域网传输基本流程

在局域网中,两台主机是可以直接通信的,通信流程如下,其中最底层的一条线是网线,属于物理结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tb7tlnoN-1677869761396)(G:\Typora\图片保存\image-20221231145416455.png)]

(TCP层还有一个协议是udp)

​ 主机A给主机B发送数据时,不是直接从应用层到对方应用层的(不是横着直接发送的),而是自上到下,经过以太网到达对方最底层,之后自下而上贯穿(发送数据是U型的)

​ 在自上而下、自下而上的同时,每一层都会添加自己的“报头”文件,经过以太网发送到对端主机后,对端主机每一层解析自己层所需的报头文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZKFd8Y9C-1677869761397)(G:\Typora\图片保存\image-20221231150445320.png)]

(每一层从上层封装下来的数据叫做载荷,加上当前层的报头又组成载荷给下一层)

​ 站在应用层的角度,就好像是由主机A直接发送给主机B一样,而主机发送数据最后是只需要数据的,这个数据就经历了封装 -> 解包的过程。

报头是什么?

​ 报头就类似于快递,当在网上买完东西后,会先由商家去发快递,快递会把商品包装,包装后贴上快递单,快递单上有单独的单号、发货地址、收货地址等等信息,经过公路的运输到达一些转运点,转运点会扫描所需的信息分发给具体的运输车,运输车会到达收货地再由快递员按收货地址分片配送。

​ 而报头就是数据的“快递单”,上面有每一层所需要的数据,来指导当前层进行某种协议决策。

报头的本质

LinuxOS是C语言写的,站在语言角度报头的数据结构可能是如下的结构:

struct my_hdr
{unsigned int src:16;unsigned int dst:16;unsigned int type:8;unsigned int len:24;  
};
报头就是一个位段,具体和协议有关

​ 假设发送一个数据,那么数据可以看成是载荷放在缓冲区里,那么报头就是 位段变量,struct my_hardA.stc = 0x1将这些位段数据拷贝到载荷前面;那么如何拿到数据呢?,可以将这个整体强转成struct my_har*,之后++一下就拿到数据了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3SK4a0BX-1677869761397)(G:\Typora\图片保存\image-20221231154543853.png)]
(封装与解包)

几乎每一层的报头都包含两种字段:

  • 当前报文的有效载荷要交付给上一层的哪一个协议(例如TCP与UDP)
  • 明确报头与载荷的边界

上面介绍的是两台主机间通信的流程,那么多台主机的通信基本和上述一样,但有一些细节需要注意

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMeBBaeL-1677869761397)(G:\Typora\图片保存\image-20221231164749717.png)]

如图,

  • 每个主机都有自己的MAC地址,主机A要给主机E发送数据,就需要带上E的MAC地址;

    MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开 xx:xx:xx:xx:xx:xx

    MAC地址由网络设备制造商生产时写在硬件内部,更多应用在局域网中的。

  • 由于局域网的网络资源是共享的,所以所有主机其实都能收到主机A给主机E发送的数据,但是它们看到MAC地址不是自己的选择丢弃

  • 假如A发送完后马上B也给E发送,就会发生数据碰撞,所以每台主机都要有碰撞检测的能力以及碰撞避免的算法,保证每个时刻只有一台主机向局域网中通信

上述中共享的网络资源就可以看成是个临界资源,那么数据碰撞就可以看成是互斥,系统和网络是不分家的

​ 要攻击局域网,其实就等于是线程的饥饿问题,一直发送数据,同时由于局域网络资源是共享的,只是通信的主机认为是单独通信,实际上所有主机都能看到数据,那么就可以对数据进行抓包等等(这些做法不推荐,有兴趣的可以用自己的多台设备实验)

跨网络的数据传输流程

局域网通信应用Mac地址比较多,而跨网络主要就是IP地址了,图示如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YICpIhpF-1677869761398)(G:\Typora\图片保存\image-20221231161239346.png)]

主机A和主机B是两个不同的局域网(令牌环类似于互斥锁,谁拿锁谁向局域网发送数据),当主机A跨网络向主机B发送数据时:

  • 会先进行封装,一直到达链路层,之后解封发送给路由器
  • 路由器收到后,会再次进行封装,封装的是令牌环相关的报头,并发送给主机B
  • 主机B收到后,又会进行解封一路向上直到拿到纯数据

其中,MAC和IP地址各自的作用又是什么样的?

  • 主机A给主机B发送数据是要跨网络的,所以会先发送给路由器,所以MAC的地址会先填写路由器的MAC

  • 但是又得让路由器直到是发送给谁的,所以要带上主机B的IP地址

  • 路由器收到后通过IP地址知道是要发送给谁的,之后将数据重新封装并带上MAC B的地址

MAC地址就好比快递在运输过程中的每个省份的高速入口出口,IP地址就好比最终的目的地,(IP地址在网络层,MAC地址在链路层)

由于每个局域网的链路层用的协议都不一样,那么站在路由器的角度就等于把底层统一了,上层看不见底层是怎样的通信的,屏蔽了底层的差异,这是分层的好处,因为用户并不关心底层是怎样的,只想把数据传送到。

(IP地址为32位,由用点分隔开的4个8八位组构成,如192.168.1.1,这种写法叫点分十进制格式)

相关内容

热门资讯

华为安卓系统不升级鸿蒙系统,华... 你知道吗?最近在科技圈里,有一个话题可是引起了不小的波澜呢!那就是华为安卓系统不升级鸿蒙系统的事情。...
安卓系统导航能升级,畅享智能导... 你有没有发现,你的安卓手机导航系统最近好像变得不一样了?没错,就是那个我们每天都要打交道的好帮手——...
诺基亚8原生安卓系统,尽享流畅 你有没有想过,那些曾经陪伴我们度过无数时光的诺基亚手机,现在竟然还能焕发青春?没错,就是那个经典的诺...
iq是不是安卓系统,安卓系统的... 你有没有想过,那个我们每天不离手的安卓系统,它是不是也有自己的智商呢?没错,今天咱们就来聊聊这个话题...
安卓系统短信存储上限,如何有效... 你有没有发现,手机里的短信越来越多,有时候翻看短信记录,竟然发现手机短信存储空间已经告急了!这可怎么...
秘客app安卓系统,探索未知领... 你有没有听说过那个超酷的秘客app安卓系统?最近,这款应用在互联网上可是火得一塌糊涂呢!它不仅功能强...
安卓系统 没有网卡驱动,安卓系... 你有没有遇到过这种情况:新入手了一台安卓手机,结果发现连上网络都成了难题,原来是没有安装网卡驱动!别...
安卓系统桌面时间显示,科技与美... 你有没有发现,手机屏幕上那个小小的时钟,它可是安卓系统桌面上的一个小秘密呢!它不仅告诉你时间,还能根...
安卓酒店影音系统app,打造智... 你有没有想过,在安卓手机上,如何让酒店的影音体验瞬间升级?没错,就是那个神奇的安卓酒店影音系统app...
安卓手机开发qq系统,功能解析... 你有没有想过,你的安卓手机里那个天天陪伴你的QQ系统,背后竟然有着如此丰富的开发历程和技巧呢?今天,...
海思芯片安卓系统,创新与突破的... 你知道吗?最近科技圈里有个大新闻,那就是海思芯片和安卓系统的那些事儿。这俩家伙可是科技界的明星,今天...
安卓系统 时间改变颜色,安卓系... 你知道吗?手机里的安卓系统竟然能根据时间改变颜色,这听起来是不是有点神奇?想象当清晨的第一缕阳光透过...
安卓智能音乐播放系统,打造个性... 你有没有发现,随着智能手机的普及,音乐已经不再只是单纯地通过耳机享受了?现在,安卓智能音乐播放系统可...
安卓系统学习书籍,从入门到精通 你有没有想过,想要深入了解安卓系统,却苦于没有一本合适的书籍呢?别急,今天我就要给你推荐几本市面上口...
支持电脑的安卓系统,探索安卓系... 你有没有想过,你的电脑竟然也能用安卓系统?没错,就是那个我们手机上常用的安卓系统,现在竟然也能在电脑...
iphone系统安卓手机壳,时... 你有没有发现,最近你的手机壳是不是已经有点儿跟不上潮流了呢?别急,今天就来给你揭秘为什么iPhone...
vivo升级安卓9.0系统,畅... 哇,亲爱的手机控们,是不是最近你的vivo手机突然变得聪明了许多?没错,vivo最近给我们的手机宝宝...
安卓的系统好用吗,体验与优缺点... 你有没有想过,为什么安卓系统这么受欢迎呢?它到底好用到什么程度呢?今天,就让我带你从多个角度来揭秘这...
u盘系统 安卓系统安装教程,U... 你是不是也和我一样,对安卓系统情有独钟,想要在U盘上安装它,随时随地享受安卓的魅力?别急,今天就来手...
安卓系统复制文字颜色,复制文字... 你有没有遇到过这样的烦恼:在安卓手机上复制一段文字,结果颜色也跟着一起复制过去了,让人看着不舒服,还...