绘制网络 OSI 模型和 TCP/IP 图表
一、OSI模型与TCP/IP
1、OSI模型
OSI/RM(Open System Interconnection,开放系统互联参考模型)是由ISO(国际标准组织)创建的一个有助于开放和理解计算机的通信模型,OSI七层参考模型作为一套规范的标准,在网络世界得到广泛的应用,它把网络结构分为7个层次:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如图所示。
在OSI模型中,每一层具有独立的功能,上下层之间能够完成网络信息的交互,每一层主要功能如下表所示:
表 OSI模型7个层的主要功能
OSI模型各个层的名称 |
主要功能 |
物理层 |
比特流传输 |
数据链路层 |
提供介质访问、链路管理等 |
网络层 |
路由选路和转发 |
传输层 |
建立主机端到端连接和数据传输 |
会话层 |
建立、维护和管理会话 |
表示层 |
处理数据格式、数据加密等 |
应用层 |
提供应用程序接口 |
2、TCP/IP简介
TCP/IP(Transmission Control Protocol/Internet Protocol)协议由美国国防部高级研究计划局研究创立的,它由两个主要的协议TCP和IP而得名。TCP/IP协议是一种工业标准协议组,也称为协议栈,Linux和其他网络操作系统均将它作为标准的协议组。TCP/IP是为在大型的、由异构系统组成的网络通信而设计的一种开放的协议组。在一个基于TCP/IP的网络通讯中,可以根据任务和功能将TCP/IP协议组中的协议分为四个层次。
TCP/IP组中的每个协议都具备各自的功能和完成各自任务。在一次完整的通讯过程中,许多应用程序可能同时发生通讯行为。TCP/IP能够将它区分开来。TCP/IP通过各个协议协同工作完成网络中的两台或多台计算机进程间的通讯。
二.TCP/IP协议组
OSI模型是一种通用的、标准的、理论模型,有人称为“网络世界的法律”。但网络世界中没有一个流行的网络协议完全遵守OSI模型,TCP/IP也不例外,TCP/IP协议组有自己的模型,被称为TCP/IP协议族,在TCP/IP协议中,网络体系结构被分为4层,即:
- 应用层
- 传输层
- 互联网层
- 网络接口层
尽管TCP/IP协议开发工作甚至比OSI模型标准的制定还要早,但与OSI模型体系结构存在着一定的对应关系,其中网络接口层并没有具体的内容实现,TCP/IP协议遵从数据链路层和物理层已有的标准,具体的对应关系如图5.3所示。
1、应用层
定义了TCP/IP应用协议以及处理应用程序的具体细节,应用层是应用程序进入网络的通道。在应用层有许多TCP/IP工具和服务,如:FTP、Telnet、SNMP、DNS等等。
2、传输层
提供主机之间的通讯会话管理,并且定义了传输数据时的服务级别和连接状态。工作在这一层的传输协议在计算机之间提供会话连接的建立,并负责将应用层的数据向IP层传递或IP层的数据向应用层传递。传输层具有两个核心协议,用于提供数据传输的方法:
(1)TCP传输控制协议
传输控制协议(TCP:Transport Control Protocol)是指提供可靠的、面向连接的数据报传递服务。传输控制协议可以确保IP数据报的成功传递,对程序发送的大块数据进行分段和重组,可以确保正确排序以及按顺序传递分段的数据。
通过计算校验和,进行传输数据的完整性检查。为必须使用可靠的基于会话的数据传输的程序,如客户/服务器数据库和电子邮件程序,提供首选方法。
(2)UDP用户数据包协议
UDP是TCP/IP协议栈中传输层次中的另一个传输协议,UDP提供快速的、无连接的、无确认的数据包传输服务。不同于TCP,UDP提供“尽最大努力传递”的无连接数据报服务,不要求确认信息的返回,不保证数据包的有序性以及不提供出错包的重传机制。如果需要可靠的通信,则必须使用TCP协议或通过应用程序本身的纠错机制。UDP常用于网络上的广播和多播通讯。同样,UDP也用于传输少量不重要的数据,例如,广播一组计算机的名字。UDP消息在IP数据报中封装和发送。
3、互联网层
互联网层将上层传下来的数据装入IP数据报,包括用于在主机间以及经过在网络转发数据报时所需用到的源和目标的地址信息,以实现IP数据报的路由。这一层包含四个核心协议:
(1)IP协议(网际协议)
IP是一种无连接的、不可靠的协议,主要用于编址数据包并负责路由数据包。可以将IP看作是TCP/IP协议组中的邮局,从事数据包的存储和转发工作。来自传输层的TCP或UDP数据包以及来自下层(网络接口层)的数据包在IP层中进行地址的标识和路由,最终送往目的地。
每个数据包中都封装有源IP地址和目标IP地址。如果源IP地址和目标IP地址在相同的网段,那么就直接从源发送到目标。如果不是,那么IP就使用一个适当的路由进行发送。IP还将定义数据包的TTL值(生命值),TTL值决定了数据包在网络上的最长传输时间,超时将被丢弃。
提示: IP从事数据包的发送,但对于数据包传输过程中发生的丢失、乱序、重复、破损,IP不会对此做出差错处理,因为差错的处理是高层协议的责任, 如TCP。
(2)ARP(地址解析协议)
地址解析协议把IP地址解析成MAC地址。当一个基于TCP/IP的应用程序需要从一台主机发送数据给另一台主机时,ARP在获得目标主机的IP地址后,然后寻找IP地址到实际MAC地址的映射。当ARP找到了MAC地址后,它就把这个信息传给IP,由IP把包发送出去。ARP在解析MAC地址时,首先查看ARP缓存,如果缓存中有相应的映射存在,则直接使用,反之ARP使用广播来解析MAC地址。
知识: 什么是MAC地址?
计算机中的网卡都要一个48位的物理地址,该地址通常称为MAC地址。网路世界中每个网卡的MAC地址是唯一的,MAC地址只对数据链路层有意义,网络上数据帧的交换依赖于MAC地址。
(3)ICMP(INERNET控制信息协议)
对数据报的传输提供诊断功能以及错误报告,基于IP通信的计算机或路由器通过ICMP就能够检测到错误并交换控制和状态信息。例如ping就是使用ICMP协议来检测是否能够到达目标计算机。
(4)IGMP(INTERNET组管理协议)
IGMP用于管理TCP/IP网络上的IP多播地址,网络接口层模型的最底层是网络接口层,指定如何通过网络物理地址发送或接收数据。例如,直接与网络媒体(如同轴电缆、光纤或双绞铜线)连接的硬件设备如何将比特流转换成电信。
推荐阅读
-
绘制网络 OSI 模型和 TCP/IP 图表
-
go语言Socket编程-Socket编程 什么是Socket Socket,英文含义是插座、插孔,一般称之为套接字,用于描述IP地址和端口。可以实现不同程序间的数据通信。 Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用:Socket,该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。 套接字的内核实现较为复杂,不宜在学习初期深入学习,了解到如下结构足矣。 套接字通讯原理示意 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程。“IP地址+端口号”就对应一个socket。欲建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。因此可以用Socket来描述网络连接的一对一关系。 常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。 网络应用程序设计模式 C/S模式 传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。 B/S模式 浏览器(Browser)/服务器(Server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。 优缺点 对于C/S模式来说,其优点明显。客户端位于目标主机上可以保证性能,将数据缓存至客户端本地,从而提高数据传输效率。且,一般来说客户端和服务器程序由一个开发团队创作,所以他们之间所采用的协议相对灵活。可以在标准协议的基础上根据需求裁剪及定制。例如,腾讯所采用的通信协议,即为ftp协议的修改剪裁版。 因此,传统的网络应用程序及较大型的网络应用程序都首选C/S模式进行开发。如,知名的网络游戏魔兽世界。3D画面,数据量庞大,使用C/S模式可以提前在本地进行大量数据的缓存处理,从而提高观感。 C/S模式的缺点也较突出。由于客户端和服务器都需要有一个开发团队来完成开发。工作量将成倍提升,开发周期较长。另外,从用户角度出发,需要将客户端安插至用户主机上,对用户主机的安全性构成威胁。这也是很多用户不愿使用C/S模式应用程序的重要原因。 B/S模式相比C/S模式而言,由于它没有独立的客户端,使用标准浏览器作为客户端,其工作开发量较小。只需开发服务器端即可。另外由于其采用浏览器显示数据,因此移植性非常好,不受平台限制。如早期的偷菜游戏,在各个平台上都可以完美运行。 B/S模式的缺点也较明显。由于使用第三方浏览器,因此网络应用支持受限。另外,没有客户端放到对方主机上,缓存数据不尽如人意,从而传输数据量受到限制。应用的观感大打折扣。第三,必须与浏览器一样,采用标准http协议进行通信,协议选择不灵活。 因此在开发过程中,模式的选择由上述各自的特点决定。根据实际需求选择应用程序设计模式。 简单的C/S模型通信 Server端:Listen函数 func Listen(network, address string) (Listener, error) network:选用的协议:TCP、UDP, 如:“tcp”或 “udp” address:IP地址+端口号, 如:“127.0.0.1:8000”或 “:8000” Listener 接口: type Listener interface { Accept (Conn, error) Close error Addr Addr } Conn 接口: type Conn interface { Read(b byte) (n int, err error) Write(b byte) (n int, err error) Close error LocalAddr Addr RemoteAddr Addr SetDeadline(t time.Time) error SetReadDeadline(t time.Time) error SetWriteDeadline(t time.Time) error } 参看 [<u>https://studygolang.com/pkgdoc</u>](https://studygolang.com/pkgdoc) 中文帮助文档中的demo: 示例代码:TCP服务器.go package main import ( "net" "fmt" ) func main { // 创建监听 listener, err:= net.Listen("tcp", ":8000") if err != nil { fmt.Println("listen err:", err) return } defer listener.Close // 主协程结束时,关闭listener fmt.Println("服务器等待客户端建立连接...") // 等待客户端连接请求 conn, err := listener.Accept if err != nil { fmt.Println("accept err:", err) return } defer conn.Close // 使用结束,断开与客户端链接 fmt.Println("客户端与服务器连接建立成功...") // 接收客户端数据 buf := make(byte, 1024) // 创建1024大小的缓冲区,用于read n, err := conn.Read(buf) if err != nil { fmt.Println("read err:", err) return } fmt.Println("服务器读到:", string(buf[:n])) // 读多少,打印多少。 }
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON
-
计算机网络架构的 OSI 七层模型、TCP/IP 四层模型
-
OSI 七层网络参考模型和 TCP/IP 协议栈
-
初步了解 OSI 七层模型和 TCP/IP 五层协议
-
计算机网络基础 1.OSI、TCP/IP、五层协议结构和各层协议 2.IP 地址的分类 3.ARP 是一种地址解析协议,用简单的语言解释其工作原理。4.各种协议简介 5.描述 RARP 协议 6.
-
网络 - 说明 OSI 7 层模型和 TCP/IP 4 层模型
-
1.3 计算机网络体系结构和 OSI 七层参考模型及 TCP/IP 参考模型
-
4.OSI 和 TCP/IP 模型