首页 > 编程知识 正文

研究应用层和传输层协议,传输层以上的协议

时间:2023-05-05 08:06:06 阅读:257907 作者:3807

   PS:针对上一篇tcp协议中说到的端到端服务,这里我们再通过传输层协议和应用层协议之间的关系来加深端到端服务的学习和理解。


1. 传输层协议和应用层层协议的关系

  在应用层,我们知道有很多协议,比如常见的有http,tfp,telnet等,传输层常见的协议有tcp,udp等。通常在发送数据时,应用层是怎么来把数据发送给指定传输层的协议?而在接收数据时,传输层又是怎么把数据上交给指定的应用层协议来处理的?

  带着这几个问题,我们思考一下传输层的协议是怎么来区分应用层的协议呢?

  通常传输层协议为应用层的每一个协议标识了一个端口号,也就是传输层通过不同的端口号来区分不同的应用层协议,传输层协议和应用层协议之间的关系,如图1所示:


图1-传输层协议和应用层协议之间的关系

  从图1中不难看出,传输层加了端口号来标识应用层的每个协议,那么我们可以知道传输层协议和传输层协议之间的关系:

1.HTTP协议默认使用了TCP的80端口号
2.FTP协议默认使用TCP的21端口号
3.TELNET协议默认使用了TCP的23端口号
4.SMTP协议默认使用了TCP的25端口号
5.DNS协议默认使用了UDP的53端口号
6.RIP协议默认使用了UDP的520端口号
7.DHCP协议默认使用了UDP的67端口号

  一般来说这些默认端口号是熟知端口(0 - 1023),由IANA组织已经分配好的,最好不要随意改动,以免出现端口不可用或被占用,造成网络无法通信的情况。


图2-端口和服务的关系

  在图2中可以看到,服务器上运行了web服务,smtp服务,pop3服务,这三个服务分别使用了不同的协议和服务端端口号与客户端进行通信,另外这三台计算机分别也使用了不同客户端端口号和服务端通信。现在这三台计算机分别要访问服务器上的不同服务,发送了3个数据包。

  A计算机要访问服务器上的web服务,因为服务器上的web服务使用了http协议和80端口跟客户端进行通信,所以A计算机发送的数据包,必须封装服务器的目标地址和服务对应的目标端口号,同时服务器也要通过这个数据包拿到源地址和源端口号,然后和客户端通信,因此我们会看到数据包中封装的这些信息。

  对于B计算机和C计算机都是同理,当服务器收到这三个数据包,会根据数据包中不同的目标端口号交给不同的服务,然后服务器上的服务会根据数据包中不同的源端口号再把数据返回给不同的计算机。

  现在我们基本上明白了,ip地址是用来定位网络上的某一台服务器,而端口号是用来定位服务器上的某一个服务。到这里,相信你对端到端服务有更深的理解了。


2. 传输层协议和网络层协议的区别


图3-传输层协议和网络层协议的区别

  简单来说,传输层协议主要用于主机的进程与进程之间的相互通信,而网络层协议主要应用于主机与主机之间的相互通信。


3. 套接字地址


图4-套接字地址

  实际上TCP使用“连接”(不仅仅是端口)作为最基本的抽象,同时将TCP连接的端点称为插口,或套接字(socket)。

  前面我们说过TCP协议是通过IP地址+端口号的形式来确定数据发送的目标主机的目标进程。那么套接字和端口,IP地址的关系就是:套接字其实就是IP地址和端口号,比如在网络编程里用套接字来表示ip地址和端口号。


4. 关于字节号和序号

  不知道大家还有没有印象,之前我们在14-tcp协议中的第三小节(TCP对数据封装过程)简单提到过字节和序号,如果有小伙伴不太理解的话,这里再详细介绍一下字节号和序号。

  字节号:TCP是面向字节流的,因此TCP会对字节数据进行编号,即每一个字节数据都会有一个编号,这个编号就叫字节号,编号的范围是:0 ~ 2^32-1,需要注意的是TCP对字节数据编号不是从0和1开始的,而是根据系统内核机制来随机编号的。

举个栗子:
  现在主机A随机产生了一个编号为1024的字节号,如果现在主机A要发送一个数据,该数据为6000字节大小,那么该数据的字节号范围为1024 - 7023。

  序号:前面我们说过序号是针对数据段的,由主机发送的这6000字节数据以数据段为单位,封装成多个大小不同的tcp数据段报文在网络中传输。因为序号是基于字节号的,所以tcp协议会给每个tcp数据段报文分配一个序号,而这个序号就是tcp数据段报文的第一个字节的编号(字节号)。

举个栗子:
  比如现在主机A要发送一个6000字节大小的数据,tcp协议对数据分成5个数据段报文来发送,前4个数据段报文都是1000字节,最后一个报文是2000字节。

假如第一个字节的编号为110
那么第一个报文的字节号范围:110 ~ 1109
第二个报文的字节号范围:1110 ~ 2109
第三个报文的字节号范围:2110 ~ 3109
第四个报文的字节号范围:3110 ~ 4109
第五个报文的字节号范围:4110 - 6109
到这里,序号已经间接给出来了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。