第二章 网络应用

从体系结构角度分类

客户/服务器C/S

最典型,最基本
服务器程序需先运行,有固定网络地址,长期运行

纯P2P

对等端软件运行在普通用户计算设备上,可直接与其他对等端通信
由于对等端动态加入或离开,并没有中心服务器,很难知道哪些对等端在线,地址与提供的服务

混合结构网络

每个用户通过C/S方式向服务器注册自己的网络地址,声明提供的服务与共享的资源,并发现其他用户

基本原理

基本通信方式:C/S
进程间遵循应用层协议交换应用层报文M
通过套接字将M传输给传输层
传输层需要为每个套接字分配一个编号:端口号
通过网络层地址(ip)与端口号标识应用程序

传输层提供的服务

面向连接的可靠字节流传输服务TCP

  • 面向连接的服务:通过交换传输层控制信息,完成握手,建立一天全双工的逻辑TCP连接,发送完毕拆除
  • 可靠的数据传送服务:端到端无差错,按序交付

无连接的不可靠数据报传输服务UDP

仅提供最小的“尽力”服务,没有握手过程,不保证报文到达接收进程,也可能乱序到达

TCP与UDP均不提供端到端吞吐量与时延保障服务

域名系统DNS

用户代理:使用网络应用的客户端软件定期访问服务器IP地址与端口号
域名:更容易读懂的代表ip地址与端口号的名字
DNS的任务:将域名映射为IP地址,即域名解析,需要建立分布式数据库,存储映射关系
层次树状结构的命名:……。三级域名。二级域名。顶级域名
顶级域名:国家,通用,基础结构域名arpa,用于反向域名解析

域名服务器

53端口
权威域名服务器:保存区中所有映射
顶级域名服务器:管理在该顶级域名注册的所有二级域名
根域名服务器:最重要,知道所有顶级域名服务器的域名和ip,共有13个,从a到m
本地域名服务器:任何主机在网络地址配置时都会配置一个
中间域名服务器:在权威和根之间

解析过程

无论递归还是迭代,顺序都是,本地,根,顶级,权威
由于根压力很大,增加缓存机制,跳过根域名查询,提高查询效率

HTTP

Web应用的应用层协议,HTTP/1.1是主流
80端口

HTTP连接

基于传输层的TCP传输报文,向服务器发送请求报文之前需建立TCP连接

连接方式

HTTP/1.0默认使用非持久连接,每次请求传输一个对象都需要建立一个TCP连接
1.1默认流水方式持久连接,只在服务端返回报文中显式添加connection:close首部行时断开
非持久连接,并行连接,流水方式,非流水方式图见P60

HTTP报文

起始行,首部行,空白行,实体主体

起始行

请求和响应报文主要区别是起始行
请求:方法,URL,协议版本
响应:协议版本,状态码,短语
方法:

  • GET:请求读取URL标识的信息
  • HEAD:请求读取URL标识的信息的首部
  • POST:给服务器添加信息
  • OPTION:请求一些选项信息
  • PUT:在指定URL存储文档
    状态码:短语
  • 100:continue
  • 200:ok
  • 301:moved permanently
  • 400:bad request
  • 401:unauthorized
  • 404:not found
  • 505:http version not supported

首部行

用于携带附加信息,可有0到多行

无状态协议:HTTP服务器并不保存客户的任何信息
Cookie用于在无状态的HTTP之上建立用户会话
存放于报文首部行,每个浏览器独立存储
永久Cookie:存放于硬盘
会话Cookie:存放于内存,关闭浏览器消失

电子邮件系统

组成:邮件服务器,邮件传输协议,用户代理,邮件读取协议
地址:邮箱名@邮箱所在主机域名
核心:邮件服务器,用于接发邮件,报告传送情况

SMTP

电子邮件核心应用层协议
实现邮件服务器间或与用户代理间邮件传输
使用TCP持久连接,25端口

特点:

只能传送7位ASCII码文本内容,通过MIME将非该种文本转换为这种
内容不能包含CRLF.CRLF,用于识别内容结束
“推动”协议,与HTTP“拉动”协议不同

电子邮件格式

首部,空白,主体

邮件读取协议

邮局协议POP3

TCP,110端口
3个阶段:授权,事务处理,更新
事务处理读取后会标记删除,更新阶段删除

IMAP

支持创建远程文件夹,与只读部分邮件
网络带宽压力更小

HTTP

最流行,此时用户代理向邮件服务器发送也使用HTTP,邮件服务器间还是SMTP

FTP

消除不同操作系统下处理文件的不兼容性
C/S应用
使用两个并行的TCP连接
21端口的控制连接是持久的,整个会话期间打开
20端口的数据连接传送完毕即关闭,非持久
即带外控制,使用同一个连接控制和处理数据为带内控制

P2P

对服务器依赖很小,随时加入离开,伸缩性强

当有n个用户,各下载大小为F的文件

C/S方式

服务器需上传nF
每个用户需下载F
即最小完成分发时间为
nF/服务器上传带宽us

F/最慢客户下载带宽dmin
中最大值

P2P方式

每个对等方在接收到部分文件后,马上可以将拥有的数据向其他对等方分发
文件分发最快时间当n足够大,趋近于常量

Socket

套接字地址由ip+port组成
SOCK_STREAM:面向TCP接口
SOCK_DGRAM:面向UDP
服务器函数:listen,accept
客户端函数:connect

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信