Linux - 第16节 - 网络基础(应用层二)

news2024/12/28 14:47:43

1.HTTP协议

我们在套接字部分编写的代码和应用层一中编写的网络计算器代码都是在应用层工作的,是应用层代码,因此应用层代码包括:

(1)基本系统socket套接字系列接口的使用。

(2)定制协议(例如网络计算器Protocol.hpp文件中的代码)

(3)编写业务(例如网络计算器severTcp文件中的calculator接口)

注:定制协议和编写业务是两回事,可以进行解耦。

网络计算器场景下我们使用socket套接字系列接口、定制协议、编写业务的过程较为麻烦,考虑的也不一定全面。一些常用的场景已经有程序员自定义过成熟的协议,这些协议慢慢成为了应用层特定协议的标准,可以被我们直接使用。

应用层代码的定制协议部分常见协议标准有http、https、smtp、ftp、DNS等,我们这里以http、https为主进行讲解。

注:这些常见协议标准主要完成了应用层代码的“基本系统socket套接字系列接口的使用”部分和“定制协议”部分功能。

1.1.HTTP简介

HTTP(Hyper Text Transfer Protocol)协议又叫做超文本传输协议,是一个简单的请求-响应协议,HTTP通常运行在TCP之上。

在编写网络通信代码时,我们可以自己进行协议的定制,但实际有很多优秀的工程师早就已经写出了许多非常成熟的应用层协议,其中最典型的就是HTTP协议。

1.2.认识URL

URL(Uniform Resource Lacator)叫做统一资源定位符,也就是我们通常所说的网址,是因特网的万维网服务程序上用于指定信息位置的表示方法。

一个URL大致由如下几部分构成:

协议方案名:

http://表示的是协议名称,表示请求时需要使用的协议,通常使用的是HTTP协议或安全协议HTTPS。HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

常见的应用层协议:

\cdot DNS(Domain Name System)协议:域名系统。
\cdot FTP(File Transfer Protocol)协议:文件传输协议。
\cdot TELNET(Telnet)协议:远程终端协议。
\cdot HTTP(Hyper Text Transfer Protocol)协议:超文本传输协议。
\cdot HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)协议:安全数据传输协议。
\cdot SMTP(Simple Mail Transfer Protocol)协议:电子邮件传输协议。
\cdot POP3(Post Office Protocol - Version 3)协议:邮件读取协议。
\cdot SNMP(Simple Network Management Protocol)协议:简单网络管理协议。
\cdot TFTP(Trivial File Transfer Protocol)协议:简单文件传输协议。

登录信息:

usr:pass表示的是登录认证信息,包括登录用户的用户名和密码。虽然登录认证信息可以在URL中体现出来,但绝大多数URL的这个字段都是被省略的,因为登录信息可以通过其他方式(网页扫码登录、网页账号密码登录等)交付给服务器。

服务器地址:
www.example.jp表示的是服务器地址,也叫做域名,比如www.alibaba.com,www.qq.com,www.baidu.com。

需要注意的是,我们用IP地址标识公网内的一台主机,但IP地址本身并不适合给用户看。比如说我们可以通过ping命令,分别获得www.baidu.com和www.qq.com这两个域名解析后的IP地址。

如果用户看到的是这两个IP地址,那么用户在访问这个网站之前并不知道这两个网站到底是干什么的,但如果用户看到的是www.baidu.com和www.qq.com这两个域名,那么用户至少知道这两个网站分别对应的是哪家公司,因此域名具有更好的自描述性。 

实际我们可以认为域名和IP地址是等价的,在计算机当中使用的时候既可以使用域名,也可以使用IP地址。但URL呈现出来是可以让用户看到的,因此URL当中是以域名的形式表示服务器地址的。

注:域名最终会被转化为IP地址。

服务器端口号:

80表示的是服务器端口号。HTTP协议和套接字编程一样都是位于应用层的,在进行套接字编程时我们需要给服务器绑定对应的IP和端口,而这里的应用层协议也同样需要有明确的端口号。

常见协议对应的端口号:

协议名称对应端口号
HTTP80
HTTPS443
SSH22

当我们使用某种协议时,该协议实际就是在为我们提供服务,现在这些常用的服务与端口号之间的对应关系都是明确的,所以我们在使用某种协议时实际是不需要指明该协议对应的端口号的,浏览器会自动添加对应的端口号,因此在URL当中,服务器的端口号一般也是被省略的。

注:

1.客户端访问服务器时必须要有域名(IP地址)和端口号,因为网络通信的本质是socket通信,socket通信需要IP地址+端口号。

2.我们前面讲过做测试时,我们不要绑定1024之前的端口号,因为0-1023端口号是给这些标准协议使用的。

带层次的文件路径:
/dir/index.htm表示的是要访问的资源所在的路径。访问服务器的目的是获取服务器上的某种资源,通过前面的域名和端口已经能够找到对应的服务器进程了,此时要做的就是指明该资源所在的路径。

比如我们打开浏览器输入百度的域名后,此时浏览器就帮我们获取到了百度的网页首页,如下图一所示。当我们发起网页请求时,本质是访问服务器的某个.html网页文件,从.html文件中获取了如下图二这样的网页信息(图二展示了网页端和Linux端两种获取百度网页首页文件信息的方法),然后浏览器对这张网页信息进行解释,最后就呈现出了对应的网页,我们可以将这种资源称为网页资源。

此外我们还会向服务器请求视频、音频、网页、图片等资源。HTTP之所以叫做超文本传输协议,而不叫做文本传输协议,就是因为有很多资源实际并不是普通的文本资源。

因此在URL当中就有这样一个字段,用于表示要访问的资源所在的路径。此外我们可以看到,这里的路径分隔符是/,而不是\,这也就证明了实际很多服务都是部署在Linux上的。
 

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

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

相关文章

一个炎爆术分享给大家~

先来强势围观&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r120/…

23种设计模式之外观模式(Facade Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的外观模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬不…

云从科技从容大模型:大模型和AI平台什么关系?为什么造行业大模型?

原创&#xff1a;亲爱的数据 2023年5月18日&#xff0c;坐标广州南沙&#xff0c;来自云从科技的“云从从容大模型”正式亮相。 自此&#xff0c;云从科技从CV四小龙“进阶”成为一家AI大模型公司&#xff0c;同时&#xff0c;别忘记云从还有一个身份常被人提起&#xff1a;首家…

纯虚函数与抽象类

纯虚函数与抽象类 虚析构函数状态转换的引入C中的状态转换C中的状态转换职责链模式 纯虚函数和虚基类使用规则实例接口继承和实现继承 虚析构函数 在上一次博客中写到了这么一段代码&#xff1a; class object { private: int value;public:object(int x 0) : value(x) {}~o…

嵌入式音视频开发过程中如何控制码率?

一、码率控制的意义&#xff1a; 在音视频领域&#xff0c;码率控制模式有着举足轻重的地位。那什么是码率控制&#xff1f;码率控制是指通过调节图像的压缩比例&#xff0c;从而决定输出编码码率的过程。 二、H264有多少种码率控制模式&#xff1a; H264码率控制模式分别有&am…

DailyMart01:一点小想法,一个新的开始!

大家好呀&#xff0c;我是飘渺&#xff01; 截至目前&#xff0c;我已在公众号和知识星球上发布了多个系列文章&#xff0c;涵盖了SpringBoot老鸟系列、SpringCloud微服务系列、运维监控系列、分库分表系列和Kubernetes云原生系列。尽管每个系列的重点各有不同&#xff0c;它们…

【MYSQL】事务的4大属性,对隔离级别的详细讲解

目录 1.原子性和持久性 1.1.手动提交事务 1.2.自动提交事务 1.3.事务的原理&#xff1a; 2.隔离性 1.读未提交&#xff08;Read Uncommitted&#xff09; 2.读提交&#xff08;Read Committed&#xff09; 3.可重复读 4.串行化 3.一致性 4.理解读提交和可重复读的实现…

iptables

目录 iptables概述 netfilter/iptables 关系&#xff1a; 四表五链 四表&#xff1a; 五链&#xff1a; 数据包到达防火墙时&#xff0c;规则表之间的优先顺序&#xff1a; 规则链之间的匹配顺序&#xff1a; 主机型防火墙&#xff1a; 网络型防火墙&#xff1a; ipta…

Uart,RS232,RS485串口通讯协议学习

目录 定义 UART&#xff08;通常被称为串口,简单意味着使用广泛&#xff0c;具有普适性) RS232 RS232电平转换 RS485 -Recommended Standard (再推荐标准) 485和232的对比 RS485组网 总结 定义 串口是我们都很熟悉的&#xff0c;尤其是需要串口调试的时候,打印信息插…

C语言函数大全-- _w 开头的函数(4)

C语言函数大全 本篇介绍C语言函数大全-- _w 开头的函数 1. _wstrtime 1.1 函数说明 函数声明函数功能wchar_t *_wstrtime(wchar_t *buffer);用于获取当前系统时间并返回一个宽字符字符串表示&#xff0c;格式为 "HH:MM:SS"&#xff08;小时:分钟:秒&#xff09; …

2023 Vue开发者的React入门

Vue 和 React 都是流行的 JavaScript 框架&#xff0c;它们在组件化、数据绑定等方面有很多相似之处 本文默认已有现代前端开发(Vue)背景&#xff0c;关于 组件化、前端路由、状态管理 概念不会过多介绍 0基础建议详细阅读 Thinking in React-官方文档 了解 React 的设计哲学 R…

彻底理解粘性定位 - position: sticky(IT枫斗者)

彻底理解粘性定位 - position: sticky 介绍 粘性定位可以被认为是相对定位(position: relative)和固定定位(position: fixed)的混合。元素在跨越特定阈值前为相对定位&#xff0c;之后为固定定位。例如: .sticky-header { position: sticky; top: 10px; }在 视口滚动到元素…

【JavaWeb】--05.Request和Response、JSP、会话技术

文章目录 Request和Response1.概述2.Request对象2.1 Request继承体系2.2Request获取请求数据2.3 IDEA创建Servlet2.4 请求参数中文乱码问题POST请求解决方案GET请求解决方案 2.5 Request请求转发 3.Response对象3.1 Response设置响应数据功能介绍3.2 Response请求重定向3.3 路径…

【全网首测】5G随身Wi-Fi —— 中兴U50 Pro

说到随身Wi-Fi&#xff0c;大家应该都不陌生。 它是一个专门将移动信号转换成Wi-Fi信号的设备&#xff0c;经常被用于旅行和出差场景&#xff0c;也被人们亲切地称为“上网宝”。 现在&#xff0c;我们已经全面进入了5G时代&#xff0c;随身Wi-Fi也升级迭代&#xff0c;出现了支…

人工智能的界面革命,消费者与企业互动的方式即将发生变化。

本文来源于 digitalnative.substack.com/p/ais-interface-revolution 描述了一种社会现象&#xff1a; 随着真实友谊的减少和虚拟友谊的增加&#xff0c;越来越多的人开始将AI聊天机器人视为自己的朋友&#xff0c;甚至建立了深厚的情感纽带。这可能与当前人们越来越孤独的现实…

面向“伙伴+华为”体系,华为产品力的变与不变

在日前举办的“华为中国合作伙伴大会2023”上&#xff0c;华为面向政企市场提出了建设“伙伴华为”体系的发展方向。可想而知&#xff0c;接下来会有更多伙伴加入这一体系&#xff0c;也会有更多客户可以借由这个体系加速完成自身的数字化转型和智能化升级。而产品与技术&#…

luaplus Windows编译(一)

前言 LuaPlus是Lua的C增强&#xff0c;也就是说&#xff0c;LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C进行合作&#xff0c;是比较好的一个选择。 1:准备 luaplus_all 下载地址&#xff1a;https://github.com/jjensen/luaplus51-all jamplus 下载地址 https://gi…

基于神经网络算法的鱼类迁徙轨迹拟合研究

本试验采用HTI Model 291便携型声学标签接收系统,包括的基本部件有:291便携型声学标签接收器1台,590型水听器4根,最新795型声学标签40枚,490-LP 型标签编程器1台,690系列电缆400m,492微型声学标签探测器1台,115VAC型滤波器1台,TagProgrammer 、MarkTags和AcousticTag专…

30个数据科学工作中最常用的 Python 包

Python 可以说是最容易入门的编程语言&#xff0c;在numpy&#xff0c;scipy等基础包的帮助下&#xff0c;对于数据的处理和机器学习来说Python可以说是目前最好的语言。 在各位大佬和热心贡献者的帮助下Python拥有一个庞大的社区支持技术发展&#xff0c;开发两个各种 Python…

Oracle中数据导出成HTML的操作实践

spool是Oracle中将数据到成文件常用的一种工具&#xff0c;但它的强大&#xff0c;不仅仅是数据的导出&#xff0c;在格式和内容上&#xff0c;还可以自定义&#xff0c;甚至生成像AWR一样的统计报告。 参考《SQL*Plus Users Guide and Reference》中第7章"Generating HTM…