计算机网络自定向下:第二章复习
目录
2.1应用层协议原理
2.2Web和Http
2.3文件传输协议(FTP)
2.4EMail
2.5DNS
2.6 P2P应用
2.7 CDN
2.7,2.8TCP,UDP套接字编程基本不考
2.1应用层协议原理
网络应用的体系结构
1.用户-服务器架构
2.对等模式
3.混合上面两种
注意,网络核心中没有应用层软件
- 网络应用只会在端系统中存在
C/S体系结构
服务器
- 一直运行
- 端口ip固定
客户端
- 主动和服务器通信
- ip不固定,不直接和其他客户端通信
p2p体系结构
- 没有一直运行的服务器
- 任意端系统之间可以直接进行通信
- 各个主机可以间隙链接并且ip是可以改变的
混合体系
集中部分
- 用户上线时需要向中心的服务器注册ip地址
- 用户和中心服务器联系获取想要的信息和资源
P2P部分
就是两个用户聊天的时候
进程通信
进程就是在主机上运行的应用程序
在同一个主机内,使用进程间通信机制通信,不同主机间使用报文来进行通信
需要解决的问题
- 进程标识以及寻址问题
- 传输层-应用层提供服务是如何
- 如何使用传输层提供的服务实现应用进程之间的报文交换(毕竟传输层针对的是主机到主机而不是进程到进程)
问题1:对进程进行编制
每个进程给端口号,使用IP+port标识端节点即可
本质上,一对主机进程之间通信由两个端节点组成
问题2
但是每次传输信息都要带这么多信息不方便,于是就有了Socket(用代号来标识通信的双方或者单方)
TCP实现
TCP Socket:源ip,源端口,目标IP,目标端口,四元组标识唯一会话
应用可以直接使用这个标识来和远程的应用程序通信
不必在每一个报文的发送的时候都要指定这个四元组
UDPsocket
- UDPsocket使用的只有本IP,本端口,并不需要标识对方的ip和端口(因为是无链接的)
- 但是需要在传输报文的时候必须提供对方ip以及端口
- 该套接字指定了应用程序所在的一个端节点
套接字(socket)用户进程就是通过这个发送报文或者接受报文
问题3:如何使用传输层提供的服务实现应用
定义应用层协议:报文格式,解释,时序等
编制程序,通过API调用网络基础设施提供通信 服务传报文,解析报文,实现应用时序等
应用层协议
- 定义了运行在不同端系统上的应用程序应该如何交换报文
- 定义了报文类型,请求和应答报文
- 字段的语义等等
web应用组成:
HTTP协议,Web客户端,服务端,HTML
应用层需要传输层提供的服务有?
1.数据丢失率
2.延迟
3.吞吐
4.安全性,完整性,可认证性
UDP存在的必要性
1.能够区分进程,IP不能(只提供端到端的)
2.无需建立链接
3.不做可靠新工作
4.没有流量控制以及拥塞控制,应用能够按照设定的速度发送数据
TCP和UDP的安全性
2.2Web和Http
web
- web页有对象组成
- 对象可以是小程序,HTML文件,web页有一个基本的html文件,该文件含有其他若干对象的引用
- 通过url对对象进行引用,具体格式如下
Http(超文本传输协议)
- 属于应用层
- 基于C/S模式(客户/服务器模式)
- 使用的是TCP
- 客户端发起和服务器的TCP链接(建立套接字,服务器的端口为80)
- 浏览器和服务器之间交换HTTP报文
- 无状态,服务器不维护用户任何信息
Http链接
- 非持久性
-
- 只能由一个对象在TCP链接上传输
- 持久性
-
- 多个对象可以在一个TCP链接上传输
响应时间模型
- RTT:一个小分组从客户端到服务器,在回到客户端的时间。
- 响应时间:一个RTT用来建立TCP链接,一个RTT用来HTTP请求并且等待响应,以及文件传输时间
HTTP请求报文(请求响应报文都是ASCII,人能直接阅读的(
其实可以用下面的理解,下面的就是各个部分对应的内容
HTTP1.0只有GET,POST,HEAD
HTTP1.1添加了PUT,DELETE
HTTP响应报文
状态响应码!!!
Cookie
很多的门户网站都使用cookie(可以看作是用户信息凭证)
能维护用户登录状态,可以指导很多用户的信息
主要组成部分和使用的情节如下
Web缓存(代理服务器)
- 也就是不需要访问原始服务器就能直接满足客户的请求
- 浏览器将所有的HTTP请求直接发送给缓存服务器,缓存服务器存有信息直接返回信息,没有就去原始服务器请求
- 增加web缓存的代价可比增强链路带宽的代价廉价很多
条件GET
如果缓存器中的对象拷贝是最新的,就不要发送对象,否则向原始服务器请求最新对象
实现过程:在HTTP请求中指定缓存拷贝的日期,缓存的对象晚过这个日期那缓存服务器的响应不包含对象
2.3文件传输协议(FTP)
ftp服务器:端口号为21
该协议将TCP作为传输协议
FTP服务器维护用户的状态信息,用户账户等等,是有状态的
2.4EMail
主要组成部分
- 用户代理(其实就是“邮件阅读器”,可以撰写,编辑,阅读邮件,输出,输入邮件都保存在服务器上)
- 邮件服务器(管理和维护发送给用户的邮件,输出报文队列保持等待发送邮件报文,服务器之间使用SMTP协议发送email报文)
- 简单邮件传输协议:SMTP
-
SMTP
基于端口25,使用TCP
传输的三个阶段
-
- 握手
- 传输内容
- 关闭
命令是ASCII文本,响应是响应码和状态信息
报文必须是7位ASCII码
SMTP总结
- 要求使用持久链接
- SMTP要求报文时7位ASCII码
- SMTP是推协议(相比HTTP的拉协议)
- SMTP多个对象包含在一个报文中,HTTP:每个对象封装在各自的响应报文中
邮件访问协议(注意接收邮件的时候用的是什么协议)
- pop(邮局访问协议),用户身份确认(代理《--》服务器并且下载)
- imap:internet邮件访问协议,有更多特性,再服务器上处理存储的报文
- HTTP方便
2.5DNS
工作:将域名转换为IP地址
分层的,基于域的命名机制
若干分布式的数据库完成转换工作
运行在UDP上的端口为53的应用服务
属于Internet的核心功能,但是以应用层协议实现
DNS主要目的:
1.实现主机名-ip的转换
2.主机别名到规范名字的转换
3.邮件服务器别名到邮件服务器正规名字的转换
4.负载均衡
域名
从本域往上,直到树根
中间使用.间隔不同的级别
注意DNS名字空间是互不相较的,每个区域都是树的一部分
每个区域都有一个名字服务器:维护着它管辖区域的权威信息
DNS是保存资源记录RR的分布式数据库
不同的服务器类型:
- TLD服务器(顶级域服务器)
- 权威DNS服务器
- 根DNS服务器
- 本地DNS服务器
具体查询过程(!!!)
向本地DNS服务器发送DNS请求,没有的话,(本地服务器一般缓存着根服务器)
向根服务器发送请求,根服务器不负责解析域名,负责告诉本地DNS解析器应该向哪个顶级域DNS查询
接着向顶级DNS查询,最后向DNS权威服务器查询,最后将ip地址获取并且返回
可以采用递归查询或者迭代查询(前者根服务器负担大)
DNS报文
查询和响应报文格式相同
- 报文首部标识符为16字节,flag代表各种信息(查询/应答,递归,应答是不是权威)
2.6 P2P应用
下面是用户请求数量和最小响应时间关系图,对应C/S和P2P两种
P2P中所有对等方都是服务器(可扩展性好)
2.7 CDN
CDN 是什么?
CDN(Content Delivery Network,内容分发网络) 是一种分布式服务器系统,用于加速网站、视频、图片等静态或动态内容的全球访问速度。它的核心原理是通过将内容缓存到离用户更近的服务器节点,减少网络延迟,提升加载性能。
多媒体流化服务DASH(!)
服务器怎么通过网络向上万个用户同时流化视频内容
通过CDN