当前位置: 首页 > news >正文

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

数据的封包和拆包

封包:

  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

 

 

相关文章:

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

数据的封包和拆包 封包&#xff1a; 应用层数据&#xff08;例如HTTP请求&#xff09;被传递给传输层。传输层&#xff08;TCP&#xff09;在数据前添加TCP头部&#xff08;包含端口号、序列号等&#xff09;。网络层&#xff08;IP&#xff09;在TCP段前添加IP头部&#xff…...

Perl 语言开发(十三):网络编程

目录 1. 概述 2. 网络编程基础 2.1 网络协议概述 2.2 Perl 网络编程基础模块 3. TCP 网络编程 3.1 创建 TCP 服务器 3.2 创建 TCP 客户端 4. UDP 网络编程 4.1 创建 UDP 服务器 4.2 创建 UDP 客户端 5. 高级网络编程 5.1 非阻塞 I/O 5.2 多线程网络编程 6. 简单的…...

Leetcode算法题(移除链表中的元素)

题目如下&#xff1a; 思路1&#xff1a;创建一个新的带头链表 &#xff08;newhead&#xff09;&#xff0c;遍历头结点对应的值分别于x进行比较&#xff0c;将不等于x的节点尾插到新的带头链表中&#xff0c;返回新的带头链表的下一个节点。 代码如下&#xff1a; typedef …...

浅谈网络安全防守:从被动应对到主动管理的转变

浅谈网络安全防守&#xff1a;从被动应对到主动管理的转变 背景&#xff1a; 在当今的数字时代&#xff0c;网络安全已成为企业生存和发展的重要基石。然而&#xff0c;当企业的网络安全体系面临着诸如资产不清、互联网应用管理混乱、边界防火墙策略失效、长期未修复的漏洞、…...

CentOS7仅安装部署MySQL80客户端

文章目录 CentOS7仅安装部署MySQL80客户端一、前言1.场景2.环境 二、正文1.安装MySQL客户端2. 数据库备份脚本 CentOS7仅安装部署MySQL80客户端 一、前言 1.场景 仅安装部署MySQL80客户端&#xff0c;用于备份数据库时使用 mysqldump 工具 2.环境 Linux 发行版&#xff1a…...

力扣经典题目之->移除值为val元素的讲解,的实现与讲解

一&#xff1a;题目 博主本文将用指向来形象的表示下标位的移动。 二&#xff1a;思路 1&#xff1a;两个整形&#xff0c;一个start&#xff0c;一个end&#xff0c;在一开始都 0&#xff0c;即这里都指向第一个元素。 2&#xff1a;在查到val之前&#xff0c;查一个&…...

pico+unity3d项目配置

重点&#xff1a;unity编辑器版本要和pico的sdk要求一致、比如&#xff1a; 对于 Unity 2022.1.14 及以上版本&#xff0c;若同时在项目中使用 URP、Linear 色彩空间、四倍抗锯齿和OpenGL&#xff0c;会出现崩溃。该问题待 Unity 引擎解决。对于 Unity 2022&#xff0c;若同时…...

python条件

条件语句 if语句 if...else语句 if...elif...else语句 嵌套 is is 是一个身份运算符&#xff0c;用于比较两个对象的身份&#xff0c;即它们在内存中的地址是否相同。这与比较两个对象是否相等的 运算符不同。 运算符比较的是两个对象的值是否相等。 比较对象 比较基本数据…...

华为USG6000V防火墙v1

目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1&#x1f923;防火墙FW1web服务配置 2.网络配置 要求1&#xff1a;DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问 要求2&#xff1a;生产区不…...

Apache访问机制配置

Apache访问机制配置 Apache HTTP Server&#xff08;简称Apache&#xff09;是世界上使用最广泛的Web服务器之一。它的配置文件通常位于/etc/httpd/conf/httpd.conf或/etc/apache2/apache2.conf&#xff0c;根据操作系统的不同而有所不同。以下是配置Apache访问机制的详细说明…...

在word中删除endnote参考文献之间的空行

如图&#xff0c;在References中&#xff0c;每个文献之间都有空行。不建议手动删除。打开Endnote。 打开style manager 删除layout中的换行符。保存&#xff0c;在word中更新参考文献即可。...

【详解】Spring Cloud概述

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Spring学习之路&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 1. 认识微服务 1.1 单体架构 1.2 集群和分布式架构 1.3 集群和分布式…...

板级调试小助手(3)基于PYNQ的OLED视频显示

一、前言 在之前的文章中介绍了《板级调试小助手》的系统结构和DDS自定义外设的搭建。这篇文章主要介绍一下如何在PYNQ中驱动平时长剑的OLED12864显示屏&#xff0c;并显示BadApple&#xff08;毕竟有屏幕的地方就要有BadApple&#xff09;。效果如下&#xff1a; BadApple 本项…...

git批量删除本地包含某字符串的特定分支

git批量删除本地包含某字符串的特定分支 git branch -a | grep 分支中包含的字符串 | xargs git branch -D git删除本地分支_git查看删除本地分支-CSDN博客文章浏览阅读989次。git branch -d <分支名>可以通过: git branch 查看所有本地分支及其名字&#xff0c;然后删…...

Android中RecyclerView使用详解(一)

目录 概述优点列表布局RecyclerView一、创建RecyclerView并且在布局中绑定二、实现RecyclerView单个item的布局三、给RecyclerView写一个对应的适配器Adapter1.创建自定义的ViewHolder2.继承Adapter&#xff0c;泛型使用我们自定义的ViewHolder3.重写Adapter的三个方法onCreate…...

坑3.上传图片(阿里云空间,oss验证)(未验证)

笔记 20240710 未验证&#xff0c;现在还没有阿里云空间&#xff0c;等买个sit环境就可以验证一下。 前端 页面 <!--页面--> <el-form-item label"优惠券图片" prop"couponImg"><single-upload v-model"dataForm.couponImg"&g…...

注册登录后上传文件到本地数据库项目

在上一篇的基础上我有添加了登录注册功能文件上传 更新一下代码添加登录注册功能 app.js // app.js const express require(express); const bodyParser require(body-parser); const cors require(cors); const db require(./models/db); const User require(./models…...

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十三)-更换无人机控制器

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…...

react 组件通信 —— 父子传值 【 函数式/类式 】

1、函数式组件通信 父子间通信 —— 父传子 父组件 export default function father() {return (<div style{{width:400px,height:200px,background:pink,marginLeft:500px}}>我是父组件<hr /><Son name{"韩小刀"}/></div>) } 子组件 ex…...

【SpringBoot】95、SpringBoot中使用MyBatis-Plus实现自动加密存储和查询自动解密

有的业务需要将敏感数据加密存储到 DB,如果我们每个都手动去加密,再设值,再保存 DB,不仅麻烦,还对开发者不友好,在 MyBatis-Plus 中我们可以使用 BaseTypeHandler 来解决这个问题 1、新增 TypeHandler import com.baomidou.mybatisplus.core.toolkit.AES; import com.b…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...