计算机网络应用层
1.1网络应用的体系架构
C/S模式(客户端服务器模式)
服务器:一直运行;固定的IP地址和周知的端口号约定 可以扩展,
客户端:主动与服务器通信,与互联网间歇性连接;不直接与其他客户端通信。
缺点:扩展性较差;当用户数量较多时,服务器的能力较差。
P2P体系结构(peer 对等体)
1、每个节点既可以作为客户端又可以作为服务器。
2、没有一直运行的服务器,
3、自扩展性 新的节点带来新的服务能力,也带来新的服务请求
4、缺点:每个节点可以上线也可以下线就难以管理。
5、例子:迅雷
C/S和P2P体系结构的混合体
NAPSTER
1、文件搜索:集中
1、主机在中心服务器上注册其资源
2、主机向中心服务器查询资源位置
2、文件传输:P2P
即时通信
1、在线检测:集中
1、当用户上线时,向中心服务器注册其IP地址
2、用户与中心服务器联系,以找到其在线好友的位置
3、两个用户之间的聊天; P2P
可以近似认为QQ和微信是C/S和P2P的两者混合
1.2 进程通信
1、进程:在主机上运行的应用程序; 在同一个主机内,使用进程间的通信机制
2、不同主机,通过交换报文来通信
1.6 分布式进程通信需要解决的问题
问题1:进程标示和寻址问题(服务用户)
问题2:传输层-应用层提供服务是如何(服务)
位置:层间界面的SAP(TCP/IP:socket)
形式:应用程序接口API(TCP/IP:socket API)
问题3:如何使用传输层提供的服务,实现应用程序之间的报文交换,实现应用(用户使用服务)
定义应用层协议:报文格式,解释,时序等
编制程序,使用OS提供的API,调用网络基础设施提供通信服务传报文,实现应用时序等;
1.7 问题1:对地址进行编址
进程为了接收报文,必须有一个标示,即:SAP(发送也需要标示)
主机:唯一的32位IP地址
仅仅有IP地址不能够唯一标识一个进程;在一台端系统上有很多应用进程在运行
所采用的传输层协议:TCP or UDP
端口号(Port Numbers)
一些知名端口号的例子:
HTTP:TCP 80
Mail:TCP 25
ftp:TCP 2
一个进程,用IP+port标示端节点
本质上,一对主机进程之间的通信由2个端节点构成
1.8 问题2:
1.8.1 问题2:传输层提供的服务-需要穿过层间的信息
层间接口必须要携带的信息
要传输的报文(对于本层来说:SDU)
谁传的:己方的应用进程的标示:IP+TCP(UDP)端口
传给谁:对方的应用进程的标示:对方的IP+TCP(UDP)端口
传输层实体(tcp或者udp实体)根据这些信息进行TCP报文段(UDP数据报)的封装
源端口号,目标端口号,数据等
将IP地址往下交IP实体,用于封装IP数据报:源IP,目标IP
1.8.2 问题2:传输层提供的服务-层间信息的代表
如果Socket API每次传输报文,都携带如此多的信息,太繁琐易错,不便于管理
用个代号标示通信的双方或者单方:socket
就像OS打开文件返回的句柄一样
对句柄的操作,就是对文件的操作
TCP socket:
TCP服务,两个进程之间的通信需要之前要建立连接
两个进程通信会持续一段时间,通信关系稳定
可以用一个整数表示两个应用实体之间的通信关系,本地标示
穿过层间接口的信息量最小
TCP socket:源IP,源端口,目标IP,目标端口
1.8.3 TCP之上的套接字(socket)
对于使用面向连接服务(TCP)的应用而言,套接字是4元组的一个具有本地意义的标示
4元组:(源IP,源port,目标IP,目标port)
唯一的指定了一个会话(2个进程之间的会话关系)
应用使用的这个标示,与远程的应用进程通信
不必在每一个报文的发送都要指定这4元组
就像使用操作系统打开一个文件,OS返回一个文件句柄一样,以后使用这个文件句柄,而不是使用这个文件的目录名、文件名
简单,便于管理
TCP socket
TCP socket
1.8.4 问题2:传输层提供的服务-层间信息代码
UDP socket:
UDP服务,两个进程之间的通信需要之前无需建立连接
每个报文都是独立传输的
前后报文可能给不同的分布式进程
因此,只能用一个整数表示本应用实体的标示
因为这个报文可能传给另外一个分布式进程
穿过层间接口的信息大小最小
UDP socket:本IP,本端口
但是传输报文时:必须要提供对方的IP,port
接收报文时:传输层需要上传对方的IP,port
1.8.5 UDP之上的套接字(socket)
对于使用无连接服务(UDP)的应用而言,套接字是2元组的一个具有本地意义的标示
2元组:IP,port(源端指定)
UDP套接字指定了应用所在的一个端节点(end point)
在发送数据报时,采用创建好的本地套接字(标示ID),就不必在发送每个报文中指明自己所采用的ip和port
但是在发送报文时,必须要指定对方的ip和udp port
1.8.6 UDP socket
1.8.7 套接字(Socket)
进程向套接字发送报文或从套接字接收报文
套接字<->门户
发送进程将报文退出门户,发送进程依赖于传输层设施在另外一侧的门将报文交付给接收进程
接收进程从另外一端的门户收到报文(依赖于传输层设施)
1.9 问题3:如何使用传输层提供的服务实现应用
20:51:39
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!