计算机网络
HTTP协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。特点:
(1) 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
(2) 灵活:HTTP允许传输任意类型的数据对象,传输的类型由Content-Type加以标记。
(3) 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
(4) 无状态:HTTP协议是无状态协议。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。而当服务器不需要先前信息时它的应答就较快。
(5) 支持B/S及C/S模式。
HTTP 协议包括哪些请求?
GET:对服务器资源的简单请求
POST:用于发送包含用户提交数据的请求
HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
PUT:传说中请求文档的一个版本
DELETE:发出一个删除指定文档的请求
TRACE:发送一个请求副本,以跟踪其处理进程
OPTIONS:返回所有可用的方法,检查服务器支持哪些方法
CONNECT:用于ssl隧道的基于代理的请求
HTTP中Get与POST的区别
1. GET请求在URL中传送的参数是有长度限制的,而POST没有。
2. GET比POST更不安全,GET参数直接暴露在URL上,所以不能用来传递敏感信息。
3. GET参数通过URL传递,POST放在Request body中。
4. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
5. GET请求只能进行url编码,而POST支持多种编码方式。
6. GET请求会被浏览器主动cache,而POST不会,除非手动设置。
7. GET产生的URL地址可以被Bookmark,而POST不可以。
8. GET在浏览器回退时是无害的,而POST会再次提交请求。
HTTP长连接、短连接
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
HTTP短连接
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
HTTP长连接
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTPS和HTTP的区别
https协议需要到CA申请证书,一般免费证书很少,需要交费。
http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协 议。
http和https使用的是完全不同的连接方式,用的端口也不一样,http默认使用80端口,https默认使用443端口。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
https是如何保证数据传输的安全
https实际就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。
SSL/TLS协议作用:
(1) 认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2) 加密数据以防止数据中途被窃取;
(3) 维护数据的完整性,确保数据在传输过程中不被改变。
Cookies和session区别
(1) cookie数据存放在客户的浏览器上,session数据放在服务器上。
(2) cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。考虑到安全应当使用session。
(3) session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE。
(4) 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
建议: 将登陆信息等重要信息存放为SESSION , 其他信息如果需要保留,可以放在COOKIE中
运输层主要使用以下两种协议
传输控制协议 TCP(Transmisson Control Protocol)--提供面向连接的,可靠的数据传输服务。
用户数据协议 UDP(User Datagram Protocol)--提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。
TCP和UDP 协议
TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。TCP在传送数据之前必须通过三次握手建立连接,数据传送结束后要释放连接。TCP提供超时重传,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 TCP不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的运输服务,这样难免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。
UDP是用户数据报协议,是一个简单的面向无连接的协议。UDP不提供可靠的服务。在数据传输前不用建立连接,因此传输速度很快。UDP主要用于即时通信,如QQ语音、 QQ 视频 、直播等对数据可靠性要求不是很高的场合。
TCP和UDP主要区别
- TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
- TCP提供可靠的服务(数据传输),UDP无法保证
- TCP面向字节流,UDP面向报文
- TCP数据传输慢,UDP数据传输快
TCP 三次握手
1. 在吗 2. 你好在的 3.好的,知道了 (开始聊天。。。)
第一次:客户端向服务端发送连接请求报文,该报文首部中的SYN=1, ACK=0, seq=i(随机选取一个序列号作为初始序列号)。客户端进入SYN_SEND同步已发送状态。
第二次:服务端收到客户端的连接请求,若同意连接则发送确认报文。确认报文中SYN=1, ACK=1, ack=i+1,seq=j(服务端的初始序列号)。服务器进入SYN_RCVD同步收到状态。
第三次:客户端收到服务端的确认报文之后,会向服务器发送确认报文,告诉服务器收到了它的确认报文并准备建立连接。确认报文首部中SYN=0、ACK=1、ack=j+1、seq=i+1。服务端收到客户端确认报文,此时服务端进入ESTABLISHED已建立连接状态。
TCP四次挥手
1. 下次再聊啊,我要挂电话了 2. 好的 3. 那我挂电话了 4. 好的,再见
- 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
- 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
- 服务器-关闭与客户端的连接,发送一个FIN给客户端
- 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1
为什么要4次挥手?
确保数据能够完整传输。当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。
TCP如何保证可靠传输?
- 三次握手。
- 将数据截断为合理的长度。应用数据被分割成 TCP 认为最适合发送的数据块(按字节编号,合理分片)
- 超时重发。当 TCP 发出一个段后,它启动一个定时器,如果不能及时收到一个确认就重发
- 对于收到的请求,给出确认响应
- 校验出包有错,丢弃报文段,不给出响应
- 对失序数据进行重新排序,然后才交给应用层
- 对于重复数据 , 能够丢弃重复数据
- 流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
- 拥塞控制。当网络拥塞时,减少数据的发送。
浏览器打开一个网页,整个过程会使用哪些协议
总体来说分为以下几个过程:
- DNS解析
- TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
请简单说一下你了解的端口及对应的服务
---------------------
作者:Java程序员-张凯
来源:CSDN
原文:https://blog.csdn.net/qq_41701956/article/details/81052077
版权声明:本文为博主原创文章,转载请附上博文链接!
---------------------
作者:小马和小金
来源:CSDN
原文:https://blog.csdn.net/qq_36312376/article/details/82349771
版权声明:本文为博主原创文章,转载请附上博文链接!
---------------------
作者:zhouwei1818
来源:CSDN
原文:https://blog.csdn.net/zhouwei1818/article/details/80180872
版权声明:本文为博主原创文章,转载请附上博文链接!
---------------------
作者:Soleil-luo
来源:CSDN
原文:https://blog.csdn.net/peipeiluo/article/details/79780164
版权声明:本文为博主原创文章,转载请附上博文链接!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix