Linux网络

2024-05-28 1446阅读

文章目录

  • 前言
  • 一、网络基础知识
    • 网络协议
    • 协议分层
      • OSI七层模型
      • TCP/IP五层(或四层)模型
      • 认识IP地址
      • 认识MAC地址
      • 数据包封装和分用

        前言

        Linux系统编程已经告一段落,但是我们在学习LInux系统编程所积累的知识,将仍然与后面网络知识强相关,学习网络的同时也是在复习系统知识。


        一、网络基础知识

        对于网络,我们并不陌生,就像现在你看我的文章,也是通过网络实现的,与朋友在微信、qq聊天也是通过网络。那么我们的网络数据是通过怎样的方式来传播的呢?

        网络协议

        从现实生活中,我们全球拥有许多不同的语言,例如汉语,英语,德语。 我们与自己的父母进行谈话用的都是汉语,所以我们才能互相知晓对方的意思。 但是如果你不懂德语却与一个德国人对话,那么你们就会拥有沟通障碍。

        对于网络通信也是一样,全球各地拥有许多计算机厂商,会研发出各种各样的网络硬件设备,如果他们不统一网络协议,那么网络通讯就无异于我们与外星人交流一样。

        如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守,这就是 网络协议。

        协议分层

        要实现网络通讯,不仅仅只有一套协议,而是有许多套协议,而有的协议解决的并不是同一个问题,所以就需要协议分层。

        OSI七层模型

        OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。

        Linux网络

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

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

        TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

        Linux网络

        物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型。

        Linux网络

        Linux网络

        认识IP地址

        IP地址是在IP协议中, 用来标识网络中不同主机的地址

        ;

        对于IPv4来说, IP地址是一个4字节, 32位的整数;

        我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;

        IP地址是可以标识全网唯一的地址,所以要进行网络通信,发送方就必须要知道接受方的IP地址。

        认识MAC地址

        MAC地址用来识别数据链路层中相连的节点。

        长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)

        在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

        例如在以太网中,就可以通过MAC地址来查找对应主机。

        数据包封装和分用

        不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

        应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).

        首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

        数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。

        Linux网络

        以上图为例,当客户要通过网络发送数据,需要从应用层自下传输,且每经过一层都会封装对应的报头。 服务器再自上解包数据包。

        1.应用层封装请求数据,向下交付给传输层。

        2.经过传输层 封装 tcp协议相关报头,向下交付给网路层。

        3.经过网络层 封装 ipv4 或ipv6协议与端口号相关报头,并且这里需要添加发送方和接受方双方的IP地址和端口号,向下交付给数据链路层。

        4.经过数据链路层封装以太网MAC相关报头,将报文数据交给以太网,

        5.经过以太网解包将数据链路层报头和其有效载荷分离,将剩下的报文交给对应主机或者路由器。

        6.路由器拿到目标IP地址后,查到目标IP地址,再向下交给自己的令牌环驱动程序,并封装令牌环报头。

        7.令牌环驱动程序再根据其令牌环报头的目标MAC地址,找到并将报文对应主机的令牌环。

        8.令牌环解包将数据链路层报头和其有效载荷分离,将剩下的报文向上交付给网络层。

        9.网络层解包将网络层报头和其有效载荷分离,将剩下的报文向上交付给传输层。

        10.传输层解包将传输层报头和其有效载荷分离,最后得到请求数据向上交付给应用层。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]