详谈OSI七层网络协议和TCP/IP协议

833 阅读5分钟

OSI七层模型的简单介绍

OSI是Open System Interconnection的缩写,意为开放式系统互联。是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层

应用层(Application): 提供网络与用户应用软件之间的接口服务

表示层(Presentation) :提供格式化的表示和转换数据服务,如加密和压缩

会话层(Session) :提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制

传输层(Transimission) : 提供建立、维护和取消传输连接功能,负责可靠地传输数据(PC)

网络层(Network) :处理网络间路由,确保数据及时传送(路由器)

数据链路层(DataLink) :负责无错传输数据,确认帧、发错重传等(交换机)

物理层(Physics) : 提供机械、电气、功能和过程特性(网卡、网线、双绞线、同轴电缆、中继器)

TCP/IP协议简单介绍

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是互联网的基础,也是每个程序员必备的基本功。TCP/IP参考模型分为四层,从上到下分别是:应用层、传输层、网络互连层、网络接口层。

TCP功能

将数据进行分段打包传输
对每个数据包编号控制顺序
运输中丢失、重发和丢弃处理
流量控制避免拥塞

TCP/IP参考模型的层次结构

数据从源主机传输到目标主机要进行数据封装和数据拆包的过程。数据封装的传输过程中,在每一层要加入首部信息,有时还要增加尾部信息。数据单元在传输层被称为段(segment),在网络层被称为包(package),在链路层被称为帧(frame)。


层与层之间的合作和分工

数据从发送源传输到接收端要进行数据封装和数据拆包的过程。数据封装的传输过程中,在每一层要加入首部信息,有时还要增加尾部信息。数据单元在传输层被称为段(segment),在网络层被称为包(package),在链路层被称为帧(frame)。数据->传输层(包)->网络层(段Segment)->数据链路层(帧)

数据封装完毕传输到接收方后,将数据要进行解封装。解封装是把增加的首部信息拆掉,最后把数据传给接收端。如下图



TCP协议的三次握手和四次分手

TCP是面向连接的协议,它在源点和终点之间建立虚拟连接,而不是物理连接

在数据通信之前,发送端与接收端要先建立连接,等数据发送结束后,双方再断开连接

TCP连接的每一方都是由一个IP地址和一个端口组成


ACK: 此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中。有两个取值: 0和1,为1的时候表示应答域有效,反之为0。

FIN: 表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。

三次握手

第一次握手主机A通过一个标识为SYN标识位的数据段发送给主机B请求连接,通过该数据段告诉主机B希望建立连接,需要B应答,并告诉主机B传输的起始序列号
第二次握手是主机B用一个确认应答ACK和同步序列号SYNC标志位的数据段来响应主机A,一是发送ACK告诉主机A收到了数据段,二是通知主机A从哪个序列号做标记。
第三次握手是主机A确认收到了主机B的数据段并可以开始传输实际数据。

为什么要三次握手?

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

比如:一个人和另一个人说话,其中一个人说你能听到吗,另一人不回答,两个人交流失败,或者 一个人说中文,另个人说英文,两个人交流还是失败,为了保证客户端能够接收到服务端的信息并能做出正确的应答,所以才三次握手。

四次断开

主机A发送FIN控制位发出断开连接的请求
主机B进行响应,确认收到断开连接请求
主机B提出反方向的关闭要求
主机A确认收到的主机B的关闭连接请求

为什么四次断开

四次断开和上面的例子一样,如果没有沟通不好,就会导致链接失败,不安全。

TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。

OSI七层和TCP/IP四层的关系


  1. OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
  2. OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。
  3. OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。


OSI和TCP/IP模型就简单介绍完了,如果有理解错误的地方,欢迎指正!