计算机网络:应用层(一)

在这里插入图片描述

  • 我最近开了几个专栏,诚信互三!
    ====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
    ====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
    ====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
    ====> |||《C#专栏》::记录我复习C#的经历,深度理解查漏补缺,不定期更新。|||
    ====> |||《计算机网络专栏》::记录我学习计算机网络,看完你一定会有收获。|||

计算机网络:应用层(一)

  • 应用层要解决的问题
  • 如何解决这些问题
    • IP地址及端口初识
    • 应用层协议
    • socket初识(初次理解)
    • TCP/UDP要提供的服务
  • TCP/UDP初识

应用层要解决的问题

在之前的计网博客中,我们以及学习到了网络和基于ISO,TCP/IP的网络层状结构,其中我们了解到了应用层要解决的问题是两台主机之间进程与进程之间的通讯问题。

如何解决这些问题

  • 首先,要解决进程之间的通讯问题,我们首先需要知道我们要与那个主机进行通讯。
  • 其次就要解决我们要与该主机的那个进程进行通讯。
  • 在次我们还要解决双方通讯所要遵守的规则,及协议。

IP地址及端口初识

要解决第一个问题,我们可以借助IP地址和端口,我们知道,IP地址表识了某个网络,这样我们就可以定位到接收方的网络位置,而进程则需要端口号来确认一个主机上有多个进程,端口号是一个数字,来标识唯一的进程,这样我们就能定位到网络,同时定位到精确的进程了。

定位到网络并不能找到某一台主机,还需要MAC地址,而这部分不属于应用层的管辖,属于数据链路层。

http的默认端口号为80号。
在这里插入图片描述

应用层协议

所谓的协议是层与层之间传递信息的一个规则的集合,协议中包含了很多东西,入语法,语义,时序等,应用层的主要协议有http,https协议,https协议是http+ssl协议,TCP/UDP是明码发送的,所以https协议就是解决如何在TCP/UDP为上层提供的服务中保证安全性。
下图是http报文格式。
在这里插入图片描述

socket初识(初次理解)

在我们传输数据的时候,我们要确认一些东西,比如:我是谁,我的那个进程要发送信息,接收方是谁,接收方的那个进程要接收该信息。 再比如我需要运输层为应用层提供可靠传输还是非可靠传输(TCP/UDP)。 以及基于什么协议进行传输。
我们发现,如果每次发送消息/接收消息,我们都确认并发送一边 “我是谁,我的那个进程要发送信息,接收方是谁,接收方的那个进程要接收该信息。”这样的信息,首先会导致效率降低,并且对空间的利用也不够好,socket解决的这个问题。

  • socket是被操作系统维护的一个表格,在需要可靠传输时(TCP),这个表格中包含了本地IP地址本地端口号接收方IP地址接收方端口号。这四个信息,在发送的时候,将这4个信息集合到一个整形中,并为四元组,发送出去,接收方同时也维护一个表格,来接收该四元组信息。
  • 对于非可靠传输(UDP)socket维护的是一个二元组表格,该表格内存有本地IP地址本地端口号

通过socket,我们不用在发送多条信息,只需发送四元组/二元组,就能确定所有信息,同时对于TCP来说,只需要确定不同的接收方的端口号,就可以直接发送数据,这样就节约了时间,对于接收方也是如此,UDP只需要确定接收方的IP,和端口号,这样就将很多重复工作的时间节约了下来。

TCP/UDP要提供的服务

我们知道在计算机体系结构中,下层要为上层提供服务,TCP/UDP协议要为应用层提供基于运输层的可靠与否的服务。

TCP:可靠传输,基于TCP/IP协议。
UDP:非可靠传输。

它们互有优劣,选择什么服务需要由应用层的进程决定。
但是这两个协议都是明码传输的,这在某些情况下是十分危险的,要解决这个问题,需要应用层的协议ssl,ssl是一个库,它可以为数据提供安全的传输解决TCP/UDP无法安全传输的问题。

TCP/UDP初识

简单认识以下TCP/UDP协议。

TCP:是运输层提供可靠传输的协议,为了实现可靠传输基于TCP的运输层会做以下工作

  • 1.TCP协议会检测当前信道的吞吐量,如果过高则TCP协议会减少发送的数据,保证数据的精确度。
  • 2.在传输时,会保留副本,如果分组丢失了,则重发。
    还有很多保证可靠传输的方法,这次简单认识下

UDP:是运输层提供非可靠传输的协议,由于是非可靠传输,所以对以上的要求都不高,入分组丢失不会重发,也不会保存分组,不会检测吞吐量,运输层数据接收速度与发送速度几乎相等等等。

这两种传输友好有坏,TCP提供可靠传输,用时间换取了数据的准确度,UDP则不会这样做。
比如流媒体,网络游戏等需要UDP提供服务,电子邮件等则需要TCP提供服务。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM之RAG理论(一)| CoN:腾讯提出笔记链(CHAIN-OF-NOTE)来提高检索增强模型(RAG)的透明度

论文地址:https://arxiv.org/pdf/2311.09210.pdf 检索增强语言模型(RALM)已成为自然语言处理中一种强大的新范式。通过将大型预训练语言模型与外部知识检索相结合,RALM可以减少事实错误和幻觉,同时注入最新知识。然而&…

【Spring教程17】Spring框架实战:实例详解解读AOP通知类型的使用

欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《AOP配置管理中AOP切入点表…

现代雷达车载应用——第2章 汽车雷达系统原理 2.2节

经典著作,值得一读,英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.2 汽车雷达架构 从顶层来看,基本的汽车雷达由发射器,接收器和天线组成。图2.2给出了一种简化的单通道连续波雷达结构[2]。这…

[湖湘杯 2021 final]MultistaeAgency

文章目录 题目是给了源码,我们先来看web的main.go package mainimport ("bytes""crypto/md5""encoding/json""fmt""io""io/ioutil""log""math/rand""net/http""o…

存储成本降71%,怪兽充电历史库迁移OceanBase

怪兽充电作为共享充电宝第一股,业务增长迅速,以至于业务架构不停地增加组件。在验证 OceanBase 可以简化架构并带来更大的业务价值后,首次尝试在历史库中使用 OceanBase 替代 MySQL,存储成本降低 71%。本文为怪兽充电运维架构部王…

odoo自定义提示性校验

背景: 在odoo16的原生的代码里,可以给按钮添加一个 confirm属性,从而达到 提示性校验的效果。 问题: 这个属性加了之后一定会弹出提示性校验的对话框,于是如何根据我们的实际业务,从后端返回提示性信息,…

ubuntu 20.04.6 server 服务器 下载与安装(配置静态IP)

下载地址:https://releases.ubuntu.com/20.04.6/ubuntu-20.04.6-live-server-amd64.iso 第一步: 准备U盘,使用软碟通将下载好的镜像写入到U盘中 软碟通网址:https://www.cn.ultraiso.net/xiazai.html 点击:文件 ->…

matlab 最小二乘拟合空间直线(方法三)

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示四、相关链接博客长期更新,GPT与爬虫自重,你也未必能爬到最新版本。 一、算法原理 1、算法过程 空间直线的点向式方程为:

远程服务器QEMU+Ubuntu+GRUB+VNC最佳实践

远程服务器QEMUUbuntuGRUBVNC最佳实践 1. 准备2. QEMU启动安装Ubuntu2.1 服务器端2.2 本地端 3. 从服务器终端控制虚拟机GRUB与虚拟机终端 这段时间参与大量内核切换测试工作,实体机需要硬件自检太过笨重,因此主要通过QEMU验证正确性。有一个很大的问题是…

OpenSSL 编程指南

目录 前言初始化SSL库创建SSL 上下文接口(SSL_CTX)安装证书和私钥加载证书(客户端/服务端证书)加载私钥/公钥加载CA证书设置对端证书验证例1 SSL服务端安装证书例2 客户端安装证书创建和安装SSL结构建立TCP/IP连接客户端创建socket服务端创建连接创建SSL结构中的BIOSSL握手服务…

Reinfocement Learning 学习笔记PartⅠ

文章目录 Reinfocement Learning一、基本概念二、贝尔曼公式(bellman equation)2.1 为什么return重要2.2 state value function的定义2.3 贝尔曼公式推导2.4 如何求解贝尔曼公式2.5 Action value的定义 三、贝尔曼最优公式(bellman optimalit…

1841_在Windows上安装emacs irony server

Grey 全部学习内容汇总:GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 1841_在Windows上安装emacs irony server emacs有很多优点,配置出来不仅用着顺手而且有一定的成就感。但是,对于大多数人来说或…

将单体应用程序迁移到微服务

多年来,我处理过多个单体应用,并将其中一些迁移到了微服务架构。我打算写下我所学到的东西以及我从经验中用到的策略,以实现成功的迁移。在这篇文章中,我将以AWS为例,但基本原则保持不变,可用于任何类型的基…

【动态规划精选题目】1、斐波那契数列模型

此动态规划系列主要讲解大约10个系列【后续持续更新】 本篇讲解入门级:斐波那契模型,会在讲解题目同时给出AC代码 为什么叫斐波那契数列模型?因为本篇4道题的状态转移方程都跟斐波那契递推方程差不多,但这点不重要,请往…

【C++】:set和map

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关多态的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结…

补充回答一些关于枚举类型的问题

补充回答一些关于枚举类型的问题 1.枚举类型在什么时候使用 枚举类型在以下情况下特别有用: 有限的离散值集合: 当变量的取值只有有限且离散的几个选项时,使用枚举类型能够提高代码的可读性。例如,星期几、月份、颜色等。 enum W…

Uncaught ReferenceError: jQuery is not defined解决方法

当我在写java的Maven项目时,出现了这样的一个报错信息: 我一直找代码,抓包,调试,比对代码 jQuery未定义就是指JS的导包没有导进来!!!! 导进来就运行正常啦

Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 is available

记录一次服务调用中的错误 背景:我使用了nacos2.x的版本,同时在同一台服务器的三个docker容器中部署了nacos1、2、3,并将它们连接到了同一个docker网络 错误:Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 …

使用cmake构建Qt6.6的qt quick项目,添加应用程序图标的方法

最近,在学习qt的过程中,遇到了一个难题,不知道如何给应用程序添加图标,按照网上的方法也没有成功,后来终于自己摸索出了一个方法。 1、准备一张图片作为图标,保存到工程目录下面,如logo.ico。 …

主机访问Android模拟器网络服务方法

0x00 背景 因为公司的一个手机app的开发需求,要尝试链接手机开启的web服务。于是在Android Studio的Android模拟器上尝试连接,发现谷歌给模拟器做了网络限制,不能直接连接。当然这个限制似乎从很久以前就存在了。一直没有注意到。 0x01 And…