TCP/IP协议和OSI七层模型说明

Posted 枫秋球

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP协议和OSI七层模型说明相关的知识,希望对你有一定的参考价值。

一、TCP/IP协议说明

在Internet中TCP/IP协议是使用最为广泛的通讯协议(互联网上的一种事实的标准)。TCP/IP是英文Transmission Control Protocol/Internet Protocol(传输控制协议/网际协议”

TCP/IP 协议是一个工业标准协议套件,专为跨广域网(WAN)的大型互联网络而设计,TCP/IP 网络体系结构模型就是遵循TCP/IP 协议进行通信的一种分层体系,现今,Internet和Intranet所使用的协议一般都为TCP/IP 协议

二、TCP/IP四层模型

第一层、网络接口层(Link Layer)

第二层、网络层(Internet Layer)

网络层对应于OSI模型的网络层,主要包含了IP、RIP等相关协议,负责数据的打包、寻址及路由,还包括网间控制报文协议(ICMP)来提供网络诊断信息

第三层、传输层(Transport Layer)

传输层对应于OSI的传输层,提供了两种客服端到服务器的通信服务,分别是TCP和UDP协议

第四层、应用层(Application Layter)

应用层对应于OSI的应用层、表达层和会话层,提供了网络与应用之间的对话接口,包含了各种网络应用层协议,比如Http、FTP等应用协议

三、OSI七层模型

TCP/IP协议和OSI七层模型说明

一.物理层(Physical Layer)

主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特(bit)

二.数据链路层(Datalink Layer)

数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路

在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路(提供可靠的通过物理介质传输数据的方法

数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输

数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等

三.网络层(Network Layer)

网络层(Network Layer)是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务

主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信,例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题

四.传输层(Transport Layer)

OSI下3层的主要任务是数据通信,上3层的任务是数据处理

传输层(Transport Layer)是OSI模型的第4层,因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用
主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输,传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文,该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBios/NetBEUI协议

传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作

传输层的主要功能如下:
传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。
处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。
监控服务质量

五.会话层(Session Layer)

通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)

六.表示层(Presentation Layer)

应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方案进行格式化;这种格式化也因所使用网络的类型不同而不同

表示层的具体功能如下:
数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
数据的加密和解密:可以提高网络的安全性。

七.应用层(Application Layer)

应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议,此外,该层还负责协调各个应用程序间的工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。

上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大

应用层的主要功能如下:
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务

八、OSI七层模型小结

由于OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有所有的7层,并完全遵循它的规定,在7层模型中,每一层都提供一个特殊的网络功能,从网络功能的角度观察:

下4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主

第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;

上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主

简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能

TCP/IP协议和OSI七层模型说明

四、TCP建立连接三次握手

1、TCP报文首部

1、源端口和目的端口:各占2个字节,分别写入源端口和目的端口

2、序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号,例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始;

3、确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号,例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这表明B正确的收到了A发送的到序号700为止的数据。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701

4、数据偏移:占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远

5、保留:占6位,保留今后使用,但目前应都位0

6、紧急URG:当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据

7、确认ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1

8、推送PSH:当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即就能收到对方的响应,这时候就将PSH=1

9、复位RST:当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接

10、同步SYN:在连接建立时用来同步序号。当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该使SYN=1,ACK=1

11、终止FIN:用来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放

12、窗口:占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接受

13、检验和:占2字节,校验首部和数据这两部分

14、紧急指针:占2字节,指出本报文段中的紧急数据的字节数

15、选项:长度可变,定义一些其他的可选的参数

2、TCP连接的建立(三次握手)



1、TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;

2、TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。

TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号

3、TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态

这个报文也不能携带数据,但是同样要消耗一个序号

4、TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态

TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号

5、当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。 

3、三次握手的作用

主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误

如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源的浪费

如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端并没有请求连接

五、TCP释放连接(四次挥手


1、客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态

TCP规定,FIN报文段即使不携带数据,也要消耗一个序号

2、服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受

这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间

3、客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)

4、服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

5、客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态

注意此时TCP连接还没有释放,必须经过2 MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态

6、服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接

可以看到,服务器结束TCP连接的时间要比客户端早一些

以上是关于TCP/IP协议和OSI七层模型说明的主要内容,如果未能解决你的问题,请参考以下文章

网络协议和管理配置

TCP/IP四层与OSI七层模型

OSI七层协议模型TCP/IP四层模型学习笔记

OSI七层协议模型TCP/IP四层模型学习笔记

OSI七层协议模型TCP/IP四层模型学习笔记

TCP/IP四层参考模型