这里写目录标题

  • 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的工作流程

  1. 用户在浏览器发起HTTPS请求,默认使用服务端的443端口进行连接;
    HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Private保留在服务端不公开;
  2. 服务端收到请求,返回配置好的包含公钥Pub的证书给客户端;
  3. 客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,如果不通过,则显示HTTPS警告信息,如果通过则继续;
  4. 客户端生成一个用于对称加密的随机Key,并用证书内的公钥Pub进行加密,发送给服务端;
  5. 服务端收到随机Key的密文,使用与公钥Pub配对的私钥Private进行解密,得到客户端真正想发送的随机Key;
  6. 服务端使用客户端发送过来的随机Key对要传输的HTTP数据进行对称加密,将密文返回客户端;
  7. 客户端使用随机Key对称解密密文,得到HTTP数据明文;
  8. 后续HTTPS请求都使用交换好的随机Key进行数据的对称加解密。

https加密过程参考(对称加密,非对称加密):https://blog.csdn.net/yzx3105/article/details/127778773

1.3 HTTP 与 HTTPS 区别

  1. HTTP 在地址栏上的协议是以 http:// 开头,而 HTTPS 在地址栏上的协议是以 https:// 开头。
  2. HTTP 是明文传输,不安全。而 HTTPS 是安全的协议。
  3. 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特点

  1. UDP是无连接的,即通信时不需要创建连接(发送数据结束时也没有连接可以释放)所以减小了开销和发送数据前的时延;
  2. UDP采用最大努力交付,不保证可靠交付,因此主机不需要维护复杂的连接状态;
  3. UDP是面向报文的,只在应用层交下来的报文前增加了首部后就向下交付IP层;
  4. UDP是无阻塞控制的,即使网络中存在阻塞,也不会影响发送端的发送频率
  5. UDP支持一对一、一对多、多对一、多对多的交互通信

2.3 TCP和UDP区别

来源:https://www.kuangstudy.com/bbs/1334677642770714625

HTTP、HTTPS、TCP、UDP 协议基础知识相关推荐

  1. 网络编程—网络基础概览、socket,TCP/UDP协议

    网络基础概览 socket概览 socket模块-TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网 ...

  2. IOS Socket 01-网络协议基础知识

    IOS Socket 01-网络协议基础知识 1. 网络参考模型 OSI参考模型                                          TCP/IP参考模型 2. 七层简述 ...

  3. TCP/IP协议基础(转)

    转自 http://www.chinaunix.net 作者:Bernardus160  发表于:2003-12-03 17:33:15 TCP/IP协议基础 -------------------- ...

  4. 最全的TCP/UDP 协议知识点整理

    关于计算机网络的基础知识,我前面写的两篇文章是入门文章,可以帮你构建一个计算机网络的基础架构,有了这个基础架构,后面的学习会很简单.下面是两篇文章的连接~~ 计算机网络体系结构与参考模型(1) 计算机 ...

  5. HTTP协议基础知识

    简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅保 ...

  6. QQ--基于TCP/UDP协议的通讯原理

    QQ是一个基于TCP/UDP协议的通讯软件  发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服 务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!   一 ...

  7. CANopen协议基础知识

    CANopen协议基础知识 资料: DS301协议中文文档:https://winshton.gitbooks.io/canopen-ds301-cn/content/chapter5.html 30 ...

  8. 利用TCP/UDP 协议制作一个飞秋聊天工具

    视频操作演示: 利用TCP/UDP 协议制作一个飞秋聊天工具演示视频 int udp_broadcast(char const*argv[]) {//1.创建对象udp_socket = socket ...

  9. 网络层协议与应用及传输层TCP/UDP协议

    网络层协议与应用及传输层TCP/UDP协议 目录 一.IP数据包格式 二.ICMP协议 三.ARP协议及ARP工作原理 四.TCP协议及常用端口号 五.UDP协议及常用端口号 一.IP数据包格式 网络 ...

最新文章

  1. 看看我最关心的动态库中到底有多少函数 - gdiplus.dll
  2. clientdataset 遍历字段_TClientDataSet[5]: 读取数据
  3. bootstrap --- 在 modal中的 datetimepicker 关闭 ,会造成 modal也会被关闭.
  4. 利用php-console和Chrome开发者工具实现PHP应用的printf
  5. 鬲融:从唐山走出的国际杰出青年学者
  6. android led灯框架_LED面板灯的特点:应用领域、产品结构与产品分类
  7. 搭建配置cacti,采集信息监控
  8. 用友A8 mysql配置文件_用友nc 读取配置文件方法
  9. 浅析数据中心机房工程
  10. bootstrap布局_如何使用LayoutIt构建HTML Bootstrap布局!
  11. 如何用Java和Kotlin实现高性能桌面条形码扫描
  12. Win10系统如何在Word中添加新字体
  13. 光模块SFP基础接口标准入门
  14. linux shell中各种分号和括号,Linux Shell中各种分号和括号#的用法总结
  15. 2018年兰博基尼突破5000台销量大关
  16. 基础测绘1:10000成果检验需注意的问题
  17. MBA-day13数学-年龄问题-应用题
  18. hbuilder 打包 php,HBuilder 打包流程
  19. 预处理--python实现用随机森林评估特征的重要性
  20. shell for 循环

热门文章

  1. 智能外呼系统到底有多智能
  2. Python 国务院政策爬虫(附完整代码)+自动更新+写入数据库
  3. 网易杭研院汪源:网易云大量使用人工智能技术
  4. 汇编指令lea 和 mov 区别
  5. Backlight二三事(1)——pwm频率适配
  6. PHP语法基础3.1
  7. Android动画弹窗
  8. 各编程语言 + aardio 相互调用示例
  9. Python+Django基于python摄影展示个人相册系统#毕业设计(源码+系统+mysql数据库+Lw文档)
  10. 复利青年编程记:又要从零开始一个领域