• Web基础与HTTP协议


    目录

    一 、域名服务与域名注册

    1、域名概述

    2、域名空间结构

    3、域名注册

    4、DNS解析

    二、网页概述

    1.网页的基本概念

    2.HTML

    三、web概述

    1、什么是web?

    2、Web1.0 和 Web 2.0 的区别

    web1.0

    web2.0

    Web2.0特征

    3、静态页面与动态页面

    静态网页

    动态网页

    四、HTTP协议概述

    1、HTTP协议简介

    2、HTTP1.0 和HTTP 1.1 之间的区别

    3、HTTP 请求格式(GET/POST方式)

    3.1GET方式

    3.2POST方式

    3.3GET与POST区别

    五、HTTP状态码

    六、HTTP协议请求

    1、工作原理

    2.HTTP协议请求流程(访问百度)


    一 、域名服务与域名注册

    1、域名概述

    定义:标识一组主机并提供它们的有关信息的树形结构(主要确定了根在哪,就可以确定每个分支)
    域名服务器(分布式,每台主机维护一个部分)
    ①保持和维护域名空间的程序
    ②响应解析器的请求
    解析端(客户端)
    向DNS服务器发出请求的设备

    2、域名空间结构

    根域:位于域名空间最顶层,一般用一个"."表示
    基础单位,除了根域,其他都只有一个上级域,有0或多个子域,同层域不可重复的子域或域名
    顶级域:一般代表一种类型的组织机构或国家地区(主要有两种类型构成)
    如:net(网络公司)、com(商业)、org(名剑团体组织)、edu(教育)、gov(政府)、mil(军事)、cn(中国)等
    二级域:用来表明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家网络部门统一管理
    如:.cn顶级域名下面设置的二级域名:.com.cn、.net.cn、.edu.cn…
    主机名:主机位于与域名空间最下层,就是一台具体的计算机
    如:www、mail都是具体的计算机名字,可用www.sina.com.cn.、mail.sina.com.cn.来表示,这种表示方式称为FQDN(完全合格域名),也是这台主机在域名中的全名
     

    mark

     举例:

    1. RUL为: http://www.kgc.com/test
    2. 协议://主机名.二级域名.顶级域/虚拟目录

    3、域名注册

    域名注册是Internet中用于解决地址对应问题的一种方法
    遵循先申请先注册原则
    域名注册步骤
    准备申请资料→寻找域名注册网站→查询域名→正式申请→申请成功

    4、DNS解析

    DNS解析方式,一共有三种

    生效顺序:/etc/hosts-------> 网卡配置文件------------>  /etc/resolv.conf文件

    1:/etc/hosts

    linux系统中负责快速解析的文件,包含了ip与主机名的映射关系,在没有DNS的服务器的情况下,使用本地 /etc/hosts文件完成解析/映射,实现快速访问。

    2:/etc/sysconfig/network-scripts/ifcfg-ens33

    在网卡配置文件中定义DNS,也可定义多个,使用DNS1和DNS2进行定义

    3:/etc/resolv.conf

    DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含了主机域名的搜索顺序等等,这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件
     

    二、网页概述

    1.网页的基本概念

    网页:纯文本格式文件,编写语言为HTML,在用户的浏览器中被"翻译"成网页形式显示出来
    网站:由一个一个页面构成的,是多个网页的结合体
    主页:打开网站后出现的第一个网页称为网站主页(或首页)
    域名:浏览网页时输入的网址
    HTTP/HTTPS:用来传输网页的通信协议(是否加密),是一种通讯/交互的标准/规范
    URL:是一种万维网寻址系统
    /var/www/html/index.html
    /var/www/html/install.html
    HTML:用来编写网页的超文本标记语言
    超链接:超链接是将网站中不同网页连接起来的功能
    发布:将制作好的网页上传到服务器供用户访问的过程

    2.HTML

    HTML超文本标记语言
    Hyper Text Markup Language网页的"源码"
    浏览器:"解释和执行"HTML源码的工具
    HTML文档的结构
    HTML网页
    头部部分
    标题部分
    主体部分
    网页内容,包括文本、图像等

    三、web概述

    1、什么是web?

    • Web( World wide web)即全球广域网,也称为万维网
    • 一种分布式图形信息系统
    • 建立在 EInternet上的一种网络服务

    2、Web1.0 和 Web 2.0 的区别

    web1.0

    以编辑为特征,网站提供给用户的内容时编辑处理后的,然后用户阅读网站提供的内容
    这个过程是网站到用户的单向行为

    web2.0

    更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者。
    加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与

    Web2.0特征

    用户分享、以兴趣为聚合点的社群、开放的平台,活跃的用户

    3、静态页面与动态页面

    静态网页

    概述

    静态网页是标准的HTML文件
    扩展是 .htm 、.html
    是网站建设的基础,早期网站一般都是由静态网页制作
    没有后台数据库,不含程序和不可交互的网页
    相对更新起来比较麻烦,适用于一般更新较少的展示型网站


    特点

    每个静态网页都有一个固定的URL,且URL以.htm 、.html 、.shtml 等常见形式为后缀,而不含有 “ ?”(问号表示动态页面)
    网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的
    静态网页的内容相对稳定,容易被搜索引擎检索
    静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时,完全依靠静态网页方式比较困难
    静态网页的交互性较差,在功能方面有较大的限制
    页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态


    动态网页

    概述

    网页IURL不固定,能通过后台与用户交互
    在动态网页网址中有一个标志性的符号----“ ?”
    常用的语言有PHP、JSP、Python、Ruby等


    特点

    ①交互性: 网页会根据用户的要求和选择而改变和响应,将浏览器作为客户端界面,这将是今后Web发展的大势所趋。

    ②自动更新: 无需手动地更新HTML文档,变回自动生成新的页面,可以大大节省工作量。

    ③因时因人而变: 当不同的时间,不同的人访问同一网址时会产生不同的页面

    四、HTTP协议概述

    HTTP协议是互联网上应用最为广泛的一种网络协议,设计者协议的目的是为了发布和接受web服务器上的html页面

    HTTP协议的版本

    HTTP 0.9 (淘汰)
    HTTP 1.0
    HTTP 1.1
    HTTP 2.0(使用不普遍)

    1、HTTP协议简介

    HTTP(超文本传输协议HyperText TransferProtocol)协议 是互联网上应用最为广泛的一种网络协议,它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
    HTTP/HTTPS是应用层上的协议 ,建立在传输层TCP之上,客户端通过与服务端进行TCP连接(三次握手),之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现
    HTTP 是一种无状态 (stateless) 协议 ,HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理(存储,保存)。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务,提高效率。然而,在许多应用场景中,我们需要保持用户登录的状态或记录用户购物车中的商品。由于HTTP是无状态协议,所以必须引入一些技术来记录管理状态,例如Cookie。
    cookie和session都为了实现的是http的短期的持久化 (内存/缓存方式,查询快、效率比较高),cookie是缓存在用户端(client)浏览器中的(默认缓存一天), 当下次客户端通过同一个浏览器访问客户端的时候,会优先读取cookie中的缓存信息 ,向服务端进行请求,同时服务端收到客户端请求的时候,读取到cookie文件,知道客户端之前找的是服务器A处理的任务,为了省事儿,省资源,干脆直接讲请求直接再交给服务器A处理。

    2、HTTP1.0 和HTTP 1.1 之间的区别

    2.1 缓存处理
    在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

    1.1 比1.0 在缓存上增加了很多功能

    2.2 带宽优化及网络连接的使用
    HTTP1.0中,存在一些浪费带宽的现象,例如:客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,

    HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接

    1.0会浪费资源带宽,2.0可以充分利用带宽

    2.3 错误通知的管理
    在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除
    2.4 Host头处理
    在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)
    2.5 长连接
    HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
    1.0只能一次性连接。1.1支持保持活跃状态的连接方式,即长链接

    3、HTTP 请求格式(GET/POST方式)

    HTTP协议有多种获得Web资源的方法

    常用的方法:GEL和post

    http方法描述
    GET请求获取request-URL所标识的资源
    PUT请求服务器存储一个资源,并用Request-URL作为标识
    DELETE请求服务器删除Request-URL所标识的资源
    POST在Request-URL所标识的资源后附加新的数据
    HEAD请求获取由Request-URL所标识的资源的响应消息报头

    3.1GET方式

    请求行

    • 请求的方式
    • 请求的资源路径
    • 请求的版本协议号

    请求头(描述信息/标准化信息)

    Accept:客户端可以接受的数据类型

    Accept-Language:客户端可以接受的语言类型

    User-Agent:浏览器的信息

    Accpect-Encoding:客户端可以接受的编码格式

    Host:表示请求的ip和端口号

    Connection:告诉服务器请求连接如何处理

    Keep-Alive:通知服务器回传数据不要马上关闭,保持一小段的连接

    Closed:马上关闭

    3.2POST方式

    请求行

    • 请求的方式

    • 请求的资源路径

    • 请求的协议的版本号

    请求头

    Accept:客户端可以接受的数据类型

    Accept-Language:客户端可以接受的语言类型

    Referer:表示请求发起时,浏览器地址栏中的地址

    User-Agent:浏览器的信息

    Content-Type:发送的数据类型

    Content-Length:发送的数据长度

    请求体

    就是发送给服务器的数据

    3.3GET与POST区别

    区别一:语义上的区别
    GET向服务器请求数据,依照HTTP协议,GET是用来请求数据
    POST向服务器发数据,依照HTTP协议,POST的语义是向服务器添加数据,也就是说按照POST的语义,该操作是会修改服务器上的数据
    区别二:服务器请求的区别
    GET请求是可以被缓存,例如:访问百度,访问的方式就是GET,此时访问后的内容会被缓存在浏览器中,短时间再次访问,其实是拿到的浏览器中的缓存内容,另外GET请求只能接收ASCII码的恢复
    POST请求不可以被缓存。对于POST方式提交表单,刷新页面浏览器会弹出提示框"是否重新提交表单",POST可以接收二进制等各种数据形式,所以如果要上传文件一般用POST请求
    区别三:参数放请求头和请求体的差别
    GET请求通常没有请求体,在TCP传输中只需传输一次(而不是一个包),所以GET请求效率相对高
    POST请求将数据放在请求体中,而实际传输中,会先传输完请求头,再传输请求体,是分为两次传输的(而不是两个包)。POST请求头会比GET更小(一般不带参数),请求头更容易在一个TCP包中完成传输,更何况请求头中有Content-Length的标识,可以更好的保证HTTP包的完整性。

    五、HTTP状态码

    当使用浏览器访问某一个URL,会根据处理情况返回响应的处理状态

    状态码首位已定义范围分类
    1xx100-101信息提示
    2xx200-206成功
    3xx300-305重定向
    4xx400-415客户端错误
    5xx500-505服务器错误

     生产环境中常见的HTTP状态码

    消息描述
    200  OK请求成功(其后是对GET和POST请求的应答文档)
    301 Moved Permanently请求的永久页面跳转
    403 Forbidden禁止访问该页面
    404  Not Found服务器无法找到被请求的页面
    500 Internal Server Error内部服务器错误
    503 Bad Gateway无效网关
    503 Service Unabailable当前服务不可用
    504 Gateway Timeout网管请求超时

    六、HTTP协议请求

    1、工作原理

    1.由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。 连接
    2.HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求, 请求
    3.服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。 响应
    4.客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客 http工作流程图 http工作流程图 户机与服务器断开连接。

    2.HTTP协议请求流程(访问百度)

    1.在浏览器中输入www.baidu.com来访问
    2.访问时,需要通过域名解析来获取百度的IP,此时会使用到DNS的迭代、递归的解析方式
    递归
    ①先查看缓存
    ②/etc/hosts(网卡配置)
    ③/etc/resolv.conf(DNS客户端配置-指向本地DNS)
    ④网卡的DNS(network配置文件)
    迭代
    请求DNS域名解析系统来帮助解析
    此时会从根域、根域服务器开始依次解析(顶级、一级、子域、主机名)
    解析成功后返回给客户端,得到IP

    3.建立Socket的TCP三次握手
    1、第一次握手:客户端向服务器端发送建立SYN报文(seq=x,SYN=1),请求与服务器端建立连接,此时客户端处于同步已发送状态(SYN-SENT)。
    2、第二次握手:服务器端收到数据包后由标志位SYN报文后知道客户端请求建立连接,服务器端同意建立连接,并将同意连接的SYN和ACK(SYN=1,ACK=1,seq=y,ack=x+1)发送给客户端以确认连接请求,服务器端进入同步收到状态(SYN_RCVD)。
    3、第三次握手:客户端收到服务器端发来的确认,并向服务器端发送ACK报文(seq=x+1,Ack=y+1,ACK=1),此时客户端进入到已建立连接状态(ESTABLISHED)。完成三次握手,客户端就可以向服务器端传输数据了。

    4.基于HTTP/HTTPS协议进行数据传输(读取Cookie)
    5.四次挥手断开连接
    1、第一次挥手:客户端向服务器端发送一个FIN(FIN=M)断开请求,表示自己要断开连接,我没有数据要发送了,此时客户端进入到终止等待-1状态(FIN-WAIT-1)
    2、第二次挥手:服务器端收到FIN后,先发送ack=M+1),告诉客户端,你的请求我收到了。这个时候客户端就进入终止等待状态(FIN_WAIT_2 ),服务器端进入到关闭等待状态(CLOSE-WAIT)
    3、第三次挥手:服务器端也需要向客户端发送一个FIN断开请求,告诉客户端我准备好和你断开连接了。此时服务器端进入到LAST_ACK状态。)
    4、第四次挥手:客户端收到服务器端发来的FIN后,进入到时间等待状态(TIME-WAIT),并且客户端要向服务器端发送ACK报文,表示客户端确认断开连接的请求,服务器收到ACK之后就知道可以断开连接了,此时服务器端进入CLOSED状态,完成四次挥手。
     

  • 相关阅读:
    亚运之后,AI如何实现保障普通人的运动安全?
    Spring
    S5PV210裸机(七):Nand和iNand
    [linux] depmod和 modprobe
    python学习--函数
    Linux常用命令
    窗口函数OVER(PARTITION BY)详细用法——语法+函数+开窗范围ROWS和RANGE
    【剑指 Offer II 003】前 n 个数字二进制中 1 的个数 c++
    python 异常机制
    python:bisect查找和排序
  • 原文地址:https://blog.csdn.net/weixin_71429844/article/details/126467720