# web基础

网上冲浪 surfing the Internet

weibo.com 域名,主机名,微博服务器的地址名

当用户在地址栏输入一个URL(uniform resource,locator统一资源定位符)

```
常见的URL,网站域名
luffcity.com
baidu.com
weibo.com
taobo.com
```

浏览器向这个域名的服务器发送了请求,我要看你的网站内容

浏览器就会根据用户输入的域名,进行域名解析(baidu.com解析成服务器的IP地址)向该服务器运行的一个(web server web服务器程序)这个web服务器软件能够在机器上寻找用户想要的资料,最终返回用户浏览器进行渲染。

HTTP请求流程

web服务器使用的就是如上的一种为HTTP(HyperText transfer protocol,超文本传输协议)

完成客户端到服务端的一系列请求过程

TCP/IP协议

protocol协议

协议存在各种各样的形式,常见的协议如下

  • icmp, Internet control message protocol

  • dns协议,建立在UDP和TCP协议之上,默认使用服务器的53端口进行通信,进行域名解析

  • FTP协议 ,file transfer protocol,文件传输协议,主要是两部分,client,server

  • nfs协议,rpc协议+nfs协议,运行处网络共享文件系统

  • snmp协议,应用层协议,预先告警发现网络设备的问题

  • HTTP协议,简单的请求-响应,运行在TCP,IP协议之上,指定了客户端能够给服务器发送什么形式的请求

TCP/IP协议分为了四层

  • 应用层

  • 传输层

  • 网络层

  • 数据链路层

  • 应用层,决定了向用户提供应用服务器时的活动,例如FTP,DNS,HTTP

  • 传输层,用于在网络中两台计算机之间的数据传输,TCP(Transmission Control Protocol, 传输控制协议)和 UDP(User Data Protocol,用户数据报协议)。

  • 网络层,处理网络上传输数据包,规定了数据传输的路线,目的地

  • 数据链路层,处于网络连接的硬件层,如操作系统,网卡等硬件设备驱动

TCP传输原理

HTTP协议传输时,通过分层的顺序与目标机器通信。发送端从应用层向下走,接收方目的地是应用层。

  1. 客户端发起一个HTTP请求(访问一个页面)

  2. TCP/IP协议为了传输方便,在TCP传输层,将请求报文分割,且在每个报文上打上标记,转发给网络层

  3. 网络层增加一个标记,目标机器的Mac地址发给链路层,这时候,网卡就知道数据发给谁了

  4. 接受者在链路层接收到数据,向上走,最终到应用层(web nginx)

数据包封装

数据包在每一层传输的时候,都会加上一层对银应层所属的首部信息,反之接收方在数据传输的时候,每一层都会进行相应的解包,这种称之为数据包的封装。

IP协议

Internet protocol

ip协议的作用是,把数据包,发送到指定的目的地,这里最重要的就是IP地址和MAC地址

IP地址,是指定了服务器在网络中的一个地址信息

MAC地址,是指服务器网卡硬件设备的设备号 (机器在出厂的时候,就设置好的,全球唯一的MAC号)

IP和ARP的关系

ARP协议就是把IP地址和MAC地址进行解析的一个协议

网络数据包的传输的过程,好比是快递中转站的过程

三次握手

Sync 表示建立连接的信号

ack 确认消息

第一次握手,客户端发送了SYS=1 seq=x 这个x是一个随机数,服务端接收到了客户端发来的数据包,知道自己要和客户端建立连接了

第二次握手:服务器给客户端发送一个SYS=1 seq=y随机数,ACK=x+1 服务端发送前两个数据都是为了证明自己的消息的能力,服务端在客户端发出的seq随机数上+1 是表示明确客户端身份,他俩是同一个连接

第三次握手:客户端再次向服务器发送一个ACK=y+1 明确告诉服务器,可以和客户端进行通信了

HTTP请求与响应

1.客户端和服务器建立连接,客户端发出请求,服务器进行三次握手身份确认

2.服务器收到请求,linux内核根据(客户端的请求)socket进程通信管道把发给HTTP应用程序去解析(Apache NGINX)

3.HTTP服务器开始处理请求,对用户的请求报文进行解析,明确客户端想要的资源和请求方式等等 4.HTTP在存储系统上,请求资源,内核去本地文件系统读取数据

5.HTTP服务构造响应体,应用程序创建响应报文

6.linux内核发出HTTP服务器构造的响应报文,发送客户端

7.HTTP服务器会进行事务记录,记录这个流程的日志

事务

在计算机领域中

事务是指程序中一系列严密的逻辑性操作,并且必须保证素有的操作能够成功的完成,如果出错,那么得保证每个操作中的更改操作,都会被撤销。

简单理解:

多件事情当做一件事情来处理,好比大家在同一条船,要么一起前进,存活,要么一个嗝屁

比如转账的事务:

A用户从自己的账号中,转出了1000元给B账户那么当这个A用户从转账开始,到B用户收款成功后,这一些列的过程,称之为是一个事务。
A 3000-1000=2000
B 2000+1000=3000
转账,要么一起成功,(A用户扣钱,B用户加钱,过程正确了)要么事务一起失败(A用户钱没有转出去,回归原本的状态,B用户也没有增加金额,还是原本状态),原子性操作

事务的一些特性:

  • 原子性: 执行命令,要么全部成功,要么全部失败,只要有一个环节出错,那么其他指令都要进行数据回滚,回滚到执行命令之前的操作。

  • 一致性: 事务的执行使得数据一个状态,进入另一个状态,但是对于的数据完整性,还是保持稳定

  • 隔离性,指的是,比如当多个用户并发访问数据库的时候,共同操作一张数据表,数据库他会为每一个用户开启事务,不能被其他的事务所干扰,多个并发的事务操作,要进行隔离。

  • 持久性,当事务正确完成后,对数据的修改是永久性的。

HTTP事务流程

在浏览器中输入网站直到最终看到页面的整个过程

1.dns解析

1.book.luffycity.com浏览器会解析域名对应的IP地址
2.浏览器去客户端本地机器寻找DNS缓存,是否存在即系记录
3.浏览器继续读取客户端的hosts文件是否写死了,该域名对应的ip地址
4,浏览器会再向本地配置DNS服务器地址,进行解析请求发送,公网的DNS服务器对该域名解析,解析到IP地址之后,浏览器访问该IP地址

客户端此时和服务器建立TCP/IP三次握手

1.客户端解析到服务器的ip之后,客户端的user-agent是正常的浏览器,谷歌浏览器,等等浏览器,浏览器会以(1024端口<端口<65535)向服务器的80端口进行请求发送,进行三次握手
2.该客户端请求,经过成TCP/IP的四层封包周,请求组中进入到服务器的应用程序,完成解包的过程,最终和客户端建立TCP连接
3.此时TCP连接上了之后,开始三次握手
第一次握手:客户端发送syn包(syn=x)发送給服务器,客户端进入syn_send状态等待服务器响应
第二次握手:服务器收到客户端的syn包并且要确认客户端的SYN(ack=x+1)同时服务器再发出一个SYS包(syn=k),服务器一共发送的是syn+ack数据包,服务器进入syn_recv状态
第三次握手:客户端收到服务器发来的syn+ack包,客户端再向服务器发送ACK(k+1)此时服务端和客户端已经正确建立了连接,完成三次握手

客户端和服务器的断开,也需要进行一个四次挥手的过程,也就是服务器再次和客户端进行信号数据包发送,确认对方都要进行TCP断开

三次握手

Sync 表示建立连接的信号

ack 确认消息

第一次握手,客户端发送了SYS=1 seq=x 这个x是一个随机数,服务端接收到了客户端发来的数据包,知道自己要和客户端建立连接了

第二次握手:服务器给客户端发送一个SYS=1 seq=y随机数,ACK=x+1 服务端发送前两个数据都是为了证明自己的消息的能力,服务端在客户端发出的seq随机数上+1 是表示明确客户端身份,他俩是同一个连接

第三次握手:客户端再次向服务器发送一个ACK=y+1 明确告诉服务器,可以和客户端进行通信了

HTTP请求与响应

1.客户端和服务器建立连接,客户端发出请求,服务器进行三次握手身份确认

2.服务器收到请求,linux内核根据(客户端的请求)socket进程通信管道把发给HTTP应用程序去解析(Apache NGINX)

3.HTTP服务器开始处理请求,对用户的请求报文进行解析,明确客户端想要的资源和请求方式等等 4.HTTP在存储系统上,请求资源,内核去本地文件系统读取数据

5.HTTP服务构造响应体,应用程序创建响应报文

6.linux内核发出HTTP服务器构造的响应报文,发送客户端

7.HTTP服务器会进行事务记录,记录这个流程的日志

事务

在计算机领域中

事务是指程序中一系列严密的逻辑性操作,并且必须保证素有的操作能够成功的完成,如果出错,那么得保证每个操作中的更改操作,都会被撤销。

简单理解:

多件事情当做一件事情来处理,好比大家在同一条船,要么一起前进,存活,要么一个嗝屁

比如转账的事务:

A用户从自己的账号中,转出了1000元给B账户那么当这个A用户从转账开始,到B用户收款成功后,这一些列的过程,称之为是一个事务。
A 3000-1000=2000
B 2000+1000=3000
转账,要么一起成功,(A用户扣钱,B用户加钱,过程正确了)要么事务一起失败(A用户钱没有转出去,回归原本的状态,B用户也没有增加金额,还是原本状态),原子性操作

事务的一些特性:

  • 原子性: 执行命令,要么全部成功,要么全部失败,只要有一个环节出错,那么其他指令都要进行数据回滚,回滚到执行命令之前的操作。

  • 一致性: 事务的执行使得数据一个状态,进入另一个状态,但是对于的数据完整性,还是保持稳定

  • 隔离性,指的是,比如当多个用户并发访问数据库的时候,共同操作一张数据表,数据库他会为每一个用户开启事务,不能被其他的事务所干扰,多个并发的事务操作,要进行隔离。

  • 持久性,当事务正确完成后,对数据的修改是永久性的。

见的HTTP请求方法

get 向服务器获取数据,资源
post 向放服务器提交,数据比如登录,注册
head获取URL的响应头信息,不要响应体信息(只要脑袋,不要身体数据)
put 将请求主体发送给服务器
delete 删除服务器指定的一些资源
trace 追求请求到达服务器的一些变动

状态码

  • 状态码类别

  • 1xx 信息状态码,服务器收到请求,需要客户端继续操作
    2xx 操作成功
    3xx 重定向状态码,需要进一步的操作
    4xx 客户端错误,请求语法错误等
    5xx 服务端错误,服务器处理过程中出错了

  • 常见状态码
  • 一些常见HTTP状态码为:
    200 – 服务器成功返回网页
    404 – 请求的网页不存在
    503 – 服务不可用

    常见HTTP状态码大全

    1xx(临时响应)
    表示临时响应并需要请求者继续执行操作的状态代码。

    代码 说明
    http状态码 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
    http状态码 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

    2xx (成功)
    表示成功处理了请求的状态代码。
    代码 说明
    http状态码 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
    http状态码 201 (已创建) 请求成功并且服务器创建了新的资源。
    http状态码 202 (已接受) 服务器已接受请求,但尚未处理。
    http状态码 203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
    http状态码 204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
    http状态码 205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
    http状态码 206 (部分内容) 服务器成功处理了部分 GET 请求。

    3xx (重定向)
    表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

    代码 说明
    http状态码 300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
    http状态码 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    http状态码 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    http状态码 303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
    http状态码 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
    http状态码 305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
    http状态码 307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

    4xx(请求错误)
    这些状态代码表示请求可能出错,妨碍了服务器的处理。

    代码 说明
    http状态码 400 (错误请求) 服务器不理解请求的语法。
    http状态码 401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    http状态码 403 (禁止) 服务器拒绝请求。
    http状态码 404 (未找到) 服务器找不到请求的网页。
    http状态码 405 (方法禁用) 禁用请求中指定的方法。
    http状态码 406 (不接受) 无法使用请求的内容特性响应请求的网页。
    http状态码 407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
    http状态码 408 (请求超时) 服务器等候请求时发生超时。
    http状态码 409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
    http状态码 410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
    http状态码 411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
    http状态码 412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
    http状态码 413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
    http状态码 414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
    http状态码 415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
    http状态码 416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
    http状态码 417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。

    5xx(服务器错误)
    这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

    代码 说明
    http状态码 500 (服务器内部错误) 服务器遇到错误,无法完成请求。
    http状态码 501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
    http状态码 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
    http状态码 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
    http状态码 504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    http状态码 505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

Connection 使用keep-alive特性
Content-Encoding 使用gzip方式对资源压缩
Content-Length: 主体的长度
Content-type MIME类型为html类型,字符集是 UTF-8
Date 响应的日期
Server 使用的WEB服务器
Last-Modified:最后一次修改的时间
Server:服务器程序软件名称和版本

5浏览器对页面进行渲染

dns解析
发起tcp三次握手
建立tcp连接后发起http请求
服务器响应http请求,返回html资源
浏览器解析html代码,请求html中
的其他静态资源
浏览器渲染页面,呈现画面

web基础知识,的更多相关文章

  1. Web基础知识和技术

    WEB是一个外延广泛的概念,不单单指网站,乌徒帮专注拥有WEB界面的网站开发,帮助初学者或已经进入开发的朋友们提供参考讨论平台,然而并不一定能将所有的WEB知识讲全讲透,只是能满足初涉者的建站需求,能 ...

  2. Python全栈开发之17、tornado和web基础知识

    一.web基础知识 学习web框架之前,先来看一下web基础知识,首先要明白其本质就是socket,用户对应一个socket客户端,但是如果从socket开始开发web应用程序那么效率太了,正确的做法 ...

  3. 语义web基础知识学习

    最近找了一本书,<语义web技术基础>----Pascal Hitzler等编著的.因为最近在看关于自然语言处理的一些东西,就顺带翻了一下,做一点学习笔记,方便以后查看. 本书的作者 Pa ...

  4. WEB 基础知识(一)

    1. 系统架构 1.1 B/S系统架构 1.2 C/S系统架构 1.3 对比与区别 1.3.1 概述 C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过 ...

  5. Web基础知识

    这学期学了Web技术这门课,但对这门课是做什么的.有什么用处并不了解,教材是Asp.net实用网站开发,对我这样的初学者大概是深了一点,所以决定对Web技术的背景知识做下整理. 1.Web工作原理 W ...

  6. web基础知识通信概述URI与http

    1.url是什么,有什么作用: 说白了就是我们常说的网址:正规来说就是统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址. 互联网上的每个文件都有一个 ...

  7. JavaScript大杂烩0 - WEB基础知识

    1. 协议小结:HTTP协议与TCP/IP协议 现代Web应用开发的基础是HTTP协议,那么HTTP协议与我们熟知的TCP/IP协议有什么关系呢? 这个要从网络通信模型说起,简单的说,计算机通信就像两 ...

  8. web基础知识汇总

    HTML&XML 1.JavaWeb的概述 A: 什么是Web----->就是网页或者网站 B: 什么是JavaWeb----->就是使用java语言做web C: 浏览器访问网站 ...

  9. web基础知识小记

随机推荐

  1. 中级实训Android学习记录——Toast、AlertDialog、ProgressBar

    学习记录 2020/11/22 Toast Toast Toast是一个消息提示组件 我们可以设置其显示的位置 自定义其显示的内容 对Toast的简单封装可以达到不同的目的 Toast的默认用法 To ...

  2. 【mq读书笔记】mq索引文件刷盘

    索引文件的刷盘并不是采取定时刷盘机制,而是每更新一次索引文件就会将上一次的改动刷写到磁盘. 同步刷盘: GroupCommitRequest将被提交到GroupCommitService线程,Grou ...

  3. VC与VB

    VB调用VC dll的返回方式 第一种类型:数值传递注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中,int类型的变量是32位的,在VB中要用long型 ...

  4. java集合类(新手也能掌握)

    文章目录 1.集合概述 (1)集合: (2)集合分类: 2.Collection接口 3.List接口 (1)List接口简介 (2)ArrayList集合 (3)LinkedList集合 (4)It ...

  5. 因为一个Docker问题,我顺手整理从安装到常用命令操作手册

    今天,自己写了一部分业务代码,是常规代码的另外一种方式,不能在公司的服务器上测试,就自己在PC端搭建了一套和公司集群一样的模板,因为公司的业务模块的测试有单独的服务器(这一块还是我很稀罕的),但是,第 ...

  6. PyQt转换显示Python-OpenCV图像实现图形化界面的视频播放

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在Python-OpenCV中显示图像时调用的是一个单独的窗口,有时我们需要将这些图像显示在PyQt的图形化界面上,这样就可以将整个图像显示与PyQ ...

  7. 第10.11节 Python模块和包小结

    Python的模块就是一个独立的Python文件,Python的包是一些功能相关的Python文件放到一个目录下进行统一管理的文件管理结构,包本质上是模块,加载包就是加载包下特定的模块文件__init ...

  8. Aap.Net中的Action和Func委托

    前言 最近在阅读某开源框架源码的时候,发现作者在其中运用了很多Action委托和Func委托,虽然我之前在项目中也有一些对委托的实操,但还是免不了长时间的不用,当初消化的一些委托基础都遗忘了...索性 ...

  9. 剑指offer二刷——数组专题——斐波那契数列

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1). n<=39 我的想法 斐波那契数列定义:F(0)=0,F(1)=1, ...

  10. 题解-洛谷P6788 「EZEC-3」四月樱花

    题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...