linux高级编程(网络)(www,http,URL)

news2024/9/17 7:46:15

数据的封包和拆包

封包:

  1. 应用层数据(例如HTTP请求)被传递给传输层。
  2. 传输层(TCP)在数据前添加TCP头部(包含端口号、序列号等)。
  3. 网络层(IP)在TCP段前添加IP头部(包含源IP地址、目的IP地址等)。
  4. 链路层在IP包前添加链路层头部和尾部(例如以太网帧头)。

拆包:

  1. 链路层从以太网帧中提取IP包。
  2. 网络层从IP包中提取TCP段。
  3. 传输层从TCP段中提取数据,
  4. 应用层使用数据。

--> 帧:

位于链路层(OSI七层模型),是链路层传递的基本单元(不一定最小)

其中包含:帧的长度,源MAC地址,目的MAC地址(MAC地址也称物理地址,硬件地址,全球唯一)其装的数据,以及各种校验位

其数据段最多能存放1500字节,最少要保证其一帧有64字节数据(也就是说数据段+其他段不够64字节时,会添加填充字节来时该帧大小达到64字节,填充字节不包含有效信息)

-->管道

用于IPC(进程间通信),最大大小可自定义,其最小大小为4k(称为1页,不管设置多小,系统会补全到至少1页,且大于1页时,会设置为1页的整数倍(n*4k))

-->套接字缓冲区

一般为4kb,与ubuntu中文件缓冲区一致,输入缓冲区为1kb

www(万维网)

    一个大型的,交互式的信息储藏空间,万维网利用网页之间的链接将不同网站的网页链接成一张逻辑上的信息网,从而用户可以方便的从internet上的一个站点去访问另一个站点 。其中站点由一个或多个处于不同地理位置的源服务器(数据的来源)托管。

URL:标识万维网文档

HTTP:应用层协议,用于实现链接

HTML:使用超链接,将标签与资源链接起来,显示给用户

统一资源定位器URL(uniform resource locator )

      统一资源定位符 URL 是用来表示从互联网上得到的资源位置和访问这些资源的方法,其实际上是资源的地址(“资源” 是指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图形、声音等,以及与互联网相连的任何形式的数据。)

URL的一般形式一般由以下四个部分组成:

<协议>://<主机>:<端口号>/<路径>

主机指的的是主机在因特网上的域名,端口号和路径可省略

使用http的URL:

     一般形式:http://<主机>:<端口号>/<路径>

     http的默认端口号为80,通常可省略(https:http的加密版本,默认端口号为443),如果省略其路径项,URL就指到了某个主页:

1.一个www服务器最高级别的页面

2.可以连接到与本组织相关的其他站点

清华大学主页:

http://www.tsinghua.edu.cn

路径指向的从属界面:

http://www.tsinghua.edu.cn/chn/yxsz/index.htm

超文本传输协议http

操作过程:

        HTTP是Web通信的基础,它定义了客户端和服务器之间如何请求和响应资源。

         HTTP 规定在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个 ASCII 码串构成的请求和一个类似的通用互联网扩充,即 “类 MIME(MIME-like)” 的响应组成。(如Content-Type: text/html; charset=UTF-8,这告诉浏览器响应的内容类型是HTML,并且应该使用UTF-8字符集,类型+填充值)HTTP 报文通常都使用 TCP 连接传送。(包含三次握手,4次挥手)

http访问目标过程:

(1)浏览器分析链接指向页面的URL。
(2)浏览器向DNS请求解析www.tsinghua.edu.cn 的IP地址。
(3)域名系统DNS解析出清华大学服务器的IP地址为166.111.4.100。
(4)浏览器与服务器建立TCP连接(在服务器端IP地址是166.111.4.100,端口是80)
(5)浏览器发出取文件命令:GET /chn/yxsz/index.htm。
(6)服务器www.tsinghua.edu.cn 给出响应,把文件index.htm 发送给浏览器。
(7)释放TCP连接。
(8)浏览器显示“清华大学院系设置”文件index.htm中的所有文本。

分析URL->尝试连接->取文件->释放连接->显示

HTTP本身是无连接的(不需要建立http的连接,实际上用的是tcp的连接)

HTTP协议是无状态的(服务器不会记录用户数据,每次访问的数据都与第一次相同)

http1.0

      首先,建立一个http链接需要2倍RTT(往返时间),也就是3次握手(最后一次握手发送http请求报文),加一次服务器返回数据,在http1.0中每请求一次文档,就要产生一次TCP连接,这样会大大增加服务器的负担

http1.1

     使用了持续连接来改善这个问题,所谓持续连接就是与服务器取得连接后的一段时间仍然在该线路上发送请求报文与数据。

-->流水线方式与非流水线方式

流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接要用去两倍 RTT 的开销,节省了建立 TCP 连接所需的一个 RTT 时间。但是,在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源

流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。减少了TCP连接中的空闲时间,提高了效率

http报文结构

cea38ac7dab5472586256b6c00931cec.png

其中,请求报文的开始行应该以get开始,以版本号结束,如:HTTP/1.1

c8d9293ab57646c682a4281754b4d366.png请求报文示例:

bdea634174c64610ac859fdb87407f78.png3种常见的错误:

fdd7630b19534fee83d4bc460594db26.png

 

 

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

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

相关文章

【从0到1进阶Redis】主从复制 — 主从机宕机测试

上一篇&#xff1a;【从0到1进阶Redis】主从复制 测试&#xff1a;主机断开连接&#xff0c;从机依旧连接到主机的&#xff0c;但是没有写操作&#xff0c;这个时候&#xff0c;主机如果回来了&#xff0c;从机依旧可以直接获取到主机写的信息。 如果是使用命令行&#xff0c;来…

底软驱动 | 大厂面试爱考的C++内存相关

文章目录 C内存相关C内存分区C对象的成员函数存放在内存哪里 堆和栈的区别堆和栈的访问效率“野指针”有了malloc/free为什么还要new/deletealloca内存崩溃C内存泄漏的几种情况内存对齐柔性数组参考推荐阅读 C内存相关 本篇介绍了 C 内存相关的知识。 C内存分区 在C中&#…

【python学习】numpy第三方库的定义、功能、使用场景和使用以及遇到的一些问题

引言 python学习学习到第三方库知识&#xff0c;首先学习的就是机器学习以及对应的numpy第三方库 文章目录 引言一、numpy第三方库的定义二、numpy第三方库的功能2.1数组操作2.2 线性代数计算2.3 随机数生成2.4 文件读写 三、numpy第三方库的使用场景3.1需要进行数值计算3.2 需…

PyCharm软件初始化配置

安装完pycharm后&#xff0c;需要对其进行个性化设置&#xff0c;分别设置方法如下 目录 一、修改主题二、修改默认字体和大小三、设置拖动滚轮改变字体大小四、常见快捷键 一、修改主题 1、界面右上角点击红框的内容 2、选择Theme选项 3、选择对应的主题 第一二个是白色主题…

通俗易懂多图透彻讲解二叉树的遍历--前序, 中序和后序

二叉树的遍历是一个数据结构中经常会遇到的知识点, 具体又分为前序, 中序和后序三种. 什么是树? 先来理解一下什么是树, 从一个我们相对熟悉的家谱树(Family Tree)说起吧. 家族的根是爷爷, 然后生了两个娃, 大伯和你爸爸. 继续往下, 有堂哥堂姐, 还有你以及你妹, 等等. 一个…

工业智能网关的边缘计算能力赋能工业4.0

边缘计算是将数据处理和分析能力推向网络边缘的技术&#xff0c;使得终端设备能够实时、快速地响应环境变化&#xff0c;并做出相应决策。在智能制造中&#xff0c;通过5G工业网关的边缘计算能力&#xff0c;企业可以实现对生产线上大量传感器数据的实时采集、处理和分析&#…

Linux0715

一切皆文件&#xff0c;文件IO已经学习完毕&#xff0c;这两天完成一个minishell的小项目 文件操作 1. 标准IO 具有缓冲区 是对普通文件的读写 1. fopen ----------------------------->文件流指针 FILE * …

联发科又放大招,天玑9400支持10.7Gbps LPDDR5X内存性能拉满!

三星官方消息称&#xff0c;联发科天玑9400将支持全球最快的手机内存10.7Gbps LPDDR5X&#xff01;而且数码达人科技九州君也在微博上透露&#xff0c;天玑9400将首发支持全球最快的移动DRAM。顶级的内存加上天玑9400采用的黑鹰架构和配置的大CPU缓存&#xff0c;性能直接拉满了…

基于springboot和mybatis的RealWorld后端项目实战三之添加swagger

pom.xml添加依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><arti…

基于python的层次聚类

目录 一、层次聚类概述 二、凝聚法&#xff08;Agglomerative Clustering&#xff09; 1. 初始化 2. 计算距离 3. 合并簇 4. 重复迭代 三、分裂法&#xff08;Divisive Clustering&#xff09; 1. 初始化 2. 分裂簇 3. 分配样本点 4. 重复迭代 四、其他考虑因素 五、总结 …

51、数据库的概念及sql语句

1、数据库 1.1、数据库管理&#xff1a; sql语句 数据库用来增删改查的语句。重要* 备份 数据库的数据进行备份。 主从复制&#xff0c;读写分离 高可用。重要*&#xff0c;原理–面试。 数据库的概念、语法和规范 1.2、数据库的定义 数据库&#xff1a;组织&#xff0c…

ACL实验

目录 一、实验拓扑​编辑 二. 实验要求&#xff08;在图中&#xff09; 三、实验思路 配IP 全网可达 创建模拟机pc1 创建telent r1 r2 由题目可得 截图 pcr1​编辑 pcr2​编辑 四、实验总结&#xff08;写实验完成后的总结心得&#xff09; 一、实验拓扑 二. 实验…

硅纪元AI应用推荐 | 精准识别用户意图,夸克真AI搜索引擎

“硅纪元AI应用推荐”栏目&#xff0c;为您精选最新、最实用的人工智能应用&#xff0c;无论您是AI发烧友还是新手&#xff0c;都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能&#xff0c;开启智慧新时代&#xff01; 在数字化时代&#xff0c;搜索引擎成为我…

本地多模态看图说话-llava

其中图片为bast64转码&#xff0c;方便json序列化。 其中模型llava为本地ollama运行的模型&#xff0c;如&#xff1a;ollama run llava 还有其它的模型如&#xff1a;llava-phi3&#xff0c;通过phi3微调过的版本。 实际测试下来&#xff0c;发现本地多模型的性能不佳&…

EasyPoi一对多excel表格导出

效果如下图&#xff1a; 1、引入pom文件 <!--easypoi 一对多导入导出 --> <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.2.0</version> </dependency> <dependenc…

AIGC降痕实战:论文降AI率的深度解析与应用

随着AI技术的飞速发展&#xff0c;AI论文工具正逐渐成为学术界的新宠。它们以高效、便捷的优势&#xff0c;吸引了众多学者的目光。然而&#xff0c;随之而来的学术诚信与原创性问题&#xff0c;也成为人们关注的焦点。 如何在享受AI带来的便利的同时&#xff0c;确保论文的原…

pear-admin-fast项目修改为集成PostgreSQL启动

全局搜索代码中的sysdate()&#xff0c;修改为now() 【前者是mysql特有的&#xff0c;后者是postgre特有的】修改application-dev.yml中的数据库url使用DBeaver把mysql中的数据库表导出csv&#xff0c;再从postgre中导入csv脚本转换后出现了bpchar(xx)类型&#xff0c;那么一定…

《数字通信世界》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《数字通信世界》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第二批认定学术期刊。 问&#xff1a;《数字通信世界》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;工业和信息化部 主办单位&#x…

ubuntu22.04安装SecureCRT8.7.3,完成顺利使用

材料准备 scrt-sfx安装包 &#xff0c; securecrt_linux_crack.pl 补丁脚本&#xff0c;和两个依赖库 其中securecrt_linux_crack.pl是找的专门适合 8.7.3版本的&#xff0c;网上很多版本的crack.pl只能打补丁以前的老版本。 而更老版本的SecureCRT对ubuntu22支持更不好&#…

DBeaver导入脚本和导出数据

DBeaver导入脚本和导出数据 前言&#xff1a; 通常产品会要求&#xff0c;把xx表导出Excel&#xff0c;navicat一般公司不让用。讲解使用DBeaver 导入脚本 我们将sql脚本导入DBeaver 1&#xff0c;选择数据库&#xff0c;找到执行脚本 2&#xff0c;选用sql脚本&#xff0…