计算机网络——应用层
域名
- 域名解析:
主机向本地域名服务器递归查询,如果本地域名服务器不知道,则本地域名服务器向其它域名服务器询问
本地域名服务器向根域名服务器(任播)迭代查询,根域名服务器要么给出IP地址,要么告诉本地域名服务器向哪个域名服务器进行查询
使用UDP数据报
使用缓存
文件传送协议
FTP,TFTP特点:必须获得本地文件副本,修改文件时,在副本上修改,然后将副本传回源节点
联机访问:NFS
文件传送协议FTP:
基于TCP
服务器包括:1)主进程:打开端口21
等待连接请求
启动从属进程处理请求
2)从属进程:处理单个请求
客户和服务器之间2个TCP连接:控制连接(21),数据连接(20)
控制连接始终打开,客户通过控制连接发送传送请求
服务器创建数据连接用来传送数据,传送完毕后关闭
- 修改文件的不同
FTP:先将文件从服务器传给客户,客户修改后再将文件传给服务器
NFS:允许进程打开远地文件,并在其某个位置读写数据,只需传送少量修改数据
简单文件传送协议TFTP:
基于UDP,代码所占内存小
控制连接(端口号69)+ 数据连接
发送完一个文件块后,等待确认
报文长度512字节
远程终端协议TELNET
利用TCP登录远程主机
服务器主进程+从属进程
网络虚拟终端NVT:用户击键和命令通过NVT格式传送
SSH:加密的远程登录系统
万维网WWW
统一资源定位符URL
URL:用来标识资源的具体位置
URI:可以作为所有资源的标识码
超文本传输协议HTTP
端口80
无状态、无连接
使用TCP连接
- 步骤:
1.服务器监听TCP端口80
2.客户(浏览器)向服务器发出连接建立请求
3.服务器建立TCP连接
HTTP/1.0:每请求一个文档有2RTT的开销,非持续连接,服务器发送HTTP响应报文后就断开连接
HTTP/1.1:持续连接,服务器发送HTTP响应报文后仍然保持一段时间的连接
持续连接工作方式:
非流水线:客户收到前一个响应才能发送下一个请求
流水线:不要等到响应就能发送下一个请求
第三次握手,客户将HTTP请求报文作为响应
4.客户向服务器发出浏览某个页面的请求,服务器返回所请求的页面
5.释放TCP连接
代理服务器:
缓存请求和响应
可在客户端、服务器、中间系统工作
HTTP报文结构
请求报文:
响应报文:
- 服务器存放用户信息:
Cookie:为用户产生唯一识别码,作为用户在服务器后端数据库的索引,在HTTP响应报文中添加set-cookie
客户收到响应后,浏览器会在Cookie文件中添加服务器主机名和识别码
客户每发送HTTP请求报文,浏览器都会从Cookie文件中取出识别码,放在请求报文的首部中
- 万维网的文档:
静态文档
动态文档:服务器需要运行应用程序,并动态创建文档内容
活动文档:浏览器请求时,服务器返回一端活动文档程序副本,浏览器负责运行该副本
电子邮件
邮件发送协议:SMTP, MIME(支持多种类数据)
邮件读取协议:POP3
电子邮件系统:用户代理;邮件服务器;邮件发送协议,邮件读取协议
均使用TCP连接
用户代理:客户端软件
步骤:1.用户代理把邮件用SMTP协议发送给发送方邮件服务器
2.发送方服务器将邮件临时存放在缓存队列中。
3.发送方SMTP客户与接收方SMTP服务器建立TCP连接,发送邮件
4.接收方SMTP服务器把邮件放入收件人的用户邮箱
5.收件人运行用户代理,使用POP3协议读取邮件
简单邮件传送协议SMTP
1.连接建立
端口:25
服务器 -> 客户:220 Service ready
客户 -> 服务器:HELO+发送方主机名
服务器 -> 客户:250 OK / 421 Service not available
不使用中间的邮件服务器,发送方和接收方直接建立连接
2.邮件发送
客户 -> 服务器:MAIL FROM: <[email protected]>
服务器 -> 客户:250 OK / 451(处理时出错)/ 452(存储空间不够)/ 500(命令无法识别)
客户 -> 服务器:RCPT TO: <收件人地址>,
每发送一个RCPT命令,都从SMTP服务器返回250/ 550(无此用户)
客户 -> 服务器:DATA命令
服务器返回354 Start mail input; end with<CRLF>.<CRLF>/ 421(服务器不可用)/ 500(命令无法识别)
客户 -> 服务器:<CRLF>.<CRLF>
服务器 -> 客户:250 OK
3.连接释放
客户 -> 服务器:QUIT
服务器 -> 客户:221(服务关闭)
- STMP缺点:
1.不经过鉴别
2.只支持ASCII码
3.明文,不利于保密
- 扩充SMTP:
客户端鉴别
接受二进制报文
服务器接受分块传送的大报文并检查报文大小
安全传输TLS
使用国际化地址
使用扩充SMTP时,客户端发送EHLO报文,如果被拒绝,则依然要使用SMTP
邮件读取协议POP3和IMAP
- 邮局协议POP:
目前使用POP3
只要用户从服务器读取了邮件,服务器就把该邮件删除
改进:设置读取后仍然存放的时间
- 网际报文存取协议IMAP:
用户在自己的计算机可以操纵邮件服务器的邮箱
若用户需要打开某个邮件,则该邮件才传到用户计算机
通用互联网邮件扩充MIME
- SMTP缺点:
不能传送可执行文件/二进制对象
限制传送ASCII码
拒绝超过一定长度的邮件
某些实现没有完全按照互联网标准
动态主机配置协议DHCP
允许一台计算机加入新的网络自动获取IP地址、子网掩码、默认路由器的IP地址、域名服务器的IP地址
- 步骤:
1.客户(端口68)广播发现报文
2.DHCP服务器(端口67)查找数据库中该计算机的配置信息并返回提供报文
如果没有,则取一个地址分配给计算机(临时)
3.客户从多个DHCP服务器的返回中选择一个,向其发送确认报文,并绑定IP地址
每个网络有一个DHCP中继代理,配置了DHCP服务器的IP地址信息
- IP地址时效限制:
IP地址设置计时器T1, T2
当T1(0.5T)时间到达,客户发送请求更新租用期
服务器同意,客户重新设置计时器;服务器不同意,客户重新申请IP地址
若T2(0.875T)时间到且服务器没有相应,则用户重新发送请求更新租用期
简单网络管理协议SNMP
基于UDP/IP协议
基本功能:监控网络性能,检验分析网络差错,配置网络设备
应用进程跨越网络的通信
套接字接口
socket系统调用请求创建套接字,分配网络通信所需资源,返回套接字描述符
通信完毕后,通过close系统调用通知操作系统回收套接字描述符相关的资源
- 1.建立连接:
socket:创建套接字
bind:指明套接字的端口号和IP地址
客户端可以不调用bind,由内核自动分配动态端口号
listen:服务器将套接字设置为被动方式,接受客户的服务请求
accept:服务器接受客户的连接请求
并发状态下,主进程创建从属进程与客户进程建立连接,主进程继续调用accept接受下一个连接请求
connect:客户进程发送连接请求
- 2.数据传送:
send
recv
- 3.连接释放:
close
TCP系统调用流程:
UDP不使用listen和accept