二、应用层

2.1 网络应用协议层原理

2.1.1 应用层体系结构

C/S 客户机/服务器结构
image.png
典型例子:WEB应用

P2P结构
image.png

混合结构hybrid
image.png

2.1.2 网络应用进程通信

image.png

Socket套接字:
image.png

进程如何寻址:
主机之间通过IP地址寻址,但是同一台主机有多个进程,通过端口号对进程进行标志
image.png

应用层协议的内容:
image.png

2.1.3 应用层可使用的传输服务

image.png

Internet提供了什么传输服务?
TCP/UDP
image.png

2.2 WEB应用和HTTP协议

2.2.1 HTTP

WEB:World Wide Web 万维网
image.png
HTTP
image.png
image.png

2.2.2 非持续连接和持续连接

非持续连接:
image.png

image.png

非持久性连接存在问题:
非持续连接对每一个对象都要重新建立一次TCP连接,同时TCP在服务器端造成开销
image.png

2.2.3 HTTP报文格式

HTTP消息有请求和响应消息
image.png

通用格式:
image.png

HTTP/1.1有5种请求方法
GET,POST,PUT,DELETE,HEAD

响应的一个示例:
image.png

响应码:
image.png

2.2.4 Cookie技术

某些网站为了辨识用户身份,进行session跟踪而存储在用户本地终端上的数据

Cookie的组件

  • HTTP响应消息的cookie头部行
  • HTTP请求消息的cookie头部行
  • 保存在客户端主机上的cookie文件,由浏览器管理
  • Web服务器端的后台数据库

2.2.5 WEB缓存/代理服务器

image.png
image.png

存在问题:缓存服务器的对象如何与远端服务器的对象保持一致?
解决方法:条件性GET方法
image.png

2.3 EMAIL应用

Email构成
image.png
image.png

2.3.1 SMTP协议

image.png

2.3.2 与HTTP对比

image.png

2.3.3 邮件报文格式

image.png

多媒体扩展:
EMAIL为了支持多媒体类型的数据,使用MIME
image.png

2.3.4 邮件访问协议

image.png

2.4 DNS应用

域名解析系统
image.png

image.png

分布式层次式数据库
image.png

本地域名服务器查询域名的方式分为递归查询迭代查询

DNS记录缓存和更新
每台DNS服务器都会缓存查询过的域名和ip映射,在一段时间后失效

DNS记录的形式
image.png

DNS协议和消息格式
image.png
image.png

2.5 P2P应用

P2P架构
image.png

BT
image.png

image.png

P2P索引技术:
image.png

集中式索引:
所有用户都向同一个centralized directory server 发起请求
image.png
image.png

洪泛式查询:
image.png
image.png
消息转发可能非常多,请求像洪水一样在网络传播

结合二者优点,层次式覆盖网络:
image.png

P2P案例应用:Skype
image.png

2.6 Socket编程

网络应用程序可以面向不同层次进行编程:
image.png
网络应用编程接口API
应用程序基于应用层进行开发,可以通过系统调用进行os内核
image.png

Socket API
客户端的套接字如何与服务器的应用进程进行通信?服务器可能有多个应用进程

  • 通过IP地址确定主机,通过端口号确定某一应用进程(对外)

操作系统对内如何管理套接字?

  • 通过套接字描述符
    image.png

地址结构的结构体:
image.png

Socket API

  • WSAStartup 最先调用的函数
  • WSACleanup 最后调用的函数,释放资源
    。。。
    关于Socket我跳过了,有需要在回头学吧

我们是如何走到这一步