
- 😘作者简介:一名99年运维岗位员工。
- 👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。
- 🙏创作不易,动动小手给个点赞加关注吧,有什么意见评论区告诉我,一起学习。
目录
TCP/IP四层结构和TCP/IP五层结构与OSI七层结构的关系
本篇文章不教大家命令了,开始学一些理论知识吧,本篇文章分享一下网络管理知识:OSI和TCP/IP,并且学习两者之间的区别。
OSI:Open System Interconnection 开放系统互联模型;
开放式系统互联:
国际标准化组织(ISO)制定;
定义了不同计算机互联的标准;
设计和描述,计算机网络通信的框架;
全世界网络通信的工作分为7层:应用层,表示层,会话层,传输层(运输层),网络层,数据链路层,物理层。
- 应用层:应用程序/原始数据
- 表示层:格式/压缩/加密
- 会话层:会话/全双工/半双工
- 传输层(运输层):分段/重组/端口号
- 网络层:IP地址/寻址/路由
- 数据链路层:MAC地址/局域网/
- 物理层:传输介质/比特流
记忆这些的口诀:应(应用层)表(表示层)会(会话层)传(传输层)往(网络层)树(数据链路层)屋(物理层)。

OIS的物理层和数据链路层在TCP/IP四层结构中被统称为网络接口层,OSI 中的应用层、表示层、会话层在TCP/IP四层结构和TCP/IP五层结构中被统称为应用层。如下图所示。

区别:
- TCP/IP是一个协议簇,而OSI是一个模型;
- TCP/IP是五层结构,而OSI是七层结构;
- TCP/IP的第三层仅支持IP协议,OSI支持所有的网络层协议。
联系:
- OSI引入了服务、接口、协议、分层的概念,而TCP/IP借鉴了OSI的概念;
- OSI先有模型,后有协议,先有标准,后进行实践,而TCP/IP先有协议和应用再提出了模型,且是参照的OSI模型。
Transmission Control Protocol/InternetProtocol,传输控制协议/互联网协议的简写
| 应用层 | HTTP/超文本传输协议/网站 |
| Telnet/远程连接协议/远程控制 | |
| FTP/文件传输协议 | |
| SMTP/简单邮件传输协议/Email | |
| DNS/域名服务/WWW | |
| 传输层 | TCP/传输控制协议/可靠 |
| UDP/用户数据报协议/不可靠 | |
| 网络层 | IP/互联网协议/寻址 |
| ICMP/网络消息管理协议/测试 | |
| 数据链路层 | MAC |
| 物理层 | 网线 |
| 光纤 |
信息从生产到接收,也会有些变化。
为了方便交流,通信模型不同的模块对信息加工,并进行统一命名。
| TCP/IP五层结构数据 | 数据类型 |
| 应用层数据 | AP DU(应用数据单元) |
| 传输层数据 | segment DU(分段数据) |
| 网络层数据 | packet DU(包,数据) |
| 数据链路层数据 | frame DU(帧,数据) |
| 物理层数据 | bit DU(比特,数据) |
信息从一台计算机产生,经过TCP/IP模型,后传递到另一台计算机,这个通信过程就像,快递从厂家包装到顾客收到货拆包一样,我们把这个通信过程,称作数据的封装(发送)和数据解封装(接收),从而更好的理解,数据通信原理。
| TCP/IP结构 | 功能 | 示例 |
| 应用层 | 应用程序/原始数据/ | QQ等 |
| 格式/压缩/加密 | 快速传递,安全传递 | |
| 会话/全双工/半双工 | 身份信息,电话/对讲机 | |
| 传输层 | 分段/重组/端口号 | 传输效率 |
| 网络层 | IP地址/寻址/路由 | 总目标,全球地址 |
| 数据链路层 | MAC地址/局域网/ | 分段目标,局部地址,邮递员 |
| 物理层 | 传输介质/比特流 | 电流/光/无线信号/4G/5G |
- (应用层)用户信息转换为数据,以便在网络上传输。
- (传输层)数据转换为数据段,并在发送方和接收方主机之间建立一条可靠的连接。
- (网络层)数据段转换为数据包或数据报,并在报头中放上逻辑地址,这样每一个数据包都可以通过互联网络进行传输。
- (数据链路层)数据包或数据报转换成帧,以便在本地网络中传输。在本地网段上,使用硬件地址唯一标识每一台主机。
- (物理层)帧转换为比特流,采用数字编码和时钟方案。

我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge
我安装了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
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生
这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~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} 最佳答案