基本网络概念之网络分层

网络通信的不同方面被分解为不同的层。每一层表示为物理硬件与所传输信息之间的不同抽象层次。在理论上,每一层只与紧挨其上和其下的层对话。将网络分层,这样就可以修改甚至替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。如下图:

上图显示了你的网络中可能存在的协议栈。尽管如今在Internet上中间层协议相当稳定,但是上层和下层的协议变化很大。有些主机使用Ethernet(以太网);有些使用WiFi;有些使用PPP;还有一些主机使用其他的协议。类似地,这个栈顶层使用的协议完全取决于主机运行的程序。关键是,从栈的顶层来看,底层协议是什么并不重要,反之亦然,从底层来看,也不关心顶层协议是什么。这个分层模型实现了应用协议与网络硬件物理特性以及网络连接拓扑结构的解耦合。

有几种不同的分层模型,分别适合特定类型网络的需要。本书采用适用于Internet的标准TCP/IP四层模型,如下图:

在这个模型中,应用程序如Firefox运行在应用层,只与传输层对话。传输层只与应用层和网际层对话。网际层则只与主机网络层和传输层对话,绝不直接与应用层对话。主机网络层通过线缆、光纤或其他介质将数据移动到远程系统的主机网络层,然后再通过上述各层将数据逐级上移传输到远程系统的应用层。

例如,当web浏览器向web服务器发送获取网页的请求时,浏览器实际上只与本地客户机的传输层对话。传输层将请求分解为TCP片,向数据添加序列号和校验和,然后将请求传递给本地网际层。网际层根据本地网络所需的大小将各TCP片分成IP数据报,并传递到主机网络层以便通过线缆传输数据。主机网络层将数字数据编码为适合特定物理介质的模拟信号,将请求发送到线缆,目标地址的远程系统的主机网络层可以由此读取请求。

远程系统的主机网络层将模拟信号解码为数字数据,将生成的IP数据报传递给服务器的网际层。网际层简单地检查IP数据报是否被破坏,如果已经分片则重组数据,然后传递给服务器的传输层。服务器的传输层检查是否所有的数据都已到达,对于丢失或破坏的部分则要求重传(这个请求实际上将向下通过服务器的网际层,再通过服务器的主机网络层,回到客户端系统,然后再在客户端系统向上返回客户端的传输层,传输层再通过本地网际层和主机网络层重传前面丢失的数据。所有这些对应用层是完全透明的)。一旦服务器的传输层接收到足够多的连续顺序数据报,就将其重组写入一个流,由服务器应用层上运行的web服务器读取。服务器响应这个请求,再通过服务器系统的各个分层发回响应,通过Internet进行传输并分发给web客户端。

可以猜到,实际的过程更为错综复杂。主机网络层是最复杂的,特意地隐藏了很多细节。不过,90%的情况下java代码都将在应用层工作,只需要与传输层对话。其他10%的时间会在传输层处理,与应用层或网际层对话。主机网络层的复杂性对你是隐藏的,这是分层模型的关键。

提示:如果阅读网络相关文献,你可能会看到另一个OSI七层网络模型,称为开放系统互联参考模型(Open Systems Intercommection Reference Model,OSI)。对于java网络程序,OSI模型过于复杂了。OSI模型与本书使用的TCP/IP模型之间最大的区别是,OSI模型将主机网络层分为数据链路层和物理层,另外在应用层和传输层之间插入了表示层和会话层。OSI模型更加一般化,更适合于非TCP/IP网络,不过大多数情况下仍然过于复杂。在任何情况下,java的网络类只工作于TCP/IP网络中,而且始终运行在应用层或传输层上。

时间: 2024-08-04 01:13:52

基本网络概念之网络分层的相关文章

基本网络概念之网络分层的各层介绍

主机网络层 在基于IP的Internet(Java唯一真正理解的网络)的标准参考模型中,网络中隐藏的部分属于主机网络层(host-to-work layer,也称为链路层.数据链路层或网络接口层).主机网络层定义了一个特定的网络接口(如以太网卡或WiFi天线)如何通过物理连接向本地网络或世界其他地方发送IP数据报.主机网络层中,由连接不同计算机的硬件(线缆.光纤电缆.无线电波或烟信号)组成的部分有时称为网络的物理层. 网际层 在OSI模型中,网际层使用了一个更一般的名字,称为网络层(networ

Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php

Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php 1. RFC2396标准 including HTML 4.01 section 17.13.4, and also RFC 1866 (which is supercededby the W3C HTML recommendations). 在form的ContextType是[x-www-form-urlencoded]的时候会对form中的键/值对进行编码,空格被转义成+,

OpenStack网络指导手册 -基本网络概念

转自:http://blog.csdn.net/zztflyer/article/details/50441200 目录(?)[-] 以太网Ethernet 虚拟局域网VLANs 子网和地址解析协议Subnets and ARP DHCP IP TCPUDPICMP [前言] 无论学习OpenStack或CloudStack,或是其他的云平台产品,网络都是举足轻重的概念和技术.但是网络知识本身就很庞大和复杂,学习起来非常困难,甚至不知道从何处下手.前段时间翻看OpenStack的文档,发现里面的

CloudStack网络概念

转载:http://www.300wl.com/news/2016/0203/206663.html CloudStack网络模式分为简单网络(Basic Networking)和高级网络(Advanced Networking) Basic Networking提供在一个区域(Zone)内无隔离的网络环境,虚拟机间隔离通信功能由安全组实现. CloudStack在简单网络和高级网络中均可支持安全组功能 Advanced Networking提供在一个区域(Zone)内隔离的网络环境,对于隔离方

Linux 网络概念介绍

网络模型 OSI 网络模型 VS TCP/IP 模型 Linux 实际按照 TCP/IP 模型,实现了网络协议栈. Linux 网络栈 网络包在每一层的处理逻辑,都取决于各层采用的网络协议.处理过程就是不断拆包,封包的过程. Linux 通用 IP 网络栈 我们从上到下来看这个网络栈,你可以发现, 最上层的应用程序,需要通过系统调用,来跟套接字接口进行交互: 套接字的下面,就是我们前面提到的传输层.网络层和网络接口层: 最底层,则是网卡驱动程序以及物理网卡设备. Linux 网络收发流程 当一个

iOS开发——网络OC篇&网络爬虫简单介绍

网络爬虫简单介绍 先来看看网络爬虫的基本原理: 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中.此外,将这些URL放进已抓取URL队列. 4.分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环. 以下内容均为本人个人

模式识别之卷及网络---卷及网络 训练太慢

摘要:CIFAR-10竞赛之后,卷积网络之父Yann LeCun接受相关采访.他认为:卷积网络需要大数据和高性能计算机的支持:深层卷积网络的训练时间不是问题,运行时间才是关键.Yann LeCun还分享了他正在做的一些最新研究. Kaggle近期举办了一场 关于CIFAR-10数据集的竞赛,该数据集包含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来. 很多竞赛选手使用了卷积网络来完成这场竞赛,其

Linux程序设计学习笔记----网络编程之网络数据包拆封包与字节顺序大小端

网络数据包的封包与拆包 过程如下: 将数据从一台计算机通过一定的路径发送到另一台计算机.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示: 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据包(packet),在链路层叫做帧(frame).数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理. 上图对应两台计算机在同一网段中的情况,

网络基础 and 网络HTTP

网络基础 为什么要学习网络编程 在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻视频:优酷.百度视频.搜狐视频.爱奇艺视频音乐:QQ音乐.百度音乐.酷狗音乐.酷我音乐LBS:百度地图.高德地图.大众