IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【计算机网络】第2章 应用层 -> 正文阅读

[网络协议]【计算机网络】第2章 应用层

应用层

应用层协议原理

应用层网络应用体系结构有三种,老生常谈的东西

  • 客户机/服务器
  • 对等 (P2P)
  • 客户机/服务器与P2P的混合

应用层的通信,本质是两台不同主机间进程的通信,如果两个进程在同一台主机上,进程间的通信由操作系统控制;如果是不同主机的两个进程,通过网络报文进行

套接字是应用程序和网络之间的应用程序接口API ,是在网络上建立网络应用程序的可编程接口,是进程通信的接口

用户代理:是用户与网络应用程序之间的接口,如浏览器Web应用的用户代理

image-20220310105014472

套接字识别进程的话分为两步,识别网络中的哪一个主机,它用主机的地址标识,还需要识别主机中的哪一个进程, 它用端口号标识

因特网运输层给应用层提供的服务有

  • 传输控制协议TCP (面向连接)
    过程是:建立连接(握手过程),传输报文,拆除连接
    通信进程可以无差错按适当顺序交付发送的数据,当发送方和接收方之间的网络出现拥塞时,会抑制发送进程速率
  • 用户数据报协议UDP(面向无连接)
    过程:两个进程通信前没有握手过程
    不保证报文能够被接收,或收到的报文是乱序到达,发送进程可以任何速率发送数据

TCP和UPD都没有提供任何加密机制,加密层由应用程序实现,它位于应用层和传输层之间,由安全层套接字层实现(Secure Socket Layer, SSL)

下面是常见应用对应的应用层协议和传输协议

image-20220310110526458


2022/3/11更新

Web和HTTP

一,基本概念

HTTP超文本传输协议,是web的核心,它定义了报文的格式以及客户机和服务器交换报文的方式

一个web页面,就是一个文档,一个文档由若干对象组成,一个对象就是一个文件,对象比如说:HTML文件,JPEG图片等等

每个对象都能在网络中定位,通过url统一资源标识符

image-20220311161558454

客户机和服务器的交互过程,包含 创建TCP连接→交换报文→关闭TCP连接,底层是通过TCP建立的可靠连接,但是HTTP是无状态的,客户机请求多次,服务器也会响应多次
image-20220311161912759

二,HTTP连接

首先是非持续连接,基本上现在的网络中不会用,每个TCP连接只传输一个请求报文和一个响应报文,服务器返回对象后关闭,每次请求一个对象都要重新连接

TCP连接的“三次握手”过程,如下

  • 客户机发送一个TCP连接请求报文
  • 服务器回送一个TCP确认响应报文
  • 客户机向服务器发送一个包含“ HTTP请求”与“TCP确认”的报文
image-20220311162734626

非持续连接缺点:服务器负担重每个对象传输时间延长(每个对象都要两个RTT时延)

持续连接

相同客户机与服务器之间的后续请求和响应报文通过相同的连接进行传送,省去了再次建立连接的过程,不过一定时间间隔未被使用,服务器会关闭连接

持续连接包含,非流水线方式流水线方式

  • 非流水线方式:客户机只能在前一个响应接收到之后才能发出新的请求
  • 流水线方式:客户机可一个接一个连续产生请求(只要有引用就产生),即在前一个请求接收到响应之前可以产生新的请求
image-20220311163204451

http请求的报文如下

image-20220311163357379

三,用户与服务器交互:Cookie

HTTP服务器是无状态的,不保存客户信息,所以需要需要Cookie让服务器与用户相关联

  1. 在HTTP响应报文中有一个cookie 首部行
  2. 在HTTP请求报文中有一个cookie 首部行
  3. 用户主机中保留有一个 cookie 文件并由浏览器管理
  4. Web站点的后端数据库保存cookie

工作流程:

image-20220311163837427

四,Web缓存器

Web缓存器(Web cache):也叫代理服务器,它存在的意义在于加快客户机想服务器请求对象的速度,原理如下:

浏览器向缓存发送所有HTTP请求,如果在Web缓存中,就之间返回该对象,如果不在,则代理服务器替用户想原始服务器发送请求,接收后转发给客户机,和高速缓存类似,减少响应时间,减少内部和因特网的通信量

image-20220311164104168

五,条件GET方法

在使用Web缓存的时候,存放在缓存中的对象拷贝可能是旧的。即保存在起始Web服务器中的对象可能已经被修改,条件GET方法可以使得缓存的对象一直是最新状态,流程如下

  1. 客户机第一次请求时候,Web服务器回发响应报文给Web缓存器,包括对象的最后修改时间Last-modified:date1,Web缓存器记录时间并且缓存对象
  2. 客户机再次请求,缓存器检查Web服务器中的该对象是否已被修改,发送一个条件GET请求报文If-modified-since: date1
  3. 若Web服务器中的该对象未被修改,则响应报文含有304 Not Modified,并且实体为空;如果修改过,再次重新发送响应报文,携带Last-modified:date2

image-20220311165029609

FTP

电子邮件

DNS

P2P 文件共享

TCP的套接字 编程

UDP的套接字 编程

构建一个 Web 服务器

小结

之后持续更新,欢迎来我的个人博客网站www.liangyuanshao.top

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:57:52  更:2022-03-12 17:57:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 13:30:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码