一  软件开发架构

CS  客户端   服务端
BS 浏览器 服务端
ps: BS本质也是CS

二  浏览器窗口输入网址回车发生了几件事

1.浏览器朝服务端发送请求
2.服务端接受请求
3.服务端返回相应的响应
4.浏览器接受响应,根据特定的规则渲染页面展示给用户看

浏览器充当很多服务端的客户端
百度 腾讯视频

如何做到浏览器能够跟多个不同的服务端之间进行数据交互
1、浏览器能够自动识别不同服务端做不同的处理
2、制定一个统一的标准 如果想要让你写的服务端能够跟客户端之间做正常的数据交互
那么就必须要遵循一些规则

三 HTTP协议

1、定义:

超文本传输协议,用来规定服务端和浏览器之间的数据交互的格式
该协议可以不遵循,你写的服务端就不能被浏览器正常访问,只有自己写客户端(APP)
(传输层之上的协议,专门用于浏览器和服务器之间的通信)

HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。它可以使浏览器更加高效。

HTTP 协议是以明文方式发送信息的,如果黑客截取了 Web 浏览器和服务器之间的传输报文,就可以直接获得其中的信息。

HTTP 原理:

① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,一般 TCP 连接的端口号是80。

建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URI)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容。

② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。

2、与HTTPS的区别

HTTPS:是以安全为目标的 HTTP 通道,是 HTTP 的安全版。HTTPS 的安全基础是 SSL。

SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

SSL 协议可分为两层:SSL 记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL 握手协议(SSL Handshake Protocol),它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

3、四大特性

1.基于请求响应
2.基于TCP/IP作用于应用层之上的协议
3.无状态
不保存用户的信息
(一个来了一千次,你记不住,每次当他如初见)
由于HTTP协议是无状态的,所以后续出现了一些专门用来记录用户状态的技术
cookie、session、token
4.无/短链接
请求来一次我响应一次,之后两个就没有任何链接和关系
长链接:双方建立连接之后默认不断开,websocket(后面讲项目的时候会讲)

4、浏览器和服务端的通信

服务端:

import socket

server = socket.socket()
server.bind(('127.0.0.1', 8080))
server.listen(5) '''
b'GET / HTTP/1.1\r\n 请求首行
Host: 127.0.0.1:8080\r\n 请求头
Connection: keep-alive\r\n
sec-ch-ua: "Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"\r\n
sec-ch-ua-mobile: ?0\r\nsec-ch-ua-platform: "Windows"\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n
Sec-Fetch-Site: none\r\n
Sec-Fetch-Mode: navigate\r\n
Sec-Fetch-User: ?1\r\n
Sec-Fetch-Dest: document\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
\r\n'
请求体
''' while True:
conn, addr = server.accept()
data = conn.recv(1024)
print(data) # 二进制数据,Bytes类型
# 构造出符合HTTP协议格式的数据,无需掌握
conn.send(b'HTTP/1.1 200 OK\r\n\r\n')
# conn.send(b'<h1>hello world</h1>') # 读取文件内容再返回
with open('a.txt', 'rb') as f:
conn.send(f.read())
conn.close()

5、请求方式

1.get请求
朝服务端要数据
eg:输入网址获取对应的内容 2.post请求
朝服务端提交数据
eg:用户登录,输入用户名和密码之后,提交到服务端后端做身份验证

6、请求数据格式

请求首行(标识HTTP协议版本,当前请求方式)
请求头(一大堆k,v键值对)
(\r\n)
请求体(并不是所有的请求方式都有,get没有,post有,存放的post请求提交的敏感数据)

7、响应数据格式

响应首行(标识HTTP协议版本,响应状态码)
响应头(一大堆k,v键值对) 响应体(返回给浏览器展示给用户看的数据)

8、响应状态码

用一串简单的数字来表示一些复杂的状态或者描述性信息  404:请求资源不存在
1XX:服务端已经成功接受到了你的数据正在处理,你可以继续提交额外的数据
2XX:服务端成功响应了你想要的数据(200 ok请求成功)
3XX:重定向(当你在访问一个需要登陆之后才能看得页面,你会发现会自动跳转都登陆页面)
4XX:请求错误
404:请求资源不存在
405:请求不合法或者不符合访问资源的条件
5XX:服务端内部错误(500)

四 、URL:统一资源定位符(大白话 服务端存储的位置)

ip+端口+URL

计算机网络(http协议)的更多相关文章

  1. 计算机网络——DNS协议的学习与实现

    1. 主要内容 不说废话,直接进入正题.先说说本文本文的主要内容,好让你决定是否看下去: 介绍DNS是干什么的: 介绍DNS是如何工作的: 介绍DNS请求与响应的消息格式: 编程实现一个简单的DNS服 ...

  2. 计算机网络--TCP协议深入理解

    在近期学习计算机网络的过程中,由于知识点过于零散,琐碎,从而学习起来痛苦不堪,此贴只是总结了基于传输层的TCP协议相关的知识细节,并加入一点自己的理解,并无创新,若有理解不当之处,敬请提出,感谢! 首 ...

  3. 计算机网络-DHCP协议抓包分析总结

    前置问题:什么是(网络)协议? 网络协议为计算机网络中进行数据交换而建立的规则.标准或约定的集合. 而且: 一个网络协议至少包括三要素: 语法:用来规定信息格式;数据及控制信息的格式.编码及信号电平等 ...

  4. 计算机网络--HTTP协议

    TCP/IP协议 互联网构建的初衷是信息的共享.在信息的传递过程中,计算机不可避免的需要产生交流.就像我们与别人交谈需要懂得对方的语言才能明白对方表达的意思一样,计算机的交流也需要一个约束了,称之为协 ...

  5. 第1章 计算机网络和协议(3)_TCP/IP协议

    3. TCP/IP协议 3.1 TCP/IP协议分层 3.2 TCP/IP通信过程 (1)应用层:浏览器和Web服务器是两个对等的实现,它们之间使用http协议进行通信. (2)传输层:网页传输之前, ...

  6. 第1章 计算机网络和协议(2)_OSI参考模型

    2. OSI参考模型 2.1 OSI参考模型详解 (1)参考模型的优点 ①将网络的通信过程划分为小一些.功能简单的部件,有助于各个部件开发.设计和故障排除. ②通过网络组件的标准化,允许多个供应商进行 ...

  7. 计算机网络——RIP协议:距离向量算法

    路由信息协议(RIP)是内部网关协议(IGP)中使用最广泛的一种协议,它是一种分布式.基于距离向量的路由选择协议,其特点是协议简单.它要求路由器周期性地向外发送路由刷新报文.路由刷新报文主要内容是由若 ...

  8. 移动端IM系统的协议选型:UDP还是TCP?

    1.前言 对于有过网络编程经验的开发者来说,使用何种数据传输层协议来实现数据的通信,是个非常基础的问题,它涉及到你的第一行代码该如何编写. 从PC时代的IM开始,IM开发者就在为数据传输协议的选型争论 ...

  9. 理论经典:TCP协议的3次握手与4次挥手过程详解

    1.前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一 ...

  10. TCP协议的3次握手与4次挥手过程详解

    1.前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一 ...

随机推荐

  1. Mac上SnailSvn checkout报错

  2. 详解 & 0xff 的意义及作用

    首先我们要都知道, &表示按位与,只有两个位同时为1,才能得到1, 0x代表16进制数,0xff表示的数二进制1111 1111 占一个字节.和其进行&操作的数,最低8位,不会发生变化 ...

  3. Embedding 模型部署及效果评测

    写在前面 最近大模型发展迅速,与之对应的向量化需求也被带动起来了,由此社区也衍生出很多模型,本文选几款,简单做下评测. 前置概念 为方便读者,先简单介绍几个概念. 概念1:Vector Embeddi ...

  4. python 中记录dmesg信息并进行分析的方法(@)

    在Python中记录系统的dmesg 信息,并进行分析的方法简述: 基本命令: dmesg -C 清除之前的dmesg  信息: dmesg -T > testExample.msg      ...

  5. Javascript中的var变量声明作用域问题

    先看一下这两段代码的执行结果 var name2 = 'What!'; function a() { if (typeof name2 === 'undefined') { console.log(' ...

  6. AIGC程序员效能提升之道

    得益于IT产业近几年的繁荣,老杨所在公司的业务也出奇的兴隆,每天干不完的工作背后,也意味着健康的消耗和体重的不断增加. 曾记否,刚毕业的老杨体重刚刚堪堪破百,同事们经常调侃他说是一阵风就能吹走,经过了 ...

  7. Kotlin 协程五 —— 在Android 中使用 Kotlin 协程

    目录 一.Android MVVM 结构 二.添加依赖 三.在后台线程中执行 3.1 协程解决了什么问题 3.2 保证主线程安全 3.3 withContext 的性能 四.结构化并发 4.1 追踪协 ...

  8. 【API Management】使用 APIM Inbound Policy 来修改Content‐Type Header的值

    问题描述 在使用APIM提供API服务管理的场景中,遇见了客户端请求时候发送的请求Header中的Content-Type不满足后台服务器的要求,但是在客户端要求客户修改代码难度较高. 所以面对这样的 ...

  9. 如何使用 perf 分析 splice 中 pipe 的容量变化

    如何使用 perf 分析 splice 中 pipe 的容量变化 这个文章为了填上一篇文章的坑的,跟踪内核函数本来是准备使用 ebpf 的,但是涉及到了低内核版本,只能使用 kprobe 了. 恰好, ...

  10. 一文读懂图数据库 Nebula Graph 访问控制实现原理

    摘要:数据库权限管理对大家都很熟悉,然而怎么做好数据库权限管理呢?在本文中将详细介绍 Nebula Graph 的用户管理和权限管理. 本文首发 Nebula Graph 博客:https://neb ...