应用层(中)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 应用层(中)

Internet 传输层提供的服务


1. TCP 服务:


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


2. UDP服务


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


UDP服务存在的必要性


  • 能够区分不同的进程,而IP服务不能
  • 在IP提供的主机到主机端到端功能的基础上,区分了主机的 应用进程
  • 无需建立连接,省去了建立连接时间,适合事务性的 应用
  • 不做可靠性的工作,例如检错重发,适合那些对实时 性要求比较高而对正确性要求不高的应用
  • 因为为了实现可靠性(准确性、保序等),必须付出时间代 价(检错重发)
  • 没有拥塞控制和流量控制,应用能够按照设定的速度 发送数据
  • 而在TCP上面的应用,应用发送数据的速度和主机向网络发送 的实际速度是不一致的,因为有流量控制和拥塞控制


Internet应用及其应用层协议和传输协议


1689601351513-d962ba06-e8e5-4cb0-a183-04c0c95161f7.png

安全TCP


TCP & UDP都是不安全的,他们在传输过程中都不提供任何的安全性, 都是明文传输的, 明文通过互联网传输 ,甚至密码


如何增加安全性 ?


1.SSL : 在TCP上面实现,提供加密的TCP连接

基本上是在应用层, 但是也可以在传输层。


1.SSL socket API

应用通过API将明文交 给socket,SSL将其加 密在互联网上传输


Web and HTTP



相关术语:


Web页:由一些对象组成


对象可以是HTML文件、JPEG图像、Java小程序、声 音剪辑文件等


Web页含有一个基本的HTML文件,该基本HTML文 件又包含若干对象的引用(链接)


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


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


URL格式:


1689677274513-61bc860b-50d6-4ae6-a2b7-3a3bdd53a06b.png


互联网中的所有指向都是通过这种对象的形式呈现的网状。


我们想要找到某一个内容从这个网状结构中 ,就需要通过搜索引擎来建立索引,然后通过我们输入的关键字作为索引, 他就会将匹配的内容给你。


HTTP概述


Http: 超文本传输协议


包括:


  • Web的应用层协议
  • 客户/服务器模式


客户: 请求、接收和显示 Web对象的浏览器


服务器: 对请求进行响应, 发送对象的Web服务器


1689677407643-6c98f7ce-c2a9-47f2-83e3-c00624bd107c.png


协议有:


  • HTTP 1.0: 在RFC 1945中描述
  • HTTP 1.1: 在RFC 2068中描述


HTTP是跑在TCP之上的(步骤)★★★★★


  1. 首先, 客户发起一个与服务器的 TCP连接 (建立套接字) , 端口号为 80
  2. 服务器接受客户的TCP连 接
  3. 然后, 在浏览器(HTTP客户端) 与 Web服务器(HTTP服 务器 server)交换HTTP 报文 (应用层协议报文 )
  4. 最后, TCP连接关闭


解释:


服务器端建立的时候会有一个Socket 用来守护80 端口。(假装叫Socket1)


客户端通过请求发送到服务器之后 ,服务器端会产生Socket (叫Socket2) ,这个Socket代表的就是这个客户端和 当前服务器端建立的会话关系。


之后来的请求同样会建立会话关系(Socket i)


刚开始建立的Socket1并不会有动作, 他会等待其他浏览器的请求, 来建立并发的会话关系


上述的Socket处理请求就类似于: 他(Socket1)是大堂经理,来客人后,把客人分给手下具体营业员管理(Socket i)


HTTP是无状态的。服务器并不维护关 于客户的任何信息


维护状态的协议很复杂!


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


HTTP连接


非持久HTTP(三次握手初讲)


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


在一个Web浏览器和一个Web服务器想要建立连接的时候(HTTP 1.0 版本)


  1. 首先借助SocketAPI 告诉下面的TCP要根对方建立连接了(发送请求)
  2. 然后这个请求还会回来(建立确认), 然后进行交互才能完成。
  3. 借者就是发送HTTP请求, 然后响应等等


1689679117233-dbb21c00-c0bc-47cd-9c21-302134365d2d.png1689679134409-ee90033c-0174-4f94-bc31-7ad7dad12adb.png



响应时间模型


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


响应时间:


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


共:2RTT+传输时间


传输是把分组打出去的时间,传播是分组在介质中运行的时间


1689679487549-997c625f-852b-4a46-9728-bae3d83d40a3.png


持久HTTP


  • 多个对象可以在一个 (在客户端和服务器 之间的)TCP连接上 传输
  • 在相同客户端和服务器之间的后 续请求和响应报文通过相同的连 接进行传送
  • 客户端在遇到一个引用对象的时 候,就可以尽快发送该对象的请 求
  • HTTP/1.1 默认使用 持久连接


非持久的缺点:


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


(一) 流水线方式的持久HTTP


  • 客户端只能在收到前一个响应后 才能发出新的请求
  • 每个引用对象花费一个RTT
  • HTTP/1.1 默认使用 持久连接


类似于并行的方式吧,


(二) 非流水线方式的持久HTTP


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



目录
相关文章
|
Cloud Native Docker 容器
云原生之使用Docker部署Booksonic有声读物平台
云原生之使用Docker部署Booksonic有声读物平台
866 1
|
5月前
|
缓存 监控 API
1M 上下文不是免费午餐:超过 200K 输入价格翻倍,怎么算账怎么控
Opus 4.6 首次为旗舰模型开放1M上下文,但输入超200K token即触发全请求价格翻倍(输入$10→$5/MTok,输出$37.5→$25/MTok)。需精准监控总输入token(含cache相关),善用RAG、裁剪、缓存与Batch API控本。
1472 4
|
9月前
|
传感器 编解码 数据挖掘
ASTER 全球数字高程模型 V003
ASTER GDEM V3由NASA与METI合作开发,提供全球陆地高程数据,空间分辨约30米,覆盖北纬83°至南纬83°。基于188万景ASTER影像自动生成,含DEM与场景数图层,数据经云掩膜、异常值去除及多源融合优化,适用于地形分析,但可能存在局部伪影。
625 1
|
机器学习/深度学习 算法 自动驾驶
深度学习与图像处理 | 基于传统图像处理的自动驾驶车道线检测
本节介绍了基于OpenCV的传统图像处理算法在车道线检测中的应用,重点讲解了如何通过HSV颜色空间提取黄色和白色车道线、使用高斯模糊降噪、Canny算子提取边缘、感兴趣区域裁剪以及霍夫变换检测线段。最终通过对检测到的线段进行聚类与平均,得到代表左右车道线的直线,并实现车道线的可视化显示。该方法为自动驾驶小车提供了转向控制依据。
1117 2
|
安全 数据可视化 数据挖掘
医院定位导航系统:技术革新助力医院安全管理与运营效率双重提升
医疗定位导航系统不仅集成了高精度的定位技术,还融合了人员定位、安全预警等多元化功能,为医院管理、患者就医及医护人员工作提供了全方位的支持。
646 1
医院定位导航系统:技术革新助力医院安全管理与运营效率双重提升
|
中间件
eggjs 怎么使用 egg-jwt 实现登录验证中间件?
eggjs 怎么使用 egg-jwt 实现登录验证中间件?
915 99
eggjs 怎么使用 egg-jwt 实现登录验证中间件?
|
网络协议 安全
深入了解传输控制协议(TCP)
【8月更文挑战第24天】
917 0
|
Java 编译器 开发者
Java演进问题之AOT编译在Java中实现起来困难如何解决
Java演进问题之AOT编译在Java中实现起来困难如何解决
518 0
|
缓存 Ubuntu Linux
Linux软件包管理工具-apt
前言 Linux系统中,常用的软件包管理工具之一是apt(Advanced Package Tool)。它主要用于安装、更新和删除软件包,特别适用于基于Debian/Ubuntu的发行版。 1、更新软件包列表 这个命令会更新本地的软件包索引,其中包含可用软件包及其版本信息。 sudo apt update 2、升级已安装的软件包 这个命令将已安装的软件包升级到它们的最新版本。 sudo apt upgrade 3、安装软件包 将软件包名称替换为你要安装的软件包的名称。 sudo apt install 软件包名称 4、删除软件包 将软件包名称替换为你要删除的软件包的名称。这个命令会删除软件包,
723 0