【计算机网络:自顶向下方法】(二)应用层

news2025/1/16 17:59:45

tm
【计算机网络:自顶向下方法】(二)应用层

文章目录

  • 应用层
    • 如何创建一个新的网络应用?
  • 2.1 应用层原理
    • 网络应用的体系结构
      • 对等模式(P2P:Peer To Peer)
      • 混合体:客户-服务器和对等体系结构
    • 进程通信
      • 分布式进程通信需要解决的问题
        • 问题1:进程标示和寻址问题(服务用户)
        • 问题2:传输层提供的服务-层间信息的代表
          • TCP上的socket
          • UDP上的socket
        • 问题3:如何使用传输层提供的服务实现应用
    • 应用层协议
        • Internet 传输层提供的服务
        • 为什么要有UDP
        • 安全&TCP
  • 2.2 Web and HTTP
    • HTTP
      • HTTP连接
    • HTTP请求报文
    • 用户-服务器状态 : cookies
    • Web缓存 (代理(proxy server)服务器)
      • 条件GET方法
    • FTP: 文件传输协议
    • 电子邮件(EMail)
      • eg
      • 简单的SMTP交互
      • 小结
      • 邮件报文格式
      • POP3
    • DNS (53端口, 给应用程序应用的程序 )
      • DNS系统需要解决的问题
      • 问题2:解析问题-名字服务器(NameServer)
      • DNS协议、报文
      • 提高性能 -- > 缓存
      • 问题3:维护问题:新增一个域
      • 攻击DNS
    • P2P
      • 文件分发
        • BitTorrent
      • p2p文件共享
        • 集中式目录
        • 泛洪 (完全分布式)
      • 利用不匀称性:KaZaA
    • CDN
      • 视频流化服务和CDN:上下文
    • Socket编程
      • TCP Socket
        • socket俩个重要的数据结构
        • TCP编程
      • UDP socket 编程
    • 小结
  • ==**🌹感谢阅读🌹**==

学习推荐 : 中科大计算机网络自顶向下
在这里插入图片描述

应用层

如何创建一个新的网络应用?

  • 编程
    • 在不同的端系统上运行 通过网络基础设施提供的服 务,应用进程彼此通信
    • 如Web: Web 服务器软件与浏览器软件 通信
  • 网络核心中没有应用层软件
    • 网络核心没有应用层功能
    • 网络应用只在端系统上存在 ,快速网络应用开发和部署

2.1 应用层原理

网络应用的体系结构

在这里插入图片描述

对等模式(P2P:Peer To Peer)

在这里插入图片描述

混合体:客户-服务器和对等体系结构

在这里插入图片描述
在这里插入图片描述

进程通信

在这里插入图片描述

分布式进程通信需要解决的问题

在这里插入图片描述

问题1:进程标示和寻址问题(服务用户)

  • HTTP默认端口号 80 SMTP : 25
    在这里插入图片描述

问题2:传输层提供的服务-层间信息的代表

在这里插入图片描述

TCP上的socket

在这里插入图片描述

在这里插入图片描述

UDP上的socket

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

问题3:如何使用传输层提供的服务实现应用

在这里插入图片描述

应用层协议

在这里插入图片描述

  • 应用需要传输层提供什么样的服务? 如何描述传输层的服务?
    在这里插入图片描述
  • 常见应用对传输服务的要求
    在这里插入图片描述

Internet 传输层提供的服务

在这里插入图片描述

为什么要有UDP

在这里插入图片描述
在这里插入图片描述

安全&TCP

在这里插入图片描述

2.2 Web and HTTP

在这里插入图片描述

HTTP

  • 超文本传输协议( HyperText Transfer Protocol) : 文本与文本之间任意指向的关系
    在这里插入图片描述
  • Web页面(也叫文档) : 由对象注册的,一个对象只是一个文件.
  • 多数Web页面含有一个基本的HTML文件
    在这里插入图片描述

HTTP连接

在这里插入图片描述

  • 非持久HTTP连接
    在这里插入图片描述
  • 响应时间模型
    在这里插入图片描述
  • 持久HTPP
    在这里插入图片描述

HTTP请求报文

在这里插入图片描述

在这里插入图片描述

  • 提交表单输入
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

用户-服务器状态 : cookies

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Web缓存 (代理(proxy server)服务器)

在这里插入图片描述

  • 缓存既是客户端又是 服务器
  • 通常缓存是由ISP安 装 (大学、公司、居 民区ISP)
    为什么要使用Web缓存 ?
    降低客户端的请求响应时 间
    可以大大减少一个机构内 部网络与Internent接入 链路上的流量
    互联网大量采用了缓存: 可以使较弱的ICP也能够 有效提供内容
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

改进

缓存例子:安装本地缓存
在这里插入图片描述

在这里插入图片描述

  • 总体延迟:  = 0.6 * (从原始服务器获取对象的 延迟) +0.4 * (从缓存获取对象的延 迟)
     = 0.6 (2.01) + 0.4 (~msecs)  = ~ 1.2 secs  比安装154Mbps链路还来得小 (而且 比较便宜!)

条件GET方法

在这里插入图片描述

FTP: 文件传输协议

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

电子邮件(EMail)

在这里插入图片描述

  • 邮件服务器
    •  邮箱中管理和维护发送给用户 的邮件
    • 输出报文队列保持待发送邮件 报文
    •  邮件服务器之间的SMTP协议 :发送email报文
      •  客户:发送方邮件服务器
      •  服务器:接收端邮件服务 器
  • 使用TCP在客户端和服务器之间传送报文,端口 号为25
  • 直接传输:从发送方服务器到接收方服务器
  • 传输的3个阶段 握手 传输报文 关闭
  • 命令/响应交互 命令:ASCII文本 响应:状态码和状态信息
  • 报文必须为7位ASCII码

eg

在这里插入图片描述

简单的SMTP交互

  • telnet servername 25
  •  enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands

小结

  • HTPP :拉协议 ,用户使用HTTP从服务器拉取这些信息
  • SMTP :推协议,发送邮件服务器把文件推向接受邮件服务器。
    在这里插入图片描述

邮件报文格式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

POP3

在这里插入图片描述
在这里插入图片描述

DNS (53端口, 给应用程序应用的程序 )

在这里插入图片描述
在这里插入图片描述

  • 负载均衡 : DNS也用于冗余的服务器之间进行负载分配 , 繁忙的站点被冗余分布在多台服务器上,每台服务器均运行在不同的端系统上,每个都有不同的IP地址。

DNS系统需要解决的问题

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

问题2:解析问题-名字服务器(NameServer)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • Value : IP

  • T : type
    在这里插入图片描述

  • 区域名字服务器维护资源记录

  • 资源记录(resource records)

    • 作用:维护 域名-IP地址(其它)的映射关系
    • 位置:Name Server的分布式数据库中
  • RR格式: (domain_name, ttl, type,class,Value)

    • Domain_name: 域名
    • Ttl: time to live : 生存时间(权威,缓冲记录)
    • Class 类别 :对于Internet,值为IN
    • Value 值:可以是数字,域名或ASCII串
    • Type 类别:资源记录的类型—见下页

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

DNS协议、报文

在这里插入图片描述
在这里插入图片描述

提高性能 – > 缓存

一旦名字服务器学到了一个映射,就将该映射 缓存起来
 根服务器通常都在本地服务器中缓存着 使得根服务器不用经常被访问
目的:提高效率 可能存在的问题:如果情况变化,缓存结果和 权威资源记录不一致
解决方案:TTL(默认2天)

问题3:维护问题:新增一个域

在这里插入图片描述

攻击DNS

在这里插入图片描述

P2P

  • 纯P2P架构 :  没有(或极少)一直运行的 服务器 任意端系统都可以直接通信  利用peer的服务能力  Peer节点间歇上网,每次IP 地址都有可能变化
  • 例子: 文件分发 (BitTorrent) 流媒体(KanKan)  VoIP (Skype)
  • 非结构化P2P : 集中化目录 , 完全分布式,混合
  • 结构化p2p :DHT(分布式散列表)维护环or树的有序拓扑结构( 不断深入的过程)

在这里插入图片描述

  • 分布式命名
  • 哈希值对应唯一的ID

文件分发

  • 问题: 从一台服务器分发文件(大小F)到N个peer 需要多少时间?
    在这里插入图片描述
  • CS模式 在这里插入图片描述
  • 当N足够的大的时候 ,取等号
  • P2P模式

在这里插入图片描述
在这里插入图片描述

BitTorrent

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

p2p文件共享

在这里插入图片描述

  • 两大问题: 如何定位所需资源 如何处理对等方的 加入与离开
  • 可能的方案 :集中 分散 半分散

集中式目录

在这里插入图片描述

泛洪 (完全分布式)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用不匀称性:KaZaA

在这里插入图片描述

  • KaZaA:查询
    在这里插入图片描述
    在这里插入图片描述

CDN

视频流化服务和CDN:上下文

  • 流量大、用户多 、异构性  不同用户拥有不同的能力(例如:有线接入和移 动用户;带宽丰富和受限用户 . — > 解决方案: 分布式的,应用层面的基础设施

  • 在这里插入图片描述

  • 由于存储下载视频 是一对一的关系,则下载未免有些慢了,于是就有了存储视频的流化服务.

  • 多媒体流化服务:DASH
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 互联网络主机-主机之间的通信作为一种服务向用户提供
  • OTT 挑战: 在拥塞的互联网上复制内容 “over the top”
    在这里插入图片描述
    1 : 流量服务器
    2、向本地DNS服务器解析
    3、返回URL
    4、 告诉他离他最近的客户端的ip地址
    6、再由kingCDN 向客户提供流化服务

Socket编程

在这里插入图片描述

TCP Socket

在这里插入图片描述+ 过程
在这里插入图片描述
在这里插入图片描述
主要!!
在这里插入图片描述

在这里插入图片描述

  • 重点理解堵塞 , 堵塞的时候 可以实现多进程 。。OS的内容
  • 服务器一个端口对应许多个客户端端口,每个都是独立的会话关系,对应不同的socket。老师说过要区分端口和socket的概念
  • TCP端口整数代表的是一个会话关系
  • TCP : 四元组 ! < 1, 2,3, 4>
  • 一个端口只能被一个服务器进程绑定,可以被多个进程共用。
  • 端口是可以共用的,而socket的整数值不一样的
    在这里插入图片描述
  • Welcome socket : 返回一个整数

socket俩个重要的数据结构

// IP地址和port捆绑关系的数据结构(标示进程的端节点)
struct sockaddr_in { 
    short sin_family; //地址族
    u_short sin_port;// port端口
    struct in_addr ,sin_addr; //IP 地址
    char sin_zero[8]; // align  对齐
};

//数据结构 hostent 域名和IP地址的数据结构
struct hostent { 
    char *h_name;//主机域名
    char **h_aliases; //数组存储 主机别名  
    int h_addrtype; 
    int h_length; /*地址长度*/
    char **h_addr_list; // 数组存储 IP地址
    #define h_addr h_addr_list[0];
};

TCP编程

  • 客户端
    在这里插入图片描述
    在这里插入图片描述

  • 服务器
    在这里插入图片描述

UDP socket 编程

在这里插入图片描述
在这里插入图片描述

  • 没有交互
    在这里插入图片描述
  • 客户端
    在这里插入图片描述
  • 服务器
    在这里插入图片描述

小结

在这里插入图片描述
在这里插入图片描述

🌹感谢阅读🌹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CorelDRAW2023全新版功能及下载安装教程

CorelDraw2023是一款优秀的图形工具。有了它&#xff0c;不太专业的客户也可以做直观和简短的组成&#xff0c;由于其平滑和简单的用户界面。你可以一起做很多编辑工作。有了这个巨大的工具&#xff0c;你可以对你的图像、网站、商标和其他许多东西产生美丽而令人印象深刻的效果…

DJYOS驱动开发系列一:基于DJYOS的UART驱动编写指导手册

1.概述 DJYOS设计通用的串口驱动模型&#xff0c;在此模型的基础上&#xff0c;移植到不同硬件平台时&#xff0c;只需提供若干硬件操作函数&#xff0c;即可完成串口驱动开发&#xff0c;使开发工作变得简单而快速执行效率高。 DJYOS源代码都有特定的存放位置&#xff0c; 建…

DJYGUI系列文章五:GK显示器接口

1 GK显示器接口概述 显示器是图形显示的终端&#xff0c;图形的所有操作都会直接或间接的体现在显示器上面。DJYGUI支持多显示器、虚显示器和镜像显示器的功能。应用程序在调用API函数绘图前&#xff0c;需安装显示器&#xff0c;按照GK显示器标接口实现驱动函数。 GK的底层硬件…

DCS系统组态设计实验

太原理工大学控制仪表实验之DCS系统组态设计实验 DCS系统组态设计一.实验内容1.根据自己的理解&#xff0c;复述实验整体流程&#xff0c;并画出实验整体流程图。2.根据视频&#xff0c;写出DCS 信号通道接线关系表。即主控站DCS模块名称&#xff0c;模块型号&#xff0c;I/O模…

跟艾文学编程《Python基础》(5)Python的文件操作

作者&#xff1a; 艾文&#xff0c;计算机硕士学位&#xff0c;企业内训讲师和金牌面试官&#xff0c;公司资深算法专家&#xff0c;现就职BAT一线大厂。邮箱&#xff1a; 1121025745qq.com博客&#xff1a;https://wenjie.blog.csdn.net/内容&#xff1a;跟艾文学编程《Python…

linux网络编程epoll内核实现代码分析

1、linux内核epoll相关数据结构 1.1、epoll相关数据结构类图 1.2、关键数据结构说明 socket_wq结构体包含一个__wait_queue_head成员&#xff0c;__wait_queue_head用于连接wait_queue_t链表&#xff0c;对于epoll而言就是连接eppoll_entry&#xff1b; eppoll_entry包含一个e…

第七届信息类研究生学术论坛参赛有感

因为疫情不仅感叹时光飞逝&#xff0c;上了大半年的网课再次回到校园已经有师弟师妹了。今年的研究生学术论坛更卷了&#xff0c;入围了88项作品。这次科研作品征集研究生在学期间信息类相关研究成果&#xff0c;鼓励实物参展&#xff0c;包括软件系统、硬件系统等&#xff0c;…

Kubernetes(k8s)CNI(Calico)网络模型原理

文章目录一、概述二、Calico 架构和核心组件三、什么是BGP&#xff1f;三、Calico 两种网络模式1&#xff09;IPIP 模式2&#xff09;BGP 模式四、安装Calico插件1&#xff09;通过helm安装Calico2&#xff09;通过yaml文件安装3&#xff09;k8s flannel网络切换calico1、卸载f…

适配不同场景的RestTemplate

一个基本实现 如果项目里可能只是偶尔通过一个url&#xff0c;发起一个http请求&#xff0c;一个基本实现如下&#xff1a; Configuration public class RestTemplateConfiguration {Beanpublic RestTemplate restTemplate() {RestTemplate restTemplate new RestTemplate()…

项目常遇到的问题

这里写自定义目录标题1&#xff1a;uniapp生成二维码2&#xff1a;uniapp onShow接收参数3&#xff1a;javascript如何获取对象的key和value4&#xff1a;uni-app&#xff1a;页面直接传递复杂参数5&#xff1a;js对于数组元素相同的分类方法1&#xff1a;uniapp生成二维码 选择…

关联式容器(Associative Container)

1:什么是关联式容器&#xff1f; 关联式容器依照特定的排序准则 自动为元素排序 元素可以是任何类型的value 也可以是 key/value pair key可以是任何类型 映射至一个相关value 而value也可以是任意类型 通常是所有容器默认以<进行比较 也可以通过自己的比较函数 定义出不同的…

Dubbo基础

目录 什么是 RPC 那为什么要有 RPC&#xff0c;HTTP 不好么&#xff1f; RPC 的原理是什么? 如何设计一个 RPC 框架 从底向上的思路 服务消费者 服务提供者 注册中心 监控运维 小结一下 简单实现一个 RPC 框架 Dubbo 简介 Dubbo的历史 Dubbo的功能 为什么要用 …

Java语法之继承

上次给大家分享了Java的封装&#xff0c;今天小编给大家分享面向对象三大特性的第二大特性&#xff0c;也就是继承&#xff0c;fighting~~ 目录 &#x1f384;一.继承的概念 &#x1f384;1.1为什么需要继承 &#x1f384;1.2继承的概念 &#x1f384;1.3继承的语法 &#…

Android App开发中补间动画的讲解以及实现钟摆动画效果实战(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、补间动画的种类 Android提供了补间动画&#xff0c;它允许开发者实现某个视图的动态变换&#xff0c;具体包括四种动画效果&#xff0c;分别是灰度动画&#xff0c;平移动画&#xff0c;缩放动画和旋转动画。因为开发者提供…

缓存穿透、缓存击穿、缓存雪崩区别和解决方案

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

【c++】类和对象

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 3.1类的两种定义方式&#xff1a; 4.类的访问限定符及封装 4.1访问限定符 5.类的作用域 6.类的实例化 7.类对象模型 7.1 如何计算类对象的大小 8.this指针 8.1 this指针的引出 8.2 this指针的特性 9.类的6个默认成员函…

深度学习简介及反向传播

Datawhale开源学习&#xff0c;机器学习课程&#xff0c;项目地址&#xff1a;https://github.com/datawhalechina/leeml-notes 之前学习机器学习的时候&#xff0c;总结了三步&#xff1a; define a set of functiongoodness of functionpick the best function 这三步所做的…

机器学习之决策树【西瓜书】

当一个有经验的老农看一个瓜是不是好瓜时&#xff0c;他可能会先看下瓜的颜色&#xff0c;一看是青绿的&#xff0c;心想有可能是好瓜&#xff1b;接着他又看了下根蒂&#xff0c;发现是蜷缩着的&#xff0c;老农微微点头&#xff0c;寻思着五成以上是好瓜&#xff1b;最后他又…

基于51单片机的客车辆超载报警Proteus仿真

资料编号&#xff1a;111 下面是相关功能视频演示&#xff1a; 111-基于51单片机的客车辆超载报警Proteus仿真&#xff08;源码仿真原理图全套资料&#xff09;功能如下&#xff1a; 利用单片机设计一个超载检测控制电路。 通过 2 组红外对管(类似电路模拟)检测上车人数和下车…

Flink-水位线的设置以及传递

6.2 水位线 6.2.1 概述 分类 有序流 无序流 判断的时间延迟 延迟时间判定 6.2.2 水位线的设置 分析 DataStream下的assignTimstampsAndWatermarks方法&#xff0c;返回SingleOutputStreamOperator本质还是个算子&#xff0c;传入的参数是WatermarkStrategy的生成策略 但…