HCIA-Access V2.5_2_2网络通信基础_TCP/IP模型结构
TCP/IP模型结构
OSI参考模型VS TCP/IP模型
OSI参考模型采用分层架构,一共分为七层,由于OSI参考模型和协议比较复杂,所以并没有得到广泛应用,真正得到广泛应用的是TCP/IP,TCP/IP框架跟OSI参考模型差不多,这主要将OIS参考模型中的会话层,表层,应用层都合并为了应用层,另外两个模型中各层使用的协议也是不一样的,对于TCP/IP来说,它并不是指一个协议,而是多个协议的集合,那么具体TCP/IP模型包含哪些协议呢?
TCP/IP分层模型
如图,就列举了TCP/IP各层的功能以及对应的协议,首先是物理层,物理层传送的是二进制比特流,主要定义就是接口和线缆的一些规范。
数据链路层主要实现的就是物理介质访问,它的协议有很多,包括以太网协议,802.3,PPP协议,以及后面学习到的EPON和GPON协议,也是一个二层协议,它们的主要功能是实现物理层访问,像以太网,这就主要通过MAC地址实现介质访问,实现同一网段的数据转发,那么工作在数据链接层的设备有哪些呢?网桥,还有交换机及后面学到的OLT,ONU,它们都是工作在数据链路层。
第三层,网络层主要依靠的就是逻辑的IP地址,实现寻址和路由选择的功能,负责不同网段的数据转发,将数据从源转发到目白地,工作在网络层的设备主要就是路由器,以及三层交换机,传输层主要建立端到端的连接,主要的协议就是TCP,还有 UDP,而对于应用层主要为用户提供程序网络接口,直接为用户提供软件服务,应用层的协议有很多,图中列举了一些,比如Telnet远程登录协议,FTP文件传输协议,每一层的功能虽然不一样的,但是层与层之间是我衔接关系的。
TCP/IP模型的层间通信与数据封装
主机A要把数据传给主机B,是需要每一层进行配合的,那么可以看到主机A把数据发给主机B,必需经过封装和解封装这个过程,什么是数据封装,什么是数据解封装?封装的意思就是协议栈由上往下传递,并且添加各层报关和报文的过程,我们就把它叫做数据封装,而解封装就恰好相反。
那么具体封装过程是如何实现的,假设主要A发了一个Hello这样的一个文字,发送出来之后,从QQ发出来了,那么我们先会交给应用层进行封装,应用层封装完之后交给传输层,转输层会将上层收到数据作为净荷,在基础上加一个TCP的头部或者UDP的头部,然后再交给网络层,网络层会在收到的上层的基础上再加上一个IP头部,然后交给数据链路层,数据链路层也会加上以太网头部,还有尾部,最终变成01这样的一个比特流在物理线路上进行传输,也就是说用户发出了一个Hello这样的文字,先是交给传输层,传输层加上TCP或者是UDP的头部,然后交给网络层,网络层添加P头部,然后交给数据链路层,数据链路层加上以太网的头部,还有尾部,这样的话,最终再变成0101这样的类似的比特流才矣从物理线路上传出去,那么这个过程就叫做数据封装。
而解封装就是协议栈由下往上传,并且剥离各层报头和报文的过程,我们就把它叫做解封装。
物理层的功能
物理层主要定义了电气的一些规范, 当然还定义了一些传输速率,传输距离,还有物理连接方式等,那像我们的 GPON里面,它的传输速率是上行1.25G下行是2.5G,传输距离最大可以支持40公里,连接方式主要采用光纤进行。
数据链路层
数据链路层主要工作在数据链路层的协议就是以太网,以太网主要依靠MAC地址实现介质访问功能,而数据链路层有的协议又细分为MAC子层和LLC子层,MAC子层指定数据如何通过物理线路进行传输,并与物理层进行通信。而LLC子层,逻辑链路控制子层,它的主要作用识别协议类型并对数据进行封装,通过网络进行传输,那么数据链路层的上层是IP,还是其它的一些协议,就用LLC来识别
数据链路层地址及协议
MAC就是机器的名字,MAC地址一共有48位,前24位代表厂商编号,后24位是序列号,前24位一般是需要有统一的机构去分配的,后面的序列号是厂商自己去定义的。
网络层功能与设备
网络层的功能主要就是它提供了一个逻辑的IP地址,可以实现不同网段的一个数据转发,工作在网络层的设备就是路由器和三层交换机。
对于路由器来说,它的每一个接口都对应了一个网段,网络中是不能出现重复的网段的,同时,路由器会根据路由表进行数据转发,过来一个数据包,先查看目的地址,在不在自己的路由表里,如果在,则按照路由表进行转发,如果不在,则直接丢弃。
如图,主机A要跟主机B进行通信,中间经过了多台路由器,主机A要想把数据发送出去,首选要进行数据封装,封装伟输层,封装网络层,封装数据链路层,最终变成0101这样的一个比特流,通过物理线路上传输到达路由器A,路由器A这个时候会解封装,解析数据链路层,解析网络层,然后看一下网络层IP地址在不在自己的路由表里面,如果在,那么这个时候才能够转发,结果它在查表的时候发现告诉它应该先转发给路由器B,它在发出去之前需要重新进行封装,封装完之后再交给路由器B,路由器B同样经过解封装,看一下目的地有没有在自己的路由表里,如果在然后向对应的端口进行转发,所以转发到了路由器E,路由器E同样查路由表找到对应的出口,转发到路由器C,路由器C同样查找路由表转发到主机B,主机B收到之后,它就会去看数据链路层,看看MAC地址是不是自己的,看一下网络层的IP地址是不是自己的,最终传给应用层,所以可以看到整个过程中,中间路由器它是不会解析四层协议的,那么整个数据只有到达接收端的时候才会解析应用层的数据,这个就是网络层工作的一个过程。
网络层协议
网络层主要协议是IP,它屏蔽掉了物理层地址的一些差异性,不管二层使用的是X.25协议,还是以太网协议,还是PPP协议,最后通过路由器互联之后,统一都封装成IP包的形式,所以这个时候路由器就直接通过查路由表进行数据转发,这样的话就使不同的网络互联成为了可能,网络层的协议,其实除了IP协议之外,还有些配合的协议,比如说ARP,RARP,还有ICMP这些协议都是来给IP服务的。比如ARP,地址解析协议,那么它主要在什么情况下使用,我们知道IP,但是不知道MAC的时候,就会发送ARP请求去询问主机对应的MAC地址是多少,那么这个就是ARP,另外数据链路层有MAC地址。
网络层地址
IPf地址是一个逻辑地址,那么它包含两个部分,主要包含了网络ID和主机ID,通过网络ID和主机ID,就可以唯一标识一台网络设备,通过IP地址采用点分十进制的形式进行表示。
传输层主要协议
传输层第一个就是分段数据和数据段合并,应用层过来的报文可能会比较大,那么这个时候我们可以对数据做分段的一个处理,另外传输层的功能就是建立端到端的连接,将数据从一台主机发往另外一台主机,同时对于TCP而言,它是可以保证数据的正确传输的,而对于UDP来说,这是不支持的,所可可以看到它描述的就中可选的,只有TCP支持,而UDP是不支持的。
那么TCP和UDP分别有什么不同,传输层的协议主要就是TCP还有UDP,对于TCP而言,它是面向连接的服务,它在传送数据之前需要通过三次握手建立连接,连接建立成功之后,才能够传送数据,另外对于TCP而言,它的头部里面会有序列号和确认序列号等字段,用来保证数据的可靠性传输,所以它适用于可靠性要求较高的场景。但是它同样也有自己的缺点,因为头部需要携带一些参数,所以导致我们的数据开销较大,不适合于关注效率的场景。第二个就是UDP,UDP提供的接单的无连接的服务,在传送数据之前我们是无需要建立连接的,但是它的缺点就是不保证数据的可靠性传输,基本上没有这些序列号和确认序列号,所以这是没有办法保证数据按照顺序到达目的地的,它的优势是什么呢?开销小,传输效率高,所以通常这是适用于关注效率的应用,像语音协议,我们通常使用SIP或者H248协议,对于语音协议来说,它的传输层使用的是UDP作为传输层协议,那么语音就不要求可靠性了,当然也是需要的,如果语音要求安全性,那么一般由应用层自己来负责,这个就是TCP和UDP的区别。