java 网络学习 之OSI七层通信模型 (1)

OSI模型是从底层往上层发展出来的。

这个模型推出的最开始,是是因为美国人有两台机器之间进行通信的需求。

需求1:

科学家要解决的第一个问题是,两个硬件之间怎么通信。具体就是一台发些比特流,然后另一台能收到。于是,科学家发明了物理层:

它的主要作用是连接不同的终端,使他们可以互相传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。 后来物理层扩展了无线电波还有其它介质来传输信号

为了统一传输设备接口,定义了物理设备标准,如传入介质的接口规范类型、传输介质的传输速率等。

典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等,这些都是硬件的规范。

常用设备:网线光纤、同轴电缆、集线器(HUB)、Modor  

 

需求2:

现在通过网线我能传输信号了,但是我不满足,我想要通过这些信号表达一些有意义的内容,并且发送给直连终端

这要做到一下几点 :

1 要定义信号的传输格式 按照指定格式传输 

2 对于数字信号要有纠错功能 ,保证传输过去的信号是正确的

3 如果发送失败要有重发功能,为了重发方便,数据以帧为单位,如果某一帧错了,只重传这一帧。 

于是,发明了数据链路层并且出现了多种链路协议,

链路协议是指通过链路传送数据的一套规则,其中包括建立、维持和断开链路的规则,还包括在链路上传送数据的控制信息格式,以及对控制信息进行解释的规则,这个协议是用物理层设备连接起来的2个设备之间的通信规则。

数据链路层协议的代表包括:SDLC STP、 以太网令牌环HDLC帧中继ISDNATMIEEE 802.11FDDIPPP等。

设备:二层交换机、网桥、数据帧,网卡

 

需求3:

现在可以在直连的两个终端之间传输数据了,但是在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。如何选择最优化最正确的路径?

 

网络层的任务就是选择合适的网间路由和交换结点,确定一条传输链路。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。

TCP/IP协议栈的网络层位于链路层和传输层之间,其主要协议包括IP、ARP、RARP、ICMP、IGMP等。其中IP协议是TCP/IP网络层的核心协议,它规定了数据的封装方式和网络节点的标识方法,用于网络上数据的端到端的传递。TCP/IP的网络层主要定义了以下协议:(1)IP:负责网络层寻址、路由选择、分段及包重组;2)ARP:负责把IP地址解析成物理地址。在实际进行通信时, 物理网络所使用的是物理地址,IP地址是不能被物理网络识别的。对于以太网而言,当IP数据包通过以太网发送时,以太网设备是以MAC地址传输数据的,ARP协议就是用来将IP地址解析成MAC地址的;(3)RARP:负责把物理地址解析成IP地址,常用于无盘工作站通过其MAC地址从服务器处解析对应的IP地址;(4)ICMP:定义了网络层控制和传递消息的功能,可以报告IP数据包传送过程中发生的错误、失败等信息,提供网络诊断功能。ping和tracert两个使用极其广泛的测试工具就是ICMP消息的应用;(5)IGMP:负责管理IP组播组。用于支持在主机和路由器之间进行组播传输数据,它让一个物理网络上的所有路由器知道当前网络中有哪些主机需要组播。组播路由器需要这些信息以便知道组播数据包应该像哪些接口转发

 

设备:路由器、防火墙  

需求4:

现在我可以找到网络上任意一台计算机,并向他发送信心了,好happy,但是有时候我想要保证我的消息被发送到了目的地,有时候我却不要求那么可靠的连接,怎么控制?

 

所以传输控制层出现了,第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所谓透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。

例如TCP,是用于发大量数据的,我发了1万个包出去,另一台电脑就要告诉我是否接受到了1万个包,如果缺了3个包,就告诉我是第1001,234,8888个包丢了,那我再发一次。这样,就能保证对方把这个视频完整接收了。

例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏,也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就很低,因为它会不停地告诉主机我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,还不如用UDP,主机发出去就算了,丢几个包你就卡一下,算了,下次再发包你再更新。

 

协议:TCPUDPRTPSCTPSPXATPIL

 

需求5:

现在我们有了可靠连接也有了不可靠的连接,都可以传输数据,传输控制层有效的控制了数据包的到达率,

但是我想控制双方通信的机制(半双工,全双工),想要记录当前连接的状态信息。

于是,发明了会话层。会话层的作用就是建立和管理应用程序之间的通信。

例如,确定是双工工作(每一方同时发送和接收), 还是半双工工作(每一方交替发送和接收)。当发生意外时(如已建立的连接突然断了),要确定在重新恢复会话时应从何处开始。

 

会话控制包括 (建立、管理、终止会话),在五层模型里面已经合并到了应用层。 对应主机进程,指本地主机与远程主机正在进行的会话)

协议:ASAPTLSSSH、ISO 8327 / CCITT X.225、RPCNetBIOSASPWinsockBSD sockets

 

需求6:

现在我能控制当前的这个连接了。但是报文传输的时候,

想加解密报文或者想要把报文转化成其他编码或者想要压缩或者解压文件等。

所以 表示层(presentation) 出现了,它的出现使得报文有了更多表现形式。

协议:XDRASN.1SMBAFPNCP

 

需求7:

现在我可以控制报文格式了,但是我不想自己去 做展示层做的那些事儿,

所以 应用层出现了,用户只要发送一个请求,传输一些请求数据和头文件,

就会自动做 加解密,压缩,编码等操作了。

功能:提供给终端用户的功能 ,文件、打印、消息、数据库和应用服务

协议:HTTPSMTPSNMPFTPTelnetSIPSSHNFSRTSPXMPPWhoisENRP

协议内容: 规范用户传递给表示层的数据内容,格式。

 

总结:

协议是两台服务器之间通讯,换取数据用的一种双方协定。

获取数据的方式是调用另外一台服务器的服务。

找到另外一台服务器的过程是 路由器的 功能。

找到另外一台服务器上的某个 服务 是 tomcat  或者ngnix 等 web服务器 的功能。

服务的实现语言可以有多种,java,c# ,c++,php,perl,go 等,分别部署在可以解析这个语言的服务器上。

不同的语言返回的数据实体,自然就是 对应语言下定义的实体,其他语言不可以解析。

为了实现 不同的语言之间的服务调用,webservice 出现了,他的返回形式是XML 语言,这样就实现了,不同语言服务之间的调用。

调用服务的过程时间消耗包括:路由时间,定位服务的时间,服务执行的时间,返回数据的时间。

传输过程中,数据的传输格式 也不一样,不同的格式传输速度也不一样。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值