一、OSI七层模型
二、TCP/IP四层模型
三、OSI模型的七层解读
3.1 OSI七层模型小结
3.2 TCP/IP模型与OSI模型的对应关系
四、常见的网络相关协议
五、TCP和UDP协议
5.1 TCP三次握手
5.2 TCP四次挥手
5.3 UDP协议
5.4 TCP和UDP的区别
六、TCP/IP四层模型与OSI七层模型的区别
OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。
TCP/IP是一个四层的体系结构,主要包括:应用层、运输层、网际层和网络接口层。从实质上讲,只有上边三层,网络接口层没有什么具体的内容。
1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路。
3.运输层:主要为两台主机上的应用提供端到端的通信。
4.应用层:负责处理特定的应用程序细节。
1、物理层:
主要功能:利用传输介质为数据链路层提供屋里连接,实现比特流的透明传输。
作用:实现相邻计算机节点之间比特流的透明传输,尽可能屏蔽掉具体传输介质与物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。
透明传输的意义就是:不管传的是什么,所采用的设备只是起一个通道作用,把要传输的内容完好的传到对方!
2、数据链路层:负责建立和管理节点间的链路。
主要功能:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
具体工作:接受来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上一层的数据帧,拆装为位流形式的数据转发到物理层;并且还负责处理接受端发回的确认帧的信息,以便提供可靠的数据传输。
该层通常又被分为 介质访问控制(MAC)和逻辑链路控制(LLC)两个子层:
MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制。
LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
3、网络层:是OSI参考模型中最复杂的一层,也是通信子网最高的一层,它在下两层的基础上向资源子网提供服务。
主要任务:通过路由算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与物理层之间的信息转发,建立、维持与终止网络的连接。具体的说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般的,数据链路层是解决统一网络内节点之间的通信,而网络层主要解决不同子网之间的通信。例如路由选择问题。
在实现网络层功能时,需要解决的主要问题如下:
寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一 个唯一的地址。由于各个子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)
交换:规定不同的交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者包括报文转发技术和分组转发技术。
路由算法:当源节点和路由节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径,由发送端传送的接受端。
连接服务:与数据链路层的流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测
4、传输层:
OSI的下三层的主要任务是数据传输,上三层的主要任务是数据处理。而传输层是第四层,因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。
主要任务:向用户提供可靠的、端到端的差错和流量控制,保证报文的正确传输。
主要作用:向高层屏蔽下层数据通信的具体细节,即向用户透明的传送报文。
传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割,然后,传输层将数据传送到网络层,并确保数据能准确无误的传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层负责监督工作。
传输层的主要功能如下:
传输连接管理:提供建立、连接和拆除传输连接的功能。传输层在网络层的基础上,提供“面向连接”和“面向无连接”两种服务
处理传输差错:提供可靠的“面向连接”和不可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重新发送。
5、会话层:是OSI参考模型的第五层,是用户应用程序和网络之间的接口
主要任务:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
用户可以按照半双工、单工和全工的方式建立会话。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址与MAC(介质访问控制子层)地址或网络层的逻辑地址不同,他们是为用户专门设计的,更便于用户记忆。域名(DN)就是网络上使用的远程地址。
会话层的具体功能如下:
会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。 会话流量控制:提供流量控制和交叉会话功能。 寻址:使用远程地址建立会话连接。 出错控制:从逻辑上讲,会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠错。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等高级类的错误。
6、表示层:
表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。
表示层的具体功能如下:
数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
数据的加密和解密:可以提高网络的安全性。
7、应用层
应用层是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口。
主要功能:直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。应用层的主要功能如下:
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。
由于OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有所有的7层,并完全遵循它的规定。
在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下3层主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下3层主要完成通信子网的功能,上3层主要完成资源子网的功能。
DNS:域名解析协议
SNMP(Simple Network Management Protocol)网络管理协议
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,它是在TCP/IP网络上使客户机获得配置信息的协议
FTP(File Transfer Protocol)文件传输协议,它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。
TFTP(Trivial File Transfer Protocol):小文件传输协议
HTTP(Hypertext Transfer Protocol ):超文本传输协议
HTTPS(Secure Hypertext Transfer Protocol):安全超文本传输协议,它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作.
ICMP(Internet Control Message Protocol):Internet控制信息协议,互联网控制报文协议
ping ip定义消息类型有:TTL超时、地址的请求与应答、信息的请求与应答、目的地不可到达
SMTP(Simple Mail Transfer Protocol):简单邮件传送协议
TELNET Protocol:虚拟终端协议
UDP(User Datagram Protocol):用户数据报协议,它是定义用来在互连网络环境中提供包交换的计算机通信的协议
TCP(Transmission Control Protocol):传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议
TCP的连接建立是一个三次握手过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行。
我们看下专业解答:
1. 连接开始时,连接建立方(Client)发送SYN包,并包含了自己的初始序号a;——连接请求
2. 连接接受方(Server)收到SYN包以后会回复一个SYN包,其中包含了对上一个a包的回应信息ACK,回应的序号为下一个希望收到包的序号,即a+1,然后还包含了自己的初始序号b;——请求确认
3. 连接建立方(Client)收到回应的SYN包以后,回复一个ACK包做响应,其中包含了下一个希望收到包的序号即b+1。——连接确认
“不专业”的情景对话,让你明白这看似冗杂的“三次握手”
首先HTTP网络通信是双向的,也就是说客户端和服务器是双向通信的。我们可以简单的把客户端理解为你本人,服务器端理解为你的对象。而你俩要建立正常通讯,有两个前提。1. 你说的话对方能听到,而且你自己知道你说的话对方能听到; 2. 对方的话你能听到,而且对方知道Ta的话你听得到。一次模拟的“三次握手”开始了。
你对你对象说:“我喜欢你!”等待着Ta的回答(第一次握手:建立连接)
你对象回答:“听到了!”(第二次握手:你说的话对方能听到)
你对Ta说:“我知道你听到了!”(第三次握手:对方的话你能听到,而且对方知道Ta的话你听得到)
我们看下专业解答:
1. 首先进行关闭的一方(即发送第一个FIN)将执行主动关闭,而另一方(收到这个FIN)执行被动关闭。
2. 当服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
3. 同时TCP服务器还向应用程序(即丢弃服务器)传送一个文件结束符。接着这个服务器程序就关闭它的连接,导致它的TCP端发送一个FIN。
4. 客户必须发回一个确认,并将确认序号设置为收到序号加1。
“不专业”的情景对话,让你明白这看似冗杂的“四次挥手”
客户端:说完了吗?我要挂了。(第一次挥手:主动方没有数据再发送给被动方了)
服务器:还没,BlaBlaBla....(第二次挥手:被动方不会马上关闭SOCKET,它还需要再发送一些数据给主动方)
服务器:说完了。(第三次挥手:被动方所有的数据都完整的发送给了主动方,告诉主动方,被动方同意关闭连接)
客户端:挂了,拜拜。(第四次挥手:连接断开)
UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,
其实“ping”命令的原理就是向主机发送UDP数据包,然后主机确认收到数据包,如果数据包到达的消息及时反馈回来,那么网络就是通的。
UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ和微信就使用UDP协议发消息,因此有时会出现收不到消息的情况。
很简单,就一句话可以概括。不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络通信模型。