TCP-IP网络模型有哪几层

为什么要有TCP/IP模型?

对于同⼀台设备上的进程间通信,有很多种⽅式,⽐如有管道、消息队列、共享内存、信号等⽅式,⽽对于不同设备上的进程间通信,就需要⽹络通信,⽽设备是多样性的,所以要兼容多种多样的设备,就协商出了⼀套通⽤的⽹络协议。

应用层

最上层也是我们能直接接触到的就是应用层了。应用层不关心包是如何传输的,只需要提供对应的功能即可,如HTTP、DNS、FTP、Telnet、SMTP等。

在不同设备间需要通信的时候,应用只需要把数据传到下一层,也就是传输层即可。

且应用层作用在操作系统中的用户态,而传输层及以下的层作用在内核态。

传输层

应用层的数据包会传给传输层,传输层(Transport Layer)为应用层提供网络支持。

传输层有两个重要的协议:TCP和UDP。

TCP的全称是传输控制协议(Transmission Control Protocol),大部分的应用层协议都使用的是TCP协议。TCP相比UDP来说,多了很多特性,如流量控制,拥塞控制,超时重传等,这些都是为了保证数据包能可靠的传输给对方。

UDP的全称是用户数据报协议(User Datagram Protocol)。UDP相对TCP来说就简单很多了,只是负责发送数据包,而不能保证数据包能否抵达对方。所以UDP协议的实时性相对较好,传输速率较高。也可以在应用层实现可靠传输特性来实现UDP的可靠传输。

有的包数据可能很大,如果直接传输就不好控制了。所以如果包数据大小超过MSS(TCP最大报文段长度)就要对其进行分块。这样就算一个数据块丢失也只要传输这一个块就行了,不用重新传输整个数据包。在TCP协议中,把这样一个分块叫做TCP段(Segment)。

当设备作为接收方的时候,传输层要把数据传输给应用,但这个设备可能有很多应用在同时接收数据,所以就要使用一个编号对其进行分类,这个编号就是端口。

比如 80 端⼝通常是 Web 服务器⽤的,22 端⼝通常是远程登录服务器⽤的。⽽对于浏览器(客户端)中的每个标签栏都是⼀个独⽴的进程,操作系统会为这些进程分配临时的端⼝号。

传输层报文中会携带目标端口号,所以接收设备能识别数据包是发送给哪个应用的。

最后更新于