TCP/IP五层模型——应用层(HTTP协议、简单的HTTP服务器)

2023-11-14

关于TCP/IP模型的简单介绍,在TCP/IP五层模型一文中有简单介绍,本文主要详细介绍其中的应用层相关内容。

首先介绍一个定义:

    应用层协议:在网络版加法计算器一文中,我们介绍的实现网络版本的加法计算器有两种方法。其实无论是哪种方法,只要能够保证,一端发送时构造的数据,另一端能够正确的解析,就是ok的,这种约定就是应用层协议。

HTTP协议——超文本传输协议

        程序员们自己编写的解决我们的实际问题,满足日常需求的网络程序,都是在应用层,也就是说应用层的协议是程序员自己定的。但是实际上,已经有一些已经定义好的且非常好用的应用层协议,可以供我们参考和使用,HTTP协议就是其中之一。

        所以,http协议是应用层协议,它基于TCP协议进行可靠的传送。HTTP协议定义了浏览器(万维网客户进程)以什么样的格式向万维网服务进程请求万维网文档,以及服务器以什么样的格式将文档传送给客户程序。每个万维网网点都有一个服务器进程(如果该服务器处理http请求,则端口号绑定为为80,如果为https请求,则端口号绑定为443),它不断监听来自客户端的请求。当有浏览器发送TCP连接请求时,服务器就与其建立连接,并处理请求,返回相应的页面,最后释放链接。

1. 认识URL

(1)WWW——万维网World  Wide Web

        WWW是环球信息网的缩写,(亦作Web、WWW、W3),英文全称是World Wide Web,中文名是“万维网”、“环球网”等。分为Web客户端和Web服务器程序,WWW可以让Web客户端(常用浏览器)访问浏览Web服务器上的页面。它是一个由许多互相链接的超文本组成的系统,通过互联网访问。 在这个系统中,每个有用的事物,称为一样“资源”;并且由一个全局“统一资源标识符”(URI)标识;这些资源通过超文本传输协议Hypertext Transfer Protocol)传送给用户,而后者通过点击链接来获得资源。

        万维网上的各站点都必须连接在因特网上(因特网:是当前全球最大的,开放的,由众多网络互连而成的特定计算机网络,采用TCP/IP协议簇作为通信的规则)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP/IP五层模型——应用层(HTTP协议、简单的HTTP服务器) 的相关文章

  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 这种 bash 文件名提取技术有何用途?

    我有一部分 bash 脚本正在获取不带扩展名的文件名 但我试图了解这里到底发生了什么 是做什么用的 有人可以详细说明 bash 在幕后做了什么吗 如何在一般基础上使用该技术 bin bash for src in tif do txt sr
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 查看 Linux 上的多核或多 CPU 利用率

    我有一个在 Linux 上运行的程序 我需要确定它如何利用所有 CPU 内核 有没有什么程序可以查看这些信息 跑过 top 命令并按下 1 查看各个核心
  • C++:Linux平台上的线程同步场景

    我正在为 Linux 平台实现多线程 C 程序 其中我需要类似于 WaitForMultipleObjects 的功能 在搜索解决方案时 我发现有一些文章描述了如何在 Linux 中实现 WaitForMultipleObjects 功能
  • 无需 root 访问权限即可安装 zsh? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有可能 以及如何 我确实需要在几台具有 ssh 访问权限 但没有 root 访问权限 的远程计算机上使用此功能 下载 zsh wget O zsh t
  • 使用 ProcessBuilder 运行 shell 脚本

    我正在尝试使用 Java 和 ProcessBuilder 运行脚本 当我尝试运行时 我收到以下消息 error 2 没有这样的文件或目录 我不知道我做错了什么 但这是我的代码 ps 我尝试只执行不带参数的脚本 错误是相同的 String
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • 如何反汇编、修改然后重新组装 Linux 可执行文件?

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • 如何将 elf 解释器(ld-linux.so.2/ld-2.17.so)构建为静态库?

    如果我的问题不准确 我深表歉意 因为我没有太多 Linux 相关经验 我目前正在构建一个 Linux 从头开始 主要遵循 linuxfromscratch org 版本的指南 7 3 我遇到了以下问题 当我构建可执行文件时 获取一个称为 E
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 用于获取特定用户 ID 和进程数的 Bash 脚本

    我需要 bash 脚本来计算特定用户或所有用户的进程 我们可以输入 0 1 或更多参数 例如 myScript sh root deamon 应该像这样执行 root 92 deamon 8 2 users has total proces
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件

随机推荐

  • 笔记--Ubuntu18.04安装Deepstream 6.0

    目录 1 安装依赖 2 安装Cuda Toolkit 11 4 1 3 安装cudnn 8 2 4 安装TensorRT 8 0 1 5 安装librdkafka 6 安装 deepstream sdk 7 验证与测试 8 问题记录 参考
  • ChatGPT是如何辅助高效撰写论文及使用ChatGPT注意事项

    ChatGPT发布近1年 各大高校对它的态度也发生了极大转变 今年3月发布ChatGPT禁令的牛剑等世界顶级名校也在近期解除了ChatGPT禁令 发布了生成式人工智能使用指南 ChatGPT一定程度上可以解放科研人员的劳动力 与其直接禁止不
  • IDEA 导入依赖,还是报java.lang.NoClassDefFoundError

    java lang NoClassDefFoundError net coobird thumbnailator Thumbnails IDEA 导入依赖 还是报java lang NoClassDefFoundError maven 里面
  • Powershell简介

    Powershell简介 PowerShell是一种功能强大的脚本语言和shell程序框架 主要用于Windows计算机方便管理员进行系统管理并有可能在未来取代Windows上的默认命令提示符 PowerShell脚本因其良好的功能特性常用
  • IPsec over GRE 和GRE over IPsec比较和区别与配置

    GRE over IPsec IPsec over GRE I PSec Over GRE是先ipsec后gre 这种我没用过 GRE Over IPSec 是先gre后ipsec 也就是说ipsec是最后的承载方式 一般常用的就是这种 解
  • webpack4+动态导入(按需加载方式)

    此文为复习或升级webpack过程中的总结 webpack版本为4 29 5 webpack4 动态导入 目的 减少包体积 按需加载 常见使用情况有以下3中 1 使用import 的情况 output filename bundle js
  • $‘\r‘: 未找到命令的解决办法

    前言 有时我们在执行shell脚本的时候 会出现 r 未找到命令 错误 绝大多数情况下是因为在window系统中写的shell脚本 然后上传到服务器执行造成的 解决办法如下 1 安装dos2unix yum install dos2unix
  • 用汇编语言实现从键盘输入一个字符,在下一行上以十六进制形式输出它的ASCII码。

    在我之前的一篇博客里已经写过如何输出一个字符的ASCII码的十进制形式 以十六进制形式输出的方法与其相差不多 详情可查看我的专栏 汇编语言 里的第一篇博客 要求如下 代码如下 data segment string1 db 5 dup st
  • SpringBoot中的bean注入方式和原理介绍

    Spring Boot是一个非常流行的Java框架 它可以帮助开发者快速地构建高效 健壮的应用程序 其中一个重要的功能就是依赖注入 也就是将一个对象注入到另一个对象中 以便它们可以相互协作 在Spring Boot中 依赖注入是通过bean
  • 事务的相关内容

    主要用于处理操作量大 复杂度高的数据 将一组SQL放在一个批次中去执行 事务原则 ACID原则 原子性 一致性 隔离性 持久性 脏读 幻读 原子性 要么都成功 要么都失败 一致性 事务前后的数据完整性要保证一致 持久性 事务一旦提交则不可逆
  • DevExpress ASP.NET Wizard使用

    1 新建项目 2 选择主题后按 Run Wizard 3 选择布局custom 按 4 选择主题 按 5 设置网站设置 6 设置组件设置 设置本地化 修改标题 修改左侧树
  • 带头双向循环链表基础知识归纳

    本节博主将归纳带头双向循环链表的初始化 头尾插和头尾删 首先让我们一起瞅瞅这链表长啥样 图像来源 图解几种常见的线性表 命中水 cxiansheng cn 在这张图中我们能够得出一个双向循环链表所需要的结构体基本框架 struct node
  • 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;

    将输入的字符串 字符串仅包含小写字母 a 到 z 按照如下规则 循环转换后输出 a gt b b gt c y gt z z gt a 若输入的字符串连续出现两个字母相同时 后一个字母需要连续转换2次 例如 aa 转换为 bc zz 转换为
  • 解决maven出现“连接到http://repo.maven.apache.org被拒绝”的问题

    1 原因 这个问题的原因就是无法连接到http repo maven apache org maven2镜像 2 解决办法 修改maven默认镜像仓库地址为国内可用的镜像地址 比如这里推荐阿里的镜像仓库地址 http maven aliyu
  • Android 权限大全

    Key android permission ACCESS CHECKIN PROPERTIES Title 访问检入属性 Memo 允许对检入服务上传的属性进行读 写访问 普通应用程序不能使用此权限 Level 0 Key android
  • QNX下获取系统信息的方法(cpu,内存,进程等等)

    有不少朋友问在qnx下如何获取内存及cpu占有率等等 想到两年前自己做过一个类似windows里的任务管理器的东东 里面有一部分就是获取内存 cpu 磁盘及进程信息的GUI程序 记得也美其名曰xxxTaskMan 把里面的关键代码写下来供兄
  • 关于C++的精度输出的解释。cout.precision()

    关于C 的精度输出的解释 cout precision 网上解释cout precision 是控制浮点数的输出精度的 这句话是没有错误的 但是程序又提示cout precision 是控制输出结果的小数点位数的 这句话是不对的 我们可以做
  • 腾讯云S5服务器2核2G、2核4G和4核8G五年租用时长

    腾讯云五年服务器来了 标准型S5云服务器 可选2核2G 2核4G和4核8G配置 一次性购买五年低至2折 免去xufei烦恼 腾讯云百科分享腾讯云5年服务器限制条件 云服务器配置 目录 腾讯云S5服务器CPU 五年机服务器配置 腾讯云标准型S
  • 转:win7系统下安装SQL Server 2005图文教程

    转载链接 https www cnblogs com icewee articles 2019783 html 转载内容如下 操作系统 Microsoft Windows 7 旗舰版 32位 数据库版本 SQL Server 2005 简体
  • TCP/IP五层模型——应用层(HTTP协议、简单的HTTP服务器)

    关于TCP IP模型的简单介绍 在TCP IP五层模型一文中有简单介绍 本文主要详细介绍其中的应用层相关内容 首先介绍一个定义 应用层协议 在网络版加法计算器一文中 我们介绍的实现网络版本的加法计算器有两种方法 其实无论是哪种方法 只要能够