简述OSI七层参考模型与TCP/IP四层模型

一、OSI——开放式系统互联

为了更好地促进互联网络的研究和发展,国际标准化组织ISO制定了网络互连的七层框架的一个参考模型,称为开放系统互连参考模型,简称OSI/RM(Open System Internetwork Reference Model)。  OSI参考模型是一个具有7层协议结构的开放系统互连模型,是由国际标准化组织在20世纪80年代早期制定的一套普遍适用的规范集合,使全球范围的计算机可进行开放式通信

OSI体系结构展示:

7 应用层    抽象语言-->编码

6 表示层    编码-->二进制

5 会话层    提供应用程序地址  维持网络应用和服务器之间的会话连接

上三层:应用程序加工数据的部分  

下四层:数据流层,负责数据传输

4 传输层    数据分段,提供端口号   

3 网络层     通过路由选择算法为分组通过通信子网选择恰当的传输路径

2 数据链路层【MAC(介质访问控制层)LLC(逻辑链路控制层)FCS(帧效验序列)】 传输以帧为单位的数据     

1 物理层    提供物理连接和二进制传输

OSI核心思想:分层

什么叫做分层:属于同一层面的不同功能具有相同或相似的目的,不同层次之间的功能将存在上一层都是在下一层提供的服务的基础上提供增值服务。

分层的作用:

1、保证各层次之间的独立性

2、更易于标准化

3、便于学习

二、TCP/IP——网络通讯协议

TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议

学习了OSI的7层体系结构模型后学习TCP/IP就简单多了,TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次

TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层

下面我们来看一下TCP/IP的体系结构:

4 应用层:类似OSI模型中的7,6,5三层。即应用层、表示层、会话层。

3 传输层:类似OSI模型中的传输层。

2 网络层:类似OSI模型中的网络层。

1 网络访问层:类似OSI模型中的数据链路层和物理层的功能。

TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有UDP、TCP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网络接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等

参考

 TCP/IP协议_百度百科 (baidu.com)https://baike.baidu.com/item/TCP/IP%E5%8D%8F%E8%AE%AE#:~:text=TCP%2FIP%E4%BC%A0%E8%BE%93,%E4%B8%A4%E4%B8%AA%E9%87%8D%E8%A6%81%E7%9A%84%E5%8D%8F%E8%AE%AE%E3%80%82

状 态 描 述

CLOSED          关闭状态,没有连接活动或正在进行

LISTEN            监听状态,服务器正在等待连接进入

SYN RCVD       收到一个连接请求,尚未确认

SYN SENT          已经发出连接请求,等待确认

ESTABLISHED     连接建立,正常数据传输状态

FIN WAIT 1        (主动关闭)已经发送关闭请求,等待确认

FIN WAIT 2        (主动关闭)收到对方关闭确认,等待对方关闭请求

TIMED WAIT        完成双向关闭,等待所有分组死掉

CLOSING              双方同时尝试关闭,等待对方确认

CLOSE WAIT        (被动关闭)收到对方关闭请求,已经确认

LAST ACK           (被动关闭)等待最后一个关闭确认,并等待所有分组死掉

TCP的三次握手

第一次握手:客户端发送网络包,服务端收到了。

这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。

第二次握手:服务端发包,客户端收到了。

这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。

第三次握手:客户端发包,服务端收到了。

这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。

因此,需要三次握手才能确认双方的接收与发送能力是否正常。

四次挥手

TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务器均可主动发起挥手动作。

刚开始双方都处于 ESTABLISHED 状态,假如是客户端先发起关闭请求。四次挥手的过程如下:

第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。

即发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。

第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。

即服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。

第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

即服务端没有要向客户端发出的数据,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),服务端进入LAST_ACK(最后确认)状态,等待客户端的确认。

第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

即客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。

收到一个FIN只意味着在这一方向上没有数据流动。客户端执行主动关闭并进入TIME_WAIT是正常的,服务端通常执行被动关闭,不会进入TIME_WAIT状态。

在socket编程中,任何一方执行close()操作即可产生挥手操作。

可参考以下链接

面试官,不要再问我三次握手和四次挥手 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/86426969#:~:text=%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%92%8C%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B%E6%98%AF%E5%90%84%E4%B8%AA%E5%85%AC%E5%8F%B8%E5%B8%B8%E8%A7%81%E7%9A%84%E8%80%83%E7%82%B9%EF%BC%8C%E4%B9%9F%E5%85%B7%E6%9C%89%E4%B8%80%E5%AE%9A%E7%9A%84%E6%B0%B4%E5%B9%B3%E5%8C%BA%E5%88%86%E5%BA%A6%EF%BC%8C%E4%B9%9F%E8%A2%AB%E4%B8%80%E4%BA%9B%E9%9D%A2%E8%AF%95%E5%AE%98%E4%BD%9C%E4%B8%BA%E7%83%AD%E8%BA%AB%E9%A2%98%E3%80%82,%E5%BE%88%E5%A4%9A%E5%B0%8F%E4%BC%99%E4%BC%B4%E8%AF%B4%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E5%88%9A%E5%BC%80%E5%A7%8B%E5%9B%9E%E7%AD%94%E7%9A%84%E6%8C%BA%E5%A5%BD%EF%BC%8C%E4%BD%86%E6%98%AF%E5%90%8E%E9%9D%A2%E8%B6%8A%E5%9B%9E%E7%AD%94%E8%B6%8A%E5%86%92%E5%86%B7%E6%B1%97%EF%BC%8C%E6%9C%80%E5%90%8E%E5%B0%B1%E6%AD%87%E8%8F%9C%E4%BA%86%E3%80%82%20%E6%B1%82%E8%81%8C%E8%80%85%EF%BC%9A%E7%AC%AC%E4%B8%80%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%B0%B1%E6%98%AF%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BB%99%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E5%8F%91%E9%80%81%E4%B8%80%E4%B8%AA%E6%8A%A5%E6%96%87%EF%BC%8C%E7%AC%AC%E4%BA%8C%E6%AC%A1%E5%B0%B1%E6%98%AF%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%94%B6%E5%88%B0%E6%8A%A5%E6%96%87%E4%B9%8B%E5%90%8E%EF%BC%8C%E4%BC%9A%E5%BA%94%E7%AD%94%E4%B8%80%E4%B8%AA%E6%8A%A5%E6%96%87%E7%BB%99%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%8C%E7%AC%AC%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%B0%B1%E6%98%AF%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%94%B6%E5%88%B0%E6%8A%A5%E6%96%87%E5%90%8E%E5%86%8D%E7%BB%99%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%91%E9%80%81%E4%B8%80%E4%B8%AA%E6%8A%A5%E6%96%87%EF%BC%8C%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%B0%B1%E6%88%90%E5%8A%9F%E4%BA%86%E3%80%82

三、五层协议

五层协议的体系结构

5  应用层:确定进程之间通信的性质以满足用户的需要。

4  传输层:负责主机中两个进程之间的通行。

3  网络层:负责为分组交换网上的不同主机提供通信。

2  数据链路层:负责将IP数据报封装成合适在物理网络上传输的帧格式并传输

1  物理层:负责将比特流在结点间传输,即负责物理传输

简述OSI七层参考模型与TCP/IP四层模型_第1张图片

图片出处:

5层体系结构图片_百度百科 (baidu.com)

各层数据形式

 应用层——数据报文

传输层——数据段

网络层——数据包

数据链路层——数据帧

物理层——比特流

四、TCP/UDP的不同

1,TCP是面向连接的协议,UDP是无连接的协议3
2,TCP的传输是可靠的,而UDP的传输“尽力而为”
3,TCP可以进行流控,而UDP不行
4,TCP可以进行数据分段,而UDP不行
5,TCP的传输速度较慢,占用资源较大;UDP传输速度较快,占用资源小。
TCP/UDP的应用场景
TCP协议更适用于对效率要求较低,但是对准确性要求较高的场景;UDP协议更使用于对效率要求较高,对准确性要求较低的场景。

你可能感兴趣的:(网络)