jjzjj

Linux 网络协议和管理

背对背依靠 2023-03-28 原文

网络的概念:

计算机网络:一组计算机或网络设备通过媒介(有线或无线)相连,按照一定的规则进行通信的集合。

网络作用范围分类:

广域网:WAN--Wide Area Network
城域网:MAN---Metropolitan Area Network
局域网:LAN---Local Area Network

网络线缆:

目前比较流行的就是双绞线(双绞线(Twisted-Pair)的缩写:T),因为两根两根绞在一起,所以叫双绞线。这样做的目的是为了抵消彼此的电磁干扰。

  • 五类线:速度可以达到百兆(很少用了)

  • 超五类线:速度可以达到千兆---目前主流使用的

  • 六类线:速度也可以达到千兆,但是这种线的中间会加一个十字骨架,让线更结实

T568B线序:


直通线:两头的线序一样
交叉线:两头的线序不一样(例如用于两台计算机直接相连)

RJ-45 Connector 和 Jack

光纤接口

要求更高的环境,采用光纤连接。两个头成对出现,一个发送一个收,利用光信号来发送数据,这样不受电磁干扰。
需要配置光纤专门的网卡和光纤模块。

网络设备:

中继器 repeater

作用:方法信号的效果,让数据传输得更远 --- 基于物理层的

集线器 hub(一层设备,不能识别mac地址):

作用:相当于多接口的中继器,上面可以接很多网线。集线器共享带宽,且是一个半双工的设备。

网桥和交换机(二层设备,能识别mac地址)

网桥和交换机的工作原理是一样的。只能隔离冲突域,不能隔离广播域。交换机可支持全双工传送
是通过判断数据帧的目的MAC地址,从而将数据帧从合适端口发送出去.交换机是通过MAC地址的学习和维护更新机制来实现数据帧的转发

路由器(三层设备)

负责解决跨网段的通信,实现通信路径的选择。
家用路由器就即成了交换机的功能。
PC

网络的特性:

  • 宽带:接入广域网的线路(相当于一条公路)

  • 网速:实际传输速率(8bit=1byte),单位是每秒钟传输多少个字节(Byte/s --- B/s)

  • 带宽:接入宽带的理论网速上限(可以理解为公路的宽度),每秒钟能传输多少比特(bit)数据,单位:bit/s --bps(比特每秒)

网络运营商对下行速度的单位和系统对下行速度的单位不一样(我们的文件是以字节为单位的),就造成了网速和带宽不一样。

网络标准

  • 旧模型:网络的软件硬件都由一家厂商开发,不是公开的标准。

  • 基于标准的模型:所有厂商都遵守这个标准,相互之间就实现了兼容。

分层:

把网络分成多层,每一层都有对应的标准规范。
这样就实现了不同厂商这件产品的兼容。

开放系统互联 OSI

国际标准组织(ISO),在1985年发布的。分为7层。

  • 物理层:和物理连接的相关规范标准。

  • 数据链路层:实现链路内部的通讯(源地址、目标地址等信息)。通讯单位:帧

  • 网络层:链路层可以实现两个主机在一个网络里面通信。网络层可以实现路径的选择,(选择一条最佳的通信路径),实现多个网络之间的远程通信。

  • 传输层:负责两个节点之间数据传输的确认(网络层将数据送过去以后,通过传输层给我方一个回复,确认数据是否收到)

  • 会话层:实现两个节点之间的会话通信

  • 表示层:信息格式的编码、转换、压缩加密等

  • 应用层:不同应用之间的通信

网络的通信过程

相当于邮递包裹,

数据发送方(添加外包装) --- 封装:

首先把数据拆成小块来进行传送。应用层将数据封装(加了个包裹)---> 然后一层一层加,加到数据连句层会添加一个CRC校验,然后通过物理层以bit流的方式进行传送出去。

数据接收方(拆包装)--- 解封装:

物理层收到数据后交给数据链路层(用同样的方式计算CRC,比较两个CRC值是否一致。数据校验),不一样则表示数据损坏。然后向上每层开始拆包装,最后就看到了原始数据了

报文头:每一层都给数据添加一个头

协议数据单元 PDU

PDU: Protocol Data Unit,把一个数据拆成指定大小的小块(PDU),这个小块在不同的层有不同的称呼。

  • 物理层的 PDU是数据位 bit

  • 数据链路层的 PDU是数据帧 frame

  • 网络层的PDU是数据包 packet

  • 传输层的 PDU是数据段 segment

  • 其他更高层次的PDU是消息 message

三种通讯模式

  • unicast: 单播,目标设备是一个

  • broadcast: 广播,目标设备是所有

  • multicast: 多播,组播,目标设备是多个

冲突域和广播域

  • 冲突域:两个网络设备同时发送数据,如果发生了冲突,则两个设备处于同一个冲突域

  • 广播域:一个网络设备发送广播,另一个设备收到了,则两个设备处于同一个广播域

三种通信机制

  • 单工:单向传输

  • 半双工:同一时间只能发送或者接收

  • 双工:同一时间可以双向通信

范例:判断网线是通的还是断的
mii-tool工具或者ethtool工具: mii-tool 网卡名

网络不通一般是物理连接或者网络配置有问题。

局域网

局域网使用的标准是以太网,虽然局域网有国际的IEEE802标准,但是实际使用的是以太网标准。

局域网标准:主要定义了数据链路层和物理层的标准

以太网

以太网(Ethernet)是一种使用广泛的局域网。
以太网在1975年就被三家公司合作研发出来,最早命名为DIX(DIX即DEC、Intel和施乐Xerox公司的首字母)

以太网MAC帧格式

帧是数据链路层的单位,

MAC帧的组成部分:

  • 前导信息:Preamble,探测网络是否有故障、数据包是否完整,起到状态监控的效果--8byte

  • 目标地址:Destination Address,以目标计算机的mac地址为标识--- 占6Byte

  • 源地址:Source Address ,以源计算机的mac地址为标识--- 占6Byte

  • Type:上层使用的协议类型(以太网属于数据链路层,数据链路层上面是网络层,网络层有很多协议,比如早期出现过的的IPX等网络协议),上层网络层可能会拥有很多协议,下层要为上层提供服务,就需要知道上层使用的协议。

  • 数据:Data --- 46--1500之间

  • FCS:校验位

    802.3是国际标准,Ethernet是以太网二代的标准

MAC地址:硬件地址

在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中)。
每个网卡的MAC地址唯一,网卡出厂的时候烧录进去的。IEEE 802标准为局域网规定了一种48位的全球地址,网卡前一半的内容由国际组织约定好,后一半内容由厂商自己约定。

虚拟局域网 VLAN

实现把网络在逻辑上切割成多个小网络。因为交换机没有隔离广播的功能,所有交换机都在一个广播域中,当任何一个交换机发广播,其他所有的交换机都能收到这个广播。所以使用vlan来实现广播域的隔离功能。

Vlan之间的通信

通过公共干线连接两个交换机,在数据包发出去的时候,给数据包加一个标识。通过trunck协议来修改以太网的帧结构来实现不同vlan之间的通信。

网络架构的分层

核心层:负责数据的高速、稳定的传输(核心交换机--可以连接服务器等设备)
汇聚层:负责路由的安全接入(汇聚层的交换机--三层交换机(拥有路由器功能的交换机))
接入层:负责把设备连入网络中(比如 接入层的交换机)

TCP/IP 协议栈

Transmission Control Protocol/Internet Protocol 传输控制协议/因特网互联协议
TCP/IP是许多协议簇的一个集合。

TCP/IP 分层

TCP/IP 应用层

TCP/IP 通信过程

transport 层

TCP和UDP

有关Linux 网络协议和管理的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  3. 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

  4. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  5. 网络编程套接字 - 2

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

  6. ruby-on-rails - 一般建议和推荐的文件夹结构 - Sinatra - 2

    您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应

  7. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  8. ruby-on-rails - 事件管理员和自定义方法 - 2

    这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什

  9. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  10. 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} 最佳答案

随机推荐