应用层和传输层的关系

看了下面的介绍,才明白为什么那些tomcat,weblogic默认端口都是80开头的了

2.3  应用层协议

传输层协议添加端口就可以标识应用层协议。应用层协议代表着服务器上的服务,服务器上的服务如果对客户端提供服务,必须在TCP或UDP端口侦听客户端的请求。

2.3.1  应用层协议和传输层协议的关系

传输层的协议TCP或UDP加上端口就可以标识一个应用层协议,TCP/IP协议中的端口范围是从0~65535。

1.端口的作用

端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过"IP地址+端口号"来区分不同的服务的。

服务器一般都是通过知名端口号来识别的,如图2-2所示。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority,IANA)来管理。

 
图2-2  应用层协议和传输层协议的关系

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

下面是一些常见的应用层协议和传输层协议之间的关系。

HTTP默认使用TCP的80端口标识

FTP默认使用TCP的21端口标识

SMTP默认使用TCP的25端口标识

POP3默认使用TCP的110端口

HTTPS默认使用TCP的443端口

DNS使用UDP的53端口

远程桌面协议(RDP)默认使用TCP的3389端口

Telnet使用TCP的23端口

Windows访问共享资源使用TCP的445端口

3.知名端口

知名端口即众所周知的端口号,范围从0~1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等。

网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在地址栏上指定端口号,方法是在地址后面加上冒号":"(半角),再加上端口号。比如使用"8080"作为WWW服务的端口,则需要在地址栏里输入"http://www.cce.com.cn:8080"。

但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。

客户端在访问服务器时,源端口一般都是动态分配的1024以上的端口。
### 应用层传输层关系及交互方式 #### 关系概述 应用层传输层在计算机网络体系结构中紧密相连,二者共同协作以实现端到端的数据通信。应用层负责直接与用户交互并提供具体的服务功能,例如网页浏览、文件传输电子邮件等[^1]。而传输层则是连接应用层与底层网络的关键环节,其主要职责在于为应用层提供可靠的进程间通信能力。 当数据从应用层传递至传输层时,传输层会对这些数据进行必要的封装操作,形成适合于后续网络层处理的形式。这一过程通常包括添加源端口号目的端口号等信息以便识别不同的应用程序实例以及保障数据包能够准确无误地送达目标地址[^2]。 相反方向上,在接收到由低层上传来的数据之后,传输层先去除自己所加上的头部信息(即解封),然后再将清理后的纯净数据提交给对应的应用程序接口供进一步解析使用[^1]。 #### 功能区分 - **应用层**: 主要关注如何通过各种协议来满足最终用户的特定需求, 如HTTP用于Web访问,SFTP服务于安全文件传送等等; 它定义了众多标准方法使得不同平台间的软件可以互相理解彼此发送过来的信息流. - **传输层**: 更侧重于管理两个终端设备之间实际发生的比特流传送事务. 这一层提供了诸如流量控制, 错误恢复等功能从而提高了整体系统的稳定性效率.[^3] 此外值得注意的是尽管两者存在明显界限划分但它们并非孤立运作而是相互依赖配合才能顺利完成整个通讯流程. ```python # 示例代码展示简单的客户端服务器架构中的socket编程片段 import socket def create_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建TCP套接字对象 host = 'localhost' port = 9999 server_socket.bind((host, port)) # 绑定地址端口 server_socket.listen(5) # 开始监听请求 while True: client_sock, addr = server_socket.accept() # 接受来自客户端的新连接 message = client_sock.recv(1024).decode('utf-8') # 收取消息 print(f"Received from {addr}: ",message) create_server() ``` 此段Python脚本展示了创建基本的Socket Server的过程,体现了传输层对于建立持久化链接的重要性,同时也反映了高层级API是如何抽象掉了大部分复杂的细节让开发者更容易构建基于互联网的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值