一  软件开发架构

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. .NET 大数据实时计算--学习笔记

    摘要 纯 .Net 自研大数据实时计算平台,在中通快递服务数百亿包裹,处理数据万亿计!将分享大数据如何落地以及设计思路,技术重难点. 目录 背景介绍 计算平台架构 项目实战 背景介绍 计算平台架构 分 ...

  2. Python树与树算法

    Python树与树算法 树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>=1)个有限节点组成一个具 ...

  3. 【Unity3D】动态路障导航

    1 NavMeshObstacle组件 ​ 导航系统.分离路面导航中路障都是静态的,程序运行过程中烘焙的导航网格一直不变,本文将进一步讲解动态路障场景下导航的实现. ​ 对于动态路障游戏对象,除了要设 ...

  4. scrcpy-Android投屏神器

    介绍 scrcpy 是免费开源的投屏软件,支持将安卓手机屏幕投放在 Windows.macOS.GNU/Linux 上,并可直接借助鼠标在投屏窗口中进行交互和录制. 下载scrcpy 解压. http ...

  5. Python之凯撒加密

    凯撒加密介绍 在密码学中,恺撒密码是一种最简单且最广为人知的加密技术. 它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文. 例,当偏移量是3的时 ...

  6. Java集合框架学习(十) LinkedHashMap详解

    LinkedHashMap介绍 1.Key和Value都允许null: 2.维护key的插入顺序: 3.非线程安全: 4.Key重复会覆盖.Value允许重复. 类定义 public class Li ...

  7. Clock题解

    Clock 题意:给一些时间,24小时制,给一个初始出发时间,问在钟表上最少转多少度能把所有给的时间都经历一遍. 思路:分四种情况模拟. 注意: 求的是度数,所以最后要乘6转换. 3:00,转到15: ...

  8. SpringBoot整合Groovy脚本,实现动态编程

    Groovy简介 Groovy 是增强 Java 平台的唯一的脚本语言.它提供了类似于 Java 的语法,内置映射(Map).列表(List).方法.类.闭包(closure)以及生成器.脚本语言不会 ...

  9. 程序员应具备的PS基本技能(一):PS2017基本框架使用

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  10. portainer docker可视化工具

    下载可视化工具 docker pull portainer/portainer 启动portainer --restart=always 只要挂掉了 就自动重启 docker run -d -p 80 ...