当前位置: 首页 > 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

 

 

http://www.lryc.cn/news/400489.html

相关文章:

  • Perl 语言开发(十三):网络编程
  • Leetcode算法题(移除链表中的元素)
  • 浅谈网络安全防守:从被动应对到主动管理的转变
  • CentOS7仅安装部署MySQL80客户端
  • 力扣经典题目之->移除值为val元素的讲解,的实现与讲解
  • pico+unity3d项目配置
  • python条件
  • 华为USG6000V防火墙v1
  • Apache访问机制配置
  • 在word中删除endnote参考文献之间的空行
  • 【详解】Spring Cloud概述
  • 板级调试小助手(3)基于PYNQ的OLED视频显示
  • git批量删除本地包含某字符串的特定分支
  • Android中RecyclerView使用详解(一)
  • 坑3.上传图片(阿里云空间,oss验证)(未验证)
  • 注册登录后上传文件到本地数据库项目
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十三)-更换无人机控制器
  • react 组件通信 —— 父子传值 【 函数式/类式 】
  • 【SpringBoot】95、SpringBoot中使用MyBatis-Plus实现自动加密存储和查询自动解密
  • [数仓]十二、离线数仓(Atlas元数据管理)
  • 机器学习——决策树(笔记)
  • 翁恺-C语言程序设计-08-1. 求一批整数中出现最多的个位数字
  • ROM修改进阶教程------深度解析小米设备锁机型不解锁bl 刷写特殊类固件的步骤
  • 论文翻译 | LEAST-TO-MOST: 从最少到最多的提示使大型语言模型中的复杂推理成为可能
  • 【区块链 + 智慧政务】都江堰区块链公共服务应用平台 | FISCO BCOS应用案例
  • Python从0到100(三十九):数据提取之正则(文末免费送书)
  • redis redisson(仅供自己参考)
  • 【C语言初阶】探索编程基础:深入理解分支与循环语句的奥秘
  • ERP基础知识
  • C++是否可以使用.获取union、struct中的成员变量的地址