计算机网络学习笔记(II)——应用层

news2024/9/20 2:26:37

文章目录

    • 第二章—应用层
      • 2.1、应用层原理
        • 网络应用的体系结构
          • 客服—服务器(C/S)体系结构
          • 对等体(P2P)体系结构
          • C/S和P2P体系的混合结构
        • 进程通信
        • 分布式进程通信需要解决的问题
        • 应用层协议
        • Internet传输层提供的服务
        • UDP存在的必要性
      • 2.2、Web和HTTP
        • Web术语
        • HTTP概况
        • HTTP连接
        • 响应时间模型
        • 持久HTTP
        • HTTP请求报文
        • HTTP请求报文:通用格式
        • 提交表单输入
        • HTTP响应状态码
        • 用户-服务器状态:cookies
        • Web缓存(代理服务器)
      • 2.3、FTP
        • FTP:文件传输协议
        • FTP:控制连接与数据连接分开
        • FTP命令、响应

第二章—应用层

2.1、应用层原理

网络应用的体系结构

客服—服务器(C/S)体系结构
  • 服务器
    • 一直运行
    • 固定的IP地址和周知的端口号
    • 扩展性:服务器场,数据中心进行扩展、扩展性差
  • 客户端
    • 主动与服务器通信
    • 与互联网有间歇性的连接
    • 可能是动态IP地址
    • 不能直接与其他客户端通信
对等体(P2P)体系结构
  • 几乎没有一直运行的服务器
  • 任意端系统之间可以进行通信
  • 每个节点即是客户端又是服务器
  • 参与主机间歇性连接且可以改变IP地址
C/S和P2P体系的混合结构
  • Napster

    • 文件搜索:集中

    • 文件传输:P2P

  • 即时通信

    • 在线检测:集中
    • 两个客户聊天:P2P

进程通信

进程:在主机上运行的应用程序

  • 在同一个主机内,使用进程通信机制通信(操作系统定义)
  • 不同主机,通过交换==报文(Message)来通信

客户端进程: 发起通信的进程

服务器进程: 等待连接的进程

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

  1. 进程标示和寻址问题(服务用户)
    • 对进程进行编址
    • 进程为了接受报文,必须有一个标识即:SAP
      • 主机:唯一的32位IP地址
      • 所采用的传输层协议:TCP/UDP
      • 端口号(Port Numbers)
    • 本质上,一对主机进程之间的通信由2个端节点构成
  2. 传输层-应用层提供服务是如何(服务
    • 位置:层间界面的SAP(TCP/IP:scoket)
    • 形式:应用程序接口API(TCP/IP:scoket API)
    • 层间接口必须要携带信息
      • 要传输的报文
      • 谁传的:对方的应用进程的标示:IP+TCP(UDP) 端口
      • 传给谁:对方的应用进程的标示:对方的IP+TCP(UDP)端口号
    • 传输层实体(tcp或者udp实体)根据这些信息进行TCP报文段(UDP数据包)的分装
      • 源端口号,目标端口号,数据等
      • 将IP地址往下交IP实体,用于封装IP数据报:源IP,目的IP
    • TCP scoket:
      • TCP服务,两个进程之间的通信需要之前要建立连接
      • 可以用一个整数表示两个应用实体之间的通信关系,本地标示
      • TCP scoket:源IP、源端口、目标IP、目标端口
    • TCP的套接字
      • 4元组:(源IP、源port、目标IP、目标port)
      • 唯一的指定了一个会话(2个进程之间的会话关系)
      • 应用使用这个标示,与远程的应用进程通信
    • UDP scoket:
      • UDP服务,两个进程之间的通信需要之前无需建立连接:每个报文都是独立传输,前后报文可能分给不同的分布式进程
      • UDP scoket:本IP,本端口
      • 传输报文时:必须要提供对方IP,Port:传输报文时:传输层需要上传对方的IP,port
    • UDP套接字
      • 2元组:IP,Port
      • UDP套接字指定了应用所在的一个端节点
      • 在发报文时,必须要指定对方的IP和UDP port
  3. 如何使用传输层提供的服务,实现应用进程之间的报文交换,实现应用(用户使用服务
    1. 定义应用层协议:报文格式,解释,时序等
    2. 编制程序,使用OS提供的API,调用网络基础设施提供通信服务传报文

应用层协议

定义了:运行在不同的端系统上的应用进程如何相互交换报文

  • 交换的报文类型:请求和应答报文
  • 各种报文类型的语法:报文中的各个字段及其描述
  • 字段的语义:即字段取值的含义
  • 进程何时、如何发送报文及对报文进行响应的规则

应用层需要传输层提供什么样的服务?如何描述传输层的服务?

  • 数据丢失率
  • 吞吐
  • 延迟
  • 安全性:机密性、机密性、可认证性

Internet传输层提供的服务

TCP服务:

  • 可靠的传输服务
  • 流量控制:发送方不会淹没接受方
  • 拥塞控制:当网络出现拥塞时,能抑制发送方
  • 不能提供的服务:时间保证、最小吞吐保证和安全
  • 面向连接:要求在客户端进程和服务器进程之间建立连接

UDP服务:

  • 不可靠传输
  • 不提供服务:可靠、拥塞控制、流量控制、时间、宽带保证、建立连接

UDP存在的必要性

  • 能够区分不同的进程,而IP服务不能
  • 无需建立连接,省去建立连接时间,适合事物性的应用
  • 不做可靠性的工作
  • 没有拥塞控制和流量控制,应用能够按照设定的速度发送数据

2.2、Web和HTTP

Web术语

Web页:由一些对象组成,对象可以是HTML文件,JPEG图像,Java程序等。其包含有一个基本的HTML文件该文件包含若干对象的链接

通过URL对每个对象进行引用

  • 访问协议,用户名,口令字,端口等;

URL格式:

image-20221128144749539

HTTP概况

HTTP:超文本传输协议

  • Web的应用层协议
  • 客户/服务模式
    • 客户:请求、接收和显示Web对象的浏览器
    • 服务器:对请求进行响应,发送对象的Web服务器

image-20221128145647688

  • 使用TCP

    • 客户发起一个与服务器的TCP连接(建立套接字scoket),端口为80
    • 服务器接受客户的TCP连接
    • 在浏览器(HTTP客户端)与服务器(HTTP服务器server)交换HTTP报文(应用层协议报文)
    • TCP连接关闭
  • HTTP是无状态的

    • 无状态的意思是服务器并不会维护关于客户的任何信息(也就是客户发送什么请求,服务器端就给什么响应)
  • 维护状态的协议和复杂

    • 必须维护历史信息(状态)
    • 如果服务器/客户机死机。他们的状态信息可能不一致,二者的信息是一致的
    • 无状态的服务器能够支持更多的客户端

HTTP连接

  1. 非持久HTTP

    1. 最多只有一个对象在TCP连接上发送
    2. 下载多个对象需要多个TCP连接
    3. HTTP/1.0使用非持久连接
  2. 持久HTTP

    1. 多个对象可以在一个(客户端和服务器之间的)TCP连接上传输
    2. HTTP/1.1默认使用持久连接

image-20221128153917805

响应时间模型

往返时间RTT(round-triptime):一个小的分组从客户端到服务器,在回到客户端的时间(传输时间忽略)

响应时间

  • 一个RTT用来发起TCP连接
  • 一个RTT用来HTTP请求并等待HTTP响应
  • 文件传输时间
  • 共:2RTT+传输时间

image-20221128155925476

持久HTTP

非持久HTTP的缺点:

  • 每个对象要2个RTT
  • 操作系统必须为每个TCP连接分配资源,但浏览器通常打开并行TCP连接,以获取引用对象

持久HTTP

  • 服务器在发送响应后,仍保持TCP连接

  • 在相同客户端和服务器之间的后续请求和响应报文通过相同的连接进行传送、客户端在遇到一个引用对象的时候,就可以尽快发送对象的对象的请求

  • 非流水方式的持久HTTP

    • 客户端只能在收到前一个响应后才能发出新的请求
    • 每个引用对象花费一个RTT
  • 流水方式的持久HTTP

    • HTTP/1.1的默认模式
    • 客户端遇到一个引用对象就立即产生一个请求
    • 所有引用(小)对象只花费一个RTT是可能的

HTTP请求报文

两种类型的HTP报文:请求、响应

HTTP请求报文:ASCII

在浏览器中输入www.baidu.com可以看到HTTP请求报文格式

image-20221128193237505

image-20221128193216060

HTTP请求报文:通用格式

HTTP有两类报文:

  • 请求报文——从客户端向服务器发送请求报文
  • 响应报文——从服务器到客户端的回答

image-20221128193738819

提交表单输入

POST方式:网页通常包含表单输入、包含在实体主体(entity body)中的输入被提交到服务器

URL方式:方法:GET、输入通过请求行的URL字段上载

  • 方法类型
    • HTTP/1.0:GET、POST、HEAD(要求在服务器在响应报文中不包含请求对象——>故障跟踪)
    • HTTP/1.1:GET、POST、HEAD、PUT(将实体主体中的文件上载到URL字段规定的路径)、DELETE(删除URL字段规定的文件)

image-20221128195239582

HTTP响应状态码

  • 200 OK:请求成功,请求对象包含在响应报文的后续部分
  • 301 Moved Permanently:请求的对象已被永久转移了
  • 400 Bad Request:一个通用的差错代码,表示请求不能被服务器解读(例如:在Java中前后端联调时接口写错)
  • 404 Not Found:请求的文档在该服务上没有找到
  • 505 HTTP Version Not Support:服务器错误

image-20221128195312356

用户-服务器状态:cookies

大多数主要门户网站使用cookies,主要有4部分组成:

  • 在HTTP响应报文中有一个cookies的首部行
  • 在HTTP请求报文含有一个cookies的首部行
  • 在用户端系统中保留有一个cookie文件,有用户浏览器管理
  • 在Web站点有一个后端数据库

image-20221128195846647

Web缓存(代理服务器)

目标:不访问原始服务器,就满足客户的请求

  • 用户设置浏览器:通过缓存访问Web

  • 浏览器将所有的HTTP请求发给缓存

    • 在缓存中的对象:缓存直接返回对象
    • 如果对象不在缓存,缓存请求原始服务器,然后再将对象返回个客户端

image-20221128201506633

2.3、FTP

FTP:文件传输协议

  • 向远程主机上传输文件或从远程主机接收文件

  • 客户/服务器模式

    • 客户端:发起传输的一方
    • 服务器:远程主机
  • FTP服务器:端口号21

image-20221128161842622

FTP:控制连接与数据连接分开

  • FTP客户端与FTP服务器通过端口21连接,并使用TCP为传输协议
  • 客户端通过控制连接获得身份确认
  • 客户端通过控制连接发送命令浏览远程目录,收到文件传输命令时,服务器打开一个客户端的数据连接
  • 一个文件传输完成后,服务器关闭连接,服务器打开第二个TCP数据连接用来传输另一个文件
  • FTP服务器维护用户状态信息:当前路径、用户账户与控制连接对应状态

image-20221128162946049

FTP命令、响应

命令样例:

  • 控制连接上以ASCII文本方式传送
  • USER username PASS password
  • LIST:请服务器返回远程主机当前目录的文件列表
  • PETR filename:从远程主机当前目录检索文件
  • STOR filename:向远程主机的当前目录存放文件

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

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

相关文章

【Android插件化框架】插件APK中的动态代理

在 Android 中实现插件化框架,需要解决的问题主要如下: 资源和代码的加载Android 生命周期的管理和组件的注册宿主 APK 和插件 APK 资源引用的冲突解决 下面分析几个目前主流的开源框架 DL 动态加载框架 ( 2014 年底) 是基于代理的方式实现插件框架&…

渗透测试 | APP信息收集

0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…

【学习笔记76】认识ajax和ajax的请求

一、认识前后端交互 1、前后端交互 前端向后端发送请求, 索要数据因为前端没有办法存储大量数据, 所以数据都存储在后端当前端需要数据时, 需要向后端发送请求, 得到想要的数据 2、什么是ajax ajax全名async javascript and XML(异步JavaScript和XML)是前后台交互的能⼒&#…

手摸手带你撸一个拖拽效果

目录 前言 准备 创建所需要结构 编写样式 js编写拖拽效果 解释方法 所有代码 结尾 前言 最近看见一个拖拽效果的视频,看好多人评论说跟着敲也没效果,还有就是作者也不回复大家提出的一些疑问,本着知其然必要知其所以然的心理&#xf…

【疯狂世界杯】css 动画实现跳动的足球

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言📝…

python T检验

T检验通常分为三种:单样本T检验、双样本T检验、配对样本T检验原理可以参考:一文详解t检验本文主要介绍使用python实现T检验的过程,内容主要是参考这篇博文:利用python库stats进行t检验 文章目录一、单样本T检验二、独立样本t检验&…

二、Git本地仓库基本操作——创建Git仓库、提交更新或删除文件

1. 创建本地工作仓库 创建本地工作仓库有两种方法: git init 在本地初始化一个git仓库git clone 直接克隆一个远程的git仓库 方法一: 我们在其中一个目录下,点击鼠标右键,然后启动git bash。输入下面命令: git in…

【实战案例】Python 信用卡欺诈检测其实特简单

当我们在网上购买产品时,很多人喜欢使用信用卡。但信用卡欺诈常常会在身边发生,网络安全正成为我们生活中至关重要的一部分。 为了解决这个问题,我们需要利用机器学习算法构建一个异常行为的识别系统,如果发现可疑,中…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校饭堂管理系统8gmjo

这个选题的话其实有很多的,就看你自己能接受怎么样的,比如可以做网站类、系统类、小程序类、安卓app、大数据类等等,这个也要看你个人能力和技术问题,如果技术小白或者有一点点基础的话建议选择网站类和系统类的,如果有…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.2 镜像命令练习

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.2 镜像命令练习10.2.1 练习10 使用Docker 10.2 镜像命令…

Spring boot 自动装配原理

Spring boot 为了解决Bean的复杂配置&#xff0c;引入了自动装配机制&#xff1b;那么什么是自动装配&#xff0c;它的原理又是什么呢&#xff1f;我们先通过以下例子来了解以一下什么是自动装配。 Spring boot 集成 redis 引入依赖包 <dependency><groupId>org…

CTFShow pwn07 (ret2libc-64bit

用ROPgabdet 找到pop rdi地址和ret地址&#xff1a; 来自ctfshow pwn7&#xff1a; 64位程序是需要栈平衡的&#xff0c;而且前六个寄存器用完了才会用栈传参 %rdi&#xff0c;%rsi&#xff0c;%rdx&#xff0c;%rcx&#xff0c;%r8&#xff0c;%r9 用作函数参数&#xff0c;依…

rust编程-rust所有权理解(chapter 4.1)

目录 1. 什么是所有权 1.1 堆与栈 1.2 变量作用域 1.3 String类型 1.4 内存和分配 1.5 变量和数据交互的方式 1.5 所有权和函数 1.6 返回值和作用域 所有权 是Rust独有的特性&#xff0c;该设计开创了编程语言中的先河。所有权使得Rust能保证内存的安全&#xff0c;且不…

游程编码(Run Length Coding)

游程编码游程编码基本介绍示例1示例2游程编码适用的场景游程编码 游程编码&#xff08;Run Length Coding&#xff0c;简称RLC&#xff09;又称游程编码、行程长度编码、变动长度编码 等&#xff0c;是一种统计编码。主要技术是检测重复的比特或字符序列&#xff0c;并用它们的…

亚马逊云科技re:Invent 2022 Ruba Borno主题演讲

2022亚马逊云科技re:Invent全球大会精彩内容应接不暇&#xff0c;亚马逊云科技全球渠道与联盟副总裁Ruba Borno在2022亚马逊云科技re:Invent大会的全球合作伙伴峰会上&#xff0c;为合作伙伴带来一系列全新的合作伙伴创新服务。 云上发展持续加速的当下&#xff0c;上云好比一场…

使用Fiddler对手机App抓包

目录 一、查看 Fiddler 的 ip 地址 二、设置 Fiddler 允许远程连接 三、进行手机端 App 的抓包 3.1.准备工作 3.2.手机设置 3.3.安装根证书 四、可能会遇到的问题 一、查看 Fiddler 的 ip 地址 有两种方法都可以查询到。 第一种方法&#xff1a; 打开 Fiddler&#xff…

[附源码]计算机毕业设计springboot在线招聘网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

一分钟带你了解音视频开发进阶(先收藏了)

FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发学习路线 随着基础设施的完善&#xff08;光纤入户、wifi覆盖、5G普及&#xff09;的影响&#xff0c;将短视频、直播、视频会议、在线教育、在线医疗瞬间推到了顶峰&#xff0c;人们对音视频的需求和要求也越来越强烈 音视…

实现java项目idea打包发布至服务器(完整版)

问题&#xff1a;如何快速部署本地代码到服务器&#xff1f; 今天介绍的是使用idea的一款插件(Alibaba Cloud Toolkit)实现&#xff0c;首先需要在自己的服务器上安装运行环境&#xff0c;包括&#xff1a;jdk、maven、mysql等&#xff0c;这些操作就不详细说了&#xff0c;可…

Inductive Representation Learning on Large Graphs 论文/GraphSAGE学习笔记

1 动机 1.1 过去的方法 现存的方法大多是transductive的&#xff0c;也就是说&#xff0c;在训练图的时候需要将整个图都作为输入&#xff0c;为图上全部节点生成嵌入&#xff0c;每个节点在训练的过程中都是可知的。举个例子&#xff0c;上一次我学习了GCN模型&#xff0c;它…