Linux入门真经-041TCP/IP模型与OSI模型

 

1、网络为什么要分层

 

假设说网络没有分层,那么会发生如下情景:一个软件厂商需要设计所有的通信细节:包括物理层的接口、信息编码、地址寻址、传输机制和保障等等等等,十分繁杂。

 

所以说分层的意义在于明确分工,让企业去做自己擅长的领域而不用过多的考虑其他细节。比如腾讯去做通讯软件而不用担心网络的连通性问题,思科去做路由器而不用担心软件的程序设计细节。

 

网络的分层模型通常认为有TCP/IP和OSI两种

 

2、TCP/IP分层模型

 

TCP/IP协议族通常被认为是一个四层的系统,如下图所示

每一层功能都有所不同:

 

链路层

通常包括操作系统中的设备驱动程序、计算机的网络接口。如网卡的MAC,文件流式化后的0101比特流,都属于这个范畴。网卡、线缆、交换机可以纳入这一层。

 

网络层

分组的选路(路由)、IP协议、ICMP协议、IGMP协议属于这一层的范畴。路由器属于这一层概念的设备。

 

运输层:

为两台主机上的应用程序提供端到端的数据通信。运输层协议有两种:TCP和UDP。

TCP为两台主机提供了可靠的数据通信,它所做的工作包括把数据分成合适的小块发给下面的网络、确认数据是否收到、设置超时时间等等。TCP为端到端提供了可靠性保证,因此上层应用程序可以忽略这些细节。

而UDP则是一种不可靠的运输层协议,他不保证数据一定能到达另一端,但是他非常轻巧,因此经常用于实时视频、语音等领域。

 

应用层

应用层则负责处理应用程序的通信细节。如用于web访问的http服务、用于远程登录的Telnet、SSH服务、qq的OICQ协议等等。

 

以http协议为例,发送数据时会经过以下过程:

 

客户端先根据http协议的格式在应用层对数据进行封装。

 

然后进入运输层,在封装数据的首部加上运输层的相关信息。(如tcp协议、源端口和目的端口)。

 

之后进入网络层,在运输层封装的数据之前加上网络层的信息(如源目IP等),此时我们称其为数据包。

 

由网络层进入到链路层,在数据包之前加上源目MAC等信息,此时我们称其为数据帧。数据帧经过网卡变为二进制的数据流,以电磁波(无线)或者高低电压(以太网)或者光信号(光纤)的形式发送给下一个网络设备。

 

数据经过中途的各个交换机、路由器等设备,千里迢迢地到达了目的服务器。

服务器网卡接收比特流之后,将它整合成数据帧,发现其目的MAC是发送给自己的,接收并拆解掉数据帧头部,变为数据包,发现目的IP是自己,将数据包进一步拆解,发现是送往自己的TCP80端口,将其中的数据传送给本地监听在80端口的程序(http的服务端),http服务端根据http协议格式去理解其中的内容并进行回应。

 

其实,经过中途的网络设备时,数据包也会被拆解和封装,以确定下一步从哪个接口转发出去。交换机会拆解到数据帧,路由器会拆解到数据包。跨越广播域时,源目MAC会发生改变;遇到NAT协议时(以后会讲到),源目IP可能会发生改变,这都是为了数据能够成功地到达目的地。现在不是特别理解没关系,后面的几节会经常给大家讲述这一过程。

 

3、TCP四层模型和OSI七层模型功能对比

 

OSI七层模型经常供初学者学习以帮助其理解网络层次。这里简要介绍一下。因为有些人习惯用OSI模型去理解网络,比如应用层协议,很多人会说则是一个七层的协议。习惯OSI模型的人,会认为数据包是一个三层的概念,数据帧是一个二层的概念;IP是三层的概念,MAC是二层的概念,端口是四层的概念。所以我们还是要了解一下,免得与别人沟通时出现隔阂。

 

由于OSI模型其实并没有在现实生活中进行具体实现或者实际使用,因此不展开介绍。下面一幅图列出了TCP模型和OSI模型的对比,对照着看一下,当你能够理解上面那段话的时候,就OK了,和习惯于用OSI理解网络的人沟通,就没有什么障碍了。(下图TCP模型中网络接口层和硬件层可以合并为链路层,这就是为什么有人把TCP模型理解成四层,有人理解成五层)

 

 

接下来的几节,会对TCP/IP模型的二到四层进行细化、展开的讲解。

最后祝大家中秋快乐!    ^_^

 

关注本公众号获取最新更新

每周一、三、五稳定更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值