HTTP、HTTPS、TCP、UDP 协议基础知识
这里写目录标题
- 1. HTTP和HTTPS(应用层)
- 1.1 HTTP
- HTTP 是什么
- HTTP 优缺点
- 如何解决 HTTP 无状态性的问题
- 1.2 HTTPS
- HTTPS的工作流程
- 1.3 HTTP 与 HTTPS 区别
- 2. TCP 与 UDP(传输层)
- 2.1 TCP
- TCP是什么
- TCP 特点、三次握手、四次挥手
- 2.2 UPD
- UDP 是什么
- UDP特点
- 2.3 TCP和UDP区别
1. HTTP和HTTPS(应用层)
HTTP和HTTPS都位于计算机网络模型中的应用层。
1.1 HTTP
HTTP 是什么
HTTP是超文本传输协议,该协议允许传输任意类型的数据对象,一般是HTML页面与页面内的图片、音频、视频、文件等内容。
传输一般在客户端与服务器端间进行,请求资源的叫客户端,发送资源的叫服务器端,客户端请求服务器时只需输入请求方法与路径。
HTTP 是无状态协议,也就是说该协议传了就是传了,不会留下任何东西,服务器处理完请求就断开通信,客户端的每次请求都需开启新得连接。
HTTP 是基于 TCP/IP 协议的应用层协议,不涉及数据包传输,规定了客户端和服务器端之间的通信方式,默认使用 80 端口。
HTTP 优缺点
优点:
请求只需输入请求路径,简单快速。
传输任意类型数据,灵活性高。
服务器处理完请求并接收到客户端应答即断开连接,节约传输时间。
缺点:
客户端每次请求都新开一个连接,比较麻烦。
HTTP1.0时,由于HTTP的无状态性,服务器无法获知当前请求是谁发的。
如何解决 HTTP 无状态性的问题
HTTP1.1时新增了cookie,当客户端向服务端发送请求时,服务器收到请求并创建一个 Session 对象,同时生成一个sessionId,并通过响应头的 Set-Cookie:JSESSIONID=XXX 命令,向客户端发送要求设置 Cookie 的响应;客户端收到响应后,在本机客户端设置了一个 JSESSIONID=XXX 的 Cookie 信息,Cookie信息会保存在浏览器中。接下来客户端每次向同一个网站发送请求时,请求头都会带上该 Cookie 信息,然后服务器通过读取请求头中的 Cookie 信息,获取名称为 JSESSIONID 的值,得到此次请求的 sessionId。这样浏览器才具有了记忆能力。
还有一种方式是使用 JWT 机制
JWT 的 Cookie 信息存储在客户端,而不是服务端内存中。也就是说,JWT 直接本地进行验证就可以,验证完毕后,这个 Token 就会在 Session 中随请求一起发送到服务器,通过这种方式,可以节省服务器资源,并且 token 可以进行多次验证。
Token和session的区别
跨域问题:token没有跨域问题,session有跨域问题;
容易扩展:token不储存于服务器中,适用于服务器的分布式应用;
1.2 HTTPS
因为 HTTP 传输数据都是明文传输,数据容易被第三方监听和窃取,所以 HTTPS 使用 TLS/SSL 先去加密数据,再进行传输,HTTPS 并不是一个新的应用层协议,其就是由 HTTP + TLS/SSL 协议组合而成。
HTTPS的工作流程
- 用户在浏览器发起HTTPS请求,默认使用服务端的443端口进行连接;
HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Private保留在服务端不公开; - 服务端收到请求,返回配置好的包含公钥Pub的证书给客户端;
- 客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,如果不通过,则显示HTTPS警告信息,如果通过则继续;
- 客户端生成一个用于对称加密的随机Key,并用证书内的公钥Pub进行加密,发送给服务端;
- 服务端收到随机Key的密文,使用与公钥Pub配对的私钥Private进行解密,得到客户端真正想发送的随机Key;
- 服务端使用客户端发送过来的随机Key对要传输的HTTP数据进行对称加密,将密文返回客户端;
- 客户端使用随机Key对称解密密文,得到HTTP数据明文;
- 后续HTTPS请求都使用交换好的随机Key进行数据的对称加解密。
https加密过程参考(对称加密,非对称加密):https://blog.csdn.net/yzx3105/article/details/127778773
1.3 HTTP 与 HTTPS 区别
- HTTP 在地址栏上的协议是以 http:// 开头,而 HTTPS 在地址栏上的协议是以 https:// 开头。
- HTTP 是明文传输,不安全。而 HTTPS 是安全的协议。
- HTTP 的默认端口是 80,而 HTTPS 的默认端口是 443。
2. TCP 与 UDP(传输层)
TCP 和 UDP 都位于计算机网络模型中的传输层,它们负责传输应用层产生的数据。
2.1 TCP
TCP是什么
TCP 是一个工作在传输层的可靠数据传输的服务,它能确保接收的网络包是无损坏、无间隔、非冗余和按序的数据。
通过三次握手来建立 TCP 连接,三次握手就是用来启动和确认 TCP 连接的过程。一旦连接建立后,就可以发送数据了,当数据传输完成后,会通过四次挥手断开连接。
TCP 特点、三次握手、四次挥手
https://blog.csdn.net/yzx3105/article/details/127770121
2.2 UPD
UDP 是什么
用户数据报协议。它不需要所谓的握手操作,从而加快了通信速度,允许网络上的其他主机在接收方同意通信之前进行数据传输。
UDP特点
- UDP是无连接的,即通信时不需要创建连接(发送数据结束时也没有连接可以释放)所以减小了开销和发送数据前的时延;
- UDP采用最大努力交付,不保证可靠交付,因此主机不需要维护复杂的连接状态;
- UDP是面向报文的,只在应用层交下来的报文前增加了首部后就向下交付IP层;
- UDP是无阻塞控制的,即使网络中存在阻塞,也不会影响发送端的发送频率
- UDP支持一对一、一对多、多对一、多对多的交互通信
2.3 TCP和UDP区别
来源:https://www.kuangstudy.com/bbs/1334677642770714625
HTTP、HTTPS、TCP、UDP 协议基础知识相关推荐
- 网络编程—网络基础概览、socket,TCP/UDP协议
网络基础概览 socket概览 socket模块-TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网 ...
- IOS Socket 01-网络协议基础知识
IOS Socket 01-网络协议基础知识 1. 网络参考模型 OSI参考模型 TCP/IP参考模型 2. 七层简述 ...
- TCP/IP协议基础(转)
转自 http://www.chinaunix.net 作者:Bernardus160 发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...
- 最全的TCP/UDP 协议知识点整理
关于计算机网络的基础知识,我前面写的两篇文章是入门文章,可以帮你构建一个计算机网络的基础架构,有了这个基础架构,后面的学习会很简单.下面是两篇文章的连接~~ 计算机网络体系结构与参考模型(1) 计算机 ...
- HTTP协议基础知识
简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅保 ...
- QQ--基于TCP/UDP协议的通讯原理
QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服 务器,只不过不是常用的那些,那个服务器是腾讯自行开发的! 一 ...
- CANopen协议基础知识
CANopen协议基础知识 资料: DS301协议中文文档:https://winshton.gitbooks.io/canopen-ds301-cn/content/chapter5.html 30 ...
- 利用TCP/UDP 协议制作一个飞秋聊天工具
视频操作演示: 利用TCP/UDP 协议制作一个飞秋聊天工具演示视频 int udp_broadcast(char const*argv[]) {//1.创建对象udp_socket = socket ...
- 网络层协议与应用及传输层TCP/UDP协议
网络层协议与应用及传输层TCP/UDP协议 目录 一.IP数据包格式 二.ICMP协议 三.ARP协议及ARP工作原理 四.TCP协议及常用端口号 五.UDP协议及常用端口号 一.IP数据包格式 网络 ...
最新文章
- 看看我最关心的动态库中到底有多少函数 - gdiplus.dll
- clientdataset 遍历字段_TClientDataSet[5]: 读取数据
- bootstrap --- 在 modal中的 datetimepicker 关闭 ,会造成 modal也会被关闭.
- 利用php-console和Chrome开发者工具实现PHP应用的printf
- 鬲融:从唐山走出的国际杰出青年学者
- android led灯框架_LED面板灯的特点:应用领域、产品结构与产品分类
- 搭建配置cacti,采集信息监控
- 用友A8 mysql配置文件_用友nc 读取配置文件方法
- 浅析数据中心机房工程
- bootstrap布局_如何使用LayoutIt构建HTML Bootstrap布局!
- 如何用Java和Kotlin实现高性能桌面条形码扫描
- Win10系统如何在Word中添加新字体
- 光模块SFP基础接口标准入门
- linux shell中各种分号和括号,Linux Shell中各种分号和括号#的用法总结
- 2018年兰博基尼突破5000台销量大关
- 基础测绘1:10000成果检验需注意的问题
- MBA-day13数学-年龄问题-应用题
- hbuilder 打包 php,HBuilder 打包流程
- 预处理--python实现用随机森林评估特征的重要性
- shell for 循环