草庐IT

Linux网络-基础概念

可口也可樂、 2023-06-02 原文

Linux网络基础

零、前言

本章将开始对Linux网络编程进行系统的学习,而这篇主要学习网络的基本知识

一、计算机网络背景

  • 概念:

网络本质是一个层状结构,同时也是操作系统的一部分

  • 示图:

网络发展

  1. 独立模式:

计算机之间相互独立

  • 示图:
  1. 网络互联

用户之间需要交互,在计算机层面即计算机之间数据需要进行交互:多台计算机连接在一起, 完成数据共享

  • 示图:
  1. 局域网LAN:

计算机数量更多了, 通过交换机和路由器连接在一起

  • 示图:
  1. 广域网WAN

将远隔千里的计算机都连在一起

  • 示图:

注:所谓 “局域网” 和 “广域网” 只是一个相对的概念, 广域网也可以看做一个比较大的局域网

二、认识协议

  • 概念:
  1. 协议本质上是一种约定

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

  • 示图:
  • 网络协议:

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

1、网络协议

  • 协议分层:

因为网络本质就是一个层状结构,所以对于网络协议也需要进行分层制定协议,便于进行同层之间的数据交流

  • 示例:打电话

注:实际的网络通信会更加复杂, 需要分更多的层次,而分层最大的好处在于 “封装”,每层之间进行解耦,也就是可以很方便的进行替换任何一层协议,提高可维护性

2、OSI七层模型

  • 概念:
  1. OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范,把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器,交换机

  2. OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输

  3. 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整;通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,但是它既复杂又不实用,实际中应用的是TCP/IP四层模型

  • 示图:

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

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

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

  • 各层作用:
  1. 物理层: 负责光/电信号的传递方式,即硬件设备间的数据传输

    比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层

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

    例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准。交换机(Switch)工作在数据链路层

  3. 网络层: 负责地址管理和路由选择,即决策数据传输的方向

    例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层

  4. 传输层: 负责两台主机之间的数据传输,保障数据传输的可靠性

    如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机

  5. 应用层: 负责应用程序间沟通,为用户进程提供服务

    如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

  • 示图:
  • 注意:
  1. 物理层我们考虑的比较少,因此很多时候也可以称为 TCP/IP四层模型

  2. 一般而言,对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;对于一台路由器,它实现了从网络层到物理层;对于一台交换机,它实现了从数据链路层到物理层;对于集线器,它只实现了物理层;但是并不绝对,很多交换机也实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)

三、网络传输基本流程

1、网络传输类型

  1. 同一个网段内的两台主机进行文件传输

同一个局域网内的主机是能够直接进行通信的

  • 示图:
  1. 跨网段的主机的文件传输

数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

  • 示图:
  • 注意:
  1. 以太网Ethernet 、令牌环网、ATM网、FDDI网可以算作一类,按照传输技术来分类,属于OSI参考类型的数据链路层
  2. 以太网:就是指总线型网络,它的名字是从光学上得来的(科学家幻想出一中叫以太的物质),网络中大家共用一条信息通道,大家要传输数据就要等,只有网络空闲时才可以发送信息(同时传输会造成消息碰撞,也就成为了垃圾数据)
  3. 令牌环网:简单点理解就是,大家要想发信息就必须取得一个叫令牌的东西,令牌总线把总线形或树形网络中的各个工作站按一定顺序(如按接口地址大小)排列形成一个逻辑环,只有令牌持有者才能控制总线,才有发送信息的权力
  4. 对于跨网段的数据传输,由于链路层的不同网段存在不同的协议,为了保证数据传输的通畅,此时就需要路由器将数据包针对不同协议进行协议的替换,即数据报头的更换
  5. 路由器的第一个作用是分发数据,将数据从一个网段传输到另一个网段;第二个作用是对数据进行路由选择,即传输给哪一个网段

2、数据包封装和分用

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

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

  3. 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长(解决如何将数据包进行分离-解包),上层协议是什么等信息(解决将数据传输到哪里-分用)

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

  5. 经过封装和分用的过程,对于网络交互的接收和发送两方,每一层所看到的数据都是一样的

    注:这里指的是IP层之上,因为IP层下的数据传输可能是在不同的网段传输,协议不同对应的报头数据也就不同

  6. 数据和报头的组合叫做数据包,而数据又被叫做有效载荷

  7. 其实在实际封装的过程中,不仅需要对数据进行添加报头,还需要解决报头和有效数据的分界问题,因为当数据包传送到对方的网卡上时,对方还需要进行解包

  • 下图为数据封装的过程:
  • 下图为数据分用的过程:
  • 协议共性
  1. 提供一个将报头与有效载荷分离的方法
  2. 协议当中必须包含一个字段,表明应该将有效载荷交付给上层的哪个协议

3、局域网通信

  • 局域网通信概念及过程:
  1. 在局域网中,所有的主机可以直接通讯

  2. 在数据链路层,有一个mac地址/ 网卡硬件地址/ 或者序列号,是唯一的

  3. 根据主机的mac地址确定是那一个主机发送的数据包,因为数据包的报头里存放了发出方以及接收方的mac地址,而如果其他的主机如果再接受到了该数据包,如果mac地址不匹配就会弃包,如果发到了对应的主机,成功接收后也能知道是谁发的数据

  4. 如果再局域网中有多台主机进行通信,是会发生数据碰撞的,多个主机同时往局域网中塞入数据,而数据之间发生了数据碰撞就会变成垃圾数据,对应的主机检测碰撞后进行等待再发送,避免再次碰撞

  • 局域网广播通信:

在局域网中广播的实现条件是,将目标主机设计为约定好的mac地址在局域网中不存在的,所有主机都约定好这个地址是广播地址,广播地址一般是:0xffff,而所有的主机都可以收到由广播发送的数据包,并对他进行向上层交付

  • 局域网交换机的作用:

会将某一个片区发生碰撞的数据包进行过滤,不再转发,只转发合法的数据帧,减低数据碰撞混乱的情况的概率

四、网络中的地址管理

1、认识IP地址

  1. IP协议有两个版本, IPv4和IPv6

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

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

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

2、认识MAC地址

  1. MAC地址用来识别数据链路层中相连的节点(局域网)

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

  3. 在网卡出厂时就确定了,不能修改,mac地址通常是唯一的

注:虚拟机中的mac地址不是真实的mac地址, 可能会冲突;也有些网卡支持用户配置mac地址

有关Linux网络-基础概念的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  5. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  6. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  7. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  8. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  9. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  10. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

随机推荐